{
  "schema_version": 1,
  "version": "1.2.0",
  "published_at": "2026-09-25",
  "status": "limited-beta",
  "resource_bounds": {
    "max_file_bytes": 2097152,
    "max_execution_candidates_per_language": 512,
    "max_expression_bytes": 1024,
    "max_expression_nesting": 16,
    "max_database_string_leaves": 1024,
    "max_signed_indicators": 1000,
    "max_signed_bundle_bytes": 1048576
  },
  "coverage": "Eleven original bounded structural heuristics, executable PHP upload-surface checks, authenticated reference comparisons and optional operator-configured signed exact-hash indicator delivery. No representative maintained malware corpus or production publisher is bundled. Real-world detection effectiveness remains unevaluated.",
  "confidence_criteria": {
    "confirmed": "Reserved for an exact SHA-256 match to an operator-trusted signed indicator. Trust depends on its publisher/provenance; no such corpus is bundled.",
    "strong": "Multiple direct structural observations with a narrow interpretation; not infection confirmation.",
    "suspicious": "A risky combination warrants review; legitimate uses and false positives remain possible.",
    "informational": "A factual difference, exposure, or coverage condition without infection evidence."
  },
  "rules": [
    {
      "id": "php.request-execution",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify direct request superglobal data inside a code/command execution call",
      "validation": "Synthetic development fixtures, including ordinary encoded strings and commented examples; representative held-out evaluation outstanding",
      "limitations": [
        "No interprocedural data flow",
        "Can flag intentional development tools",
        "Does not establish successful exploitation",
        "Indirect calls and string interpolation can evade detection",
        "At most 512 execution candidates and 1024 bytes per expression are examined; larger or deeply nested expressions are unassessed"
      ]
    },
    {
      "id": "js.browser-input-execution",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify decoded browser-controlled data directly passed to dynamic code execution",
      "validation": "Synthetic development fixtures only; independent real-world evaluation outstanding",
      "limitations": [
        "Requires directly visible browser input and decoder in the execution expression",
        "Does not model complete JavaScript grammar",
        "Template literal interpolation and indirect calls are not analyzed",
        "Intentional application code may match",
        "At most 512 execution candidates and 1024 bytes per expression are examined; larger or deeply nested expressions are unassessed"
      ]
    },
    {
      "id": "php.decoded-execution",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify a payload decoder directly inside PHP eval",
      "validation": "Non-executed synthetic positive/negative and resource-bound regression fixtures; representative held-out evaluation outstanding",
      "limitations": [
        "Can flag intentional protected or generated code; no decoded payload is executed or recursively unpacked",
        "A finding does not establish successful exploitation or authorize file deletion",
        "Resource exhaustion is reported incomplete and does not establish clean coverage"
      ]
    },
    {
      "id": "php.assigned-request-execution",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify an immediately preceding request-input assignment used by a code/command execution call",
      "validation": "Non-executed synthetic positive/negative and resource-bound regression fixtures; representative held-out evaluation outstanding",
      "limitations": [
        "Only adjacent statements are followed; no interprocedural flow or sanitizer proof is performed",
        "A finding does not establish successful exploitation or authorize file deletion",
        "Resource exhaustion is reported incomplete and does not establish clean coverage"
      ]
    },
    {
      "id": "php.request-include",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify direct request input selecting a PHP include/require source",
      "validation": "Non-executed synthetic positive/negative and resource-bound regression fixtures; representative held-out evaluation outstanding",
      "limitations": [
        "Indirect values, complex expressions and validation outside the expression are not modeled",
        "A finding does not establish successful exploitation or authorize file deletion",
        "Resource exhaustion is reported incomplete and does not establish clean coverage"
      ]
    },
    {
      "id": "php.request-callback",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify direct request input selecting call_user_func/call_user_func_array callbacks",
      "validation": "Non-executed synthetic positive/negative and resource-bound regression fixtures; representative held-out evaluation outstanding",
      "limitations": [
        "Input allowlists elsewhere are not modeled; indirect calls can evade detection",
        "A finding does not establish successful exploitation or authorize file deletion",
        "Resource exhaustion is reported incomplete and does not establish clean coverage"
      ]
    },
    {
      "id": "php.executable-write",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify request/decoded data written to a literal executable PHP filename",
      "validation": "Non-executed synthetic positive/negative and resource-bound regression fixtures; representative held-out evaluation outstanding",
      "limitations": [
        "Only visible literal PHP targets are covered; legitimate installers and development tools can match",
        "A finding does not establish successful exploitation or authorize file deletion",
        "Resource exhaustion is reported incomplete and does not establish clean coverage"
      ]
    },
    {
      "id": "js.browser-input-dom",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded lexical heuristic; no third-party signatures",
      "purpose": "Identify decoded browser input passed directly to document.write/writeln",
      "validation": "Non-executed synthetic positive/negative and resource-bound regression fixtures; representative held-out evaluation outstanding",
      "limitations": [
        "Full JavaScript semantics, indirect calls, sanitizers and DOM assignment sinks are not modeled",
        "A finding does not establish successful exploitation or authorize file deletion",
        "Resource exhaustion is reported incomplete and does not establish clean coverage"
      ]
    },
    {
      "id": "js.browser-input-timer",
      "version": "1.2.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded structural heuristic; no third-party signatures or executed samples",
      "purpose": "Identify decoded browser input used as JavaScript timer code",
      "validation": "Paired non-executed synthetic regressions; representative independent real-world evaluation remains outstanding",
      "limitations": [
        "Only directly visible relationships and adjacent statements are modeled; this is not complete language parsing or interprocedural analysis.",
        "Literal decoding is restricted to short function identifiers; suspected payloads are never executed.",
        "Intentional development tools and custom wrappers can match. This is suspicious behavior, not infection confirmation.",
        "Resource exhaustion is incomplete coverage; findings never authorize automatic removal."
      ]
    },
    {
      "id": "php.request-selected-function",
      "version": "1.2.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded structural heuristic; no third-party signatures or executed samples",
      "purpose": "Identify an adjacent request-selected function variable being called",
      "validation": "Paired non-executed synthetic regressions; representative independent real-world evaluation remains outstanding",
      "limitations": [
        "Only directly visible relationships and adjacent statements are modeled; this is not complete language parsing or interprocedural analysis.",
        "Literal decoding is restricted to short function identifiers; suspected payloads are never executed.",
        "Intentional development tools and custom wrappers can match. This is suspicious behavior, not infection confirmation.",
        "Resource exhaustion is incomplete coverage; findings never authorize automatic removal."
      ]
    },
    {
      "id": "php.literal-execution-alias",
      "version": "1.2.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original bounded structural heuristic; no third-party signatures or executed samples",
      "purpose": "Identify an adjacent literal, concatenated or safely decoded command-function alias directly receiving request input",
      "validation": "Paired non-executed synthetic regressions; representative independent real-world evaluation remains outstanding",
      "limitations": [
        "Only directly visible relationships and adjacent statements are modeled; this is not complete language parsing or interprocedural analysis.",
        "Literal decoding is restricted to short function identifiers; suspected payloads are never executed.",
        "Intentional development tools and custom wrappers can match. This is suspicious behavior, not infection confirmation.",
        "Resource exhaustion is incomplete coverage; findings never authorize automatic removal."
      ]
    },
    {
      "id": "file.executable-upload",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original read-only check bound to Scanner verified uploads path",
      "purpose": "Identify executable-extension PHP files beneath the configured uploads directory",
      "validation": "Synthetic non-executed upload/guard fixtures; hosting execution-policy validation remains site-specific",
      "limitations": [
        "An upload location does not prove that the server executes the file",
        "Backups, owner scripts and legitimate tools can match",
        "Empty files, comments and simple exit guards are excluded",
        "No automatic deletion or quarantine authority"
      ]
    },
    {
      "id": "signature.exact-sha256",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Operator-configured trusted public keys; detached Ed25519 verification over exact payload bytes",
      "purpose": "Identify exact content hashes in an operator-trusted Ed25519-signed declarative snapshot",
      "validation": "Non-executed synthetic positive/negative and resource-bound regression fixtures; representative held-out evaluation outstanding",
      "limitations": [
        "No real-world malware hashes or publisher keys are bundled; operator provenance and licensing review are required",
        "A finding does not establish successful exploitation or authorize file deletion",
        "Resource exhaustion is reported incomplete and does not establish clean coverage"
      ]
    },
    {
      "id": "integrity.core",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Authenticated WordPress.org core checksum API, only after online reference consent",
      "purpose": "Identify bytes different from a matching-version reference",
      "validation": "Altered trusted-reference fixture and repair workflow tests",
      "limitations": [
        "A mismatch can be an owner edit. Matching bytes do not prove the original release harmless.",
        "Exact matching version and locale plus explicit online-reference consent are required.",
        "Repository plugin/theme references require separately confirmed identity; premium and custom code needs an authentic supported source."
      ]
    },
    {
      "id": "integrity.core.missing",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Same authenticated WordPress.org manifest as integrity.core",
      "purpose": "Identify absent files expected by a supported matching-version core manifest",
      "validation": "Bounded missing-file discovery and subsequent matching-byte rescan synthetic tests",
      "limitations": [
        "Missing files do not establish infection",
        "Creating missing files is not an eligible repair"
      ]
    },
    {
      "id": "integrity.repository",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Authenticated public WordPress.org plugin-checksums endpoint; explicit owner-confirmed component identity",
      "purpose": "Report modified, unexpected and missing files for supported repository plugin versions",
      "validation": "Synthetic manifest parser/security tests and scanner mismatch/missing/resolution integration tests; public manifest retrieval recorded separately",
      "limitations": [
        "A slug alone does not establish repository identity.",
        "Owner edits and compromised original releases remain possible.",
        "Supported repository plugin/theme checks require an authentic exact-version reference; premium/custom sources, must-use plugins and drop-ins lack that reference.",
        "A finding does not itself authorize mutation; eligible existing-file replacements need a separate approved recovery plan."
      ]
    },
    {
      "id": "database.default-admin-role",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original read-only configuration check",
      "purpose": "Identify administrator as the default newly registered user role",
      "validation": "Bounded read-only database inspection contract; native configuration fixture test",
      "limitations": [
        "Registration can be disabled",
        "This is an exposure observation, not infection evidence",
        "No database mutation authority"
      ]
    },
    {
      "id": "database.cron-anomaly",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original read-only structural cron inspection",
      "purpose": "Identify malformed cron entries and recurring intervals shorter than 60 seconds",
      "validation": "Serialized-data and scheduled-task structural tests",
      "limitations": [
        "Plugins may intentionally schedule frequent work",
        "Hook names do not prove malicious behavior",
        "No task mutation authority"
      ]
    },
    {
      "id": "inventory.new-administrator",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Difference between untrusted observed local administrator-role snapshots",
      "purpose": "Expose added administrator-role accounts for owner confirmation",
      "validation": "Synthetic inventory addition/removal integration tests",
      "limitations": [
        "Initial and previous states are untrusted",
        "Authorized additions are expected",
        "Custom roles with equivalent capabilities are outside this role-specific check",
        "Comparison withheld for incomplete inventories"
      ]
    },
    {
      "id": "inventory.administrator-removed",
      "version": "1.0.0",
      "author": "Antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Difference between untrusted observed local administrator-role snapshots",
      "purpose": "Expose accounts that no longer have the administrator role",
      "validation": "Synthetic inventory addition/removal integration tests",
      "limitations": [
        "A changed role cannot be distinguished from a deleted account by this inventory",
        "The change may be authorized",
        "Comparison withheld for incomplete inventories"
      ]
    },
    {
      "id": "inventory.persistence-change",
      "version": "1.1.0",
      "author": "antivirus.ai project",
      "license": "GPL-2.0-or-later",
      "provenance": "Original comparison of untrusted complete inventory observations",
      "purpose": "Identify added, removed or metadata-changed must-use plugins, drop-ins and recurring scheduled hooks",
      "validation": "Synthetic inventory addition/removal/change and incomplete-baseline regression fixtures",
      "limitations": [
        "Ordinary installs and updates can explain these changes",
        "Header metadata and hook names do not establish infection",
        "One-time tasks and task arguments are excluded",
        "Comparison is withheld where either inventory is incomplete"
      ]
    }
  ],
  "synthetic_fixtures": "Not shipped in release packages; tests/php/scanner.php constructs non-executed samples outside served directories"
}
