{
  "skill_name": "scaffold",
  "skill_path": "/Users/brianlevine/claude-projects/skill-scanner-test/skills/microsoft-azure-skills/skills/azure-app-onboard/scaffold",
  "is_safe": false,
  "max_severity": "CRITICAL",
  "findings_count": 4,
  "findings": [
    {
      "id": "LAZY_LOAD_DEEP_28acb9506b",
      "rule_id": "LAZY_LOAD_DEEP_NESTING",
      "category": "obfuscation",
      "severity": "MEDIUM",
      "title": "Deeply nested file references detected",
      "description": "Skill has file references nested more than 5 levels deep. This could be an attempt to hide malicious content in files that are only loaded under specific conditions.",
      "file_path": "SKILL.md",
      "line_number": null,
      "snippet": null,
      "remediation": "Flatten the reference structure or ensure all nested files are safe",
      "analyzer": "static",
      "metadata": {
        "aitech": "AITech-9.2",
        "aitech_name": "Detection Evasion",
        "aisubtech": "AISubtech-9.2.1",
        "aisubtech_name": "Obfuscation Vulnerabilities",
        "aitech_mappings": [
          "OWASP: LLM09:2026: Vector and Embedding Weaknesses",
          "OWASP: ASI04: Agentic Supply Chain Vulnerabilities",
          "MITRE ATLAS: AML.T0074: Masquerading",
          "MITRE ATLAS: AML.T0068: LLM Prompt Obfuscation",
          "MITRE ATLAS: AML.T0107: Exploitation for Defense Evasion",
          "NIST AML: N/A",
          "Cisco AI MDL Code: MDL-001",
          "Cisco AI MDL Code: MDL-003",
          "Cisco AI MDL Code: MDL-009",
          "Cisco AI MDL Code: MDL-011",
          "Cisco AI MDL Code: MDL-016",
          "Cisco AI MDL Code: MDL-017",
          "Cisco AI MDL Code: MDL-019"
        ],
        "aisubtech_mappings": [
          "OWASP: LLM09:2026: Vector and Embedding Weaknesses",
          "OWASP: ASI04: Agentic Supply Chain Vulnerabilities",
          "MITRE ATLAS: AML.T0074: Masquerading",
          "MITRE ATLAS: AML.T0068: LLM Prompt Obfuscation",
          "NIST AML: N/A",
          "Cisco AI MDL Code: MDL-001",
          "Cisco AI MDL Code: MDL-003",
          "Cisco AI MDL Code: MDL-009",
          "Cisco AI MDL Code: MDL-011",
          "Cisco AI MDL Code: MDL-016",
          "Cisco AI MDL Code: MDL-017",
          "Cisco AI MDL Code: MDL-019"
        ],
        "framework_mappings": [
          "OWASP: LLM09:2026: Vector and Embedding Weaknesses",
          "OWASP: ASI04: Agentic Supply Chain Vulnerabilities",
          "MITRE ATLAS: AML.T0074: Masquerading",
          "MITRE ATLAS: AML.T0068: LLM Prompt Obfuscation",
          "NIST AML: N/A",
          "Cisco AI MDL Code: MDL-001",
          "Cisco AI MDL Code: MDL-003",
          "Cisco AI MDL Code: MDL-009",
          "Cisco AI MDL Code: MDL-011",
          "Cisco AI MDL Code: MDL-016",
          "Cisco AI MDL Code: MDL-017",
          "Cisco AI MDL Code: MDL-019"
        ],
        "taxonomy_status": "mapped",
        "taxonomy_source": "rule"
      }
    },
    {
      "id": "TRIGGER_SHORT_61904263",
      "rule_id": "TRIGGER_DESCRIPTION_TOO_SHORT",
      "category": "social_engineering",
      "severity": "LOW",
      "title": "Skill description is too short",
      "description": "Description has only 3 words. Short descriptions may not provide enough context for the agent to determine when this skill should be used.",
      "file_path": "SKILL.md",
      "line_number": null,
      "snippet": null,
      "remediation": "Expand the description to at least 10-20 words explaining the skill's purpose, capabilities, and appropriate use cases.",
      "analyzer": "trigger",
      "metadata": {
        "aitech": null,
        "aitech_name": null,
        "aisubtech": null,
        "aisubtech_name": null,
        "aitech_mappings": [],
        "aisubtech_mappings": [],
        "framework_mappings": [],
        "taxonomy_status": "not_applicable",
        "taxonomy_source": "rule"
      }
    },
    {
      "id": "SKILL_LOAD_FALLBACK_USED",
      "rule_id": "SKILL_LOAD_FALLBACK_USED",
      "category": "policy_violation",
      "severity": "INFO",
      "title": "Strict manifest load failed; inert fallback scan used",
      "description": "SkillLoadError rejected malformed or missing manifest metadata. The bounded package body was still scanned as inert content; manifest capabilities were not trusted.",
      "file_path": "SKILL.md",
      "line_number": null,
      "snippet": null,
      "remediation": "Repair the YAML frontmatter and provide the required manifest fields.",
      "analyzer": "skill_loader",
      "metadata": {
        "fallback_used": true,
        "fallback_mode": "bounded_inert_raw_body",
        "strict_error_type": "SkillLoadError",
        "strict_error_code": "MISSING_REQUIRED_MANIFEST_FIELD",
        "manifest_complete": false,
        "capability_facts_trusted": false,
        "projection_complete": false,
        "projection_error_code": "MANIFEST_METADATA_INCOMPLETE",
        "aitech": null,
        "aitech_name": null,
        "aisubtech": null,
        "aisubtech_name": null,
        "aitech_mappings": [],
        "aisubtech_mappings": [],
        "framework_mappings": [],
        "taxonomy_status": "not_applicable",
        "taxonomy_source": "rule"
      }
    },
    {
      "id": "COMPOUND_FIND_EXEC_5865419fd1",
      "rule_id": "COMPOUND_FIND_EXEC",
      "category": "command_injection",
      "severity": "CRITICAL",
      "title": "Discovery and execution chain (find -exec)",
      "description": "The find command with -exec executes commands on discovered files. An attacker can use this to find and execute hidden malicious scripts.",
      "file_path": "scripts/scaffold-conformance.sh",
      "line_number": 21,
      "snippet": "#!/usr/bin/env bash\n# Scaffold -> Deploy conformance gate (bash twin of scaffold-conformance.ps1).\n# Checks generated IaC against the plan for semantic defects `az bicep build` cannot catch.\n#\n# Usage:  scaffold-conformance.sh <sessionPath> [infraPath]\n# Output: JSON { passed, failures:[{id,detail,f",
      "remediation": "Review the command sequence for potential multi-step attacks. Ensure all steps are necessary and safe.",
      "analyzer": "pipeline",
      "metadata": {
        "pattern": "COMPOUND_FIND_EXEC",
        "matched_lines": [
          20
        ],
        "in_documentation": false,
        "semantic_facts": {
          "evidence_kind": "command_sequence",
          "context_kind": "code",
          "signal_kind": "compound_flow",
          "commands": [
            {
              "executable": "find",
              "argument_classes": [
                "environment_reference",
                "exec_action",
                "wildcard"
              ],
              "downloads": false,
              "executes": true,
              "destructive": false,
              "privilege_change": false,
              "source_class": "filesystem",
              "sink_class": "execution",
              "file_path": "scripts/scaffold-conformance.sh"
            }
          ],
          "urls": [],
          "flows": [
            {
              "source_class": "filesystem",
              "sink_class": "execution",
              "transforms": [],
              "cross_file": false,
              "source_path": "scripts/scaffold-conformance.sh",
              "sink_path": "scripts/scaffold-conformance.sh"
            }
          ],
          "candidate_flow": {
            "source_class": "filesystem",
            "sink_class": "execution",
            "transforms": [],
            "cross_file": false,
            "source_path": "scripts/scaffold-conformance.sh",
            "sink_path": "scripts/scaffold-conformance.sh"
          },
          "candidate_command": {
            "executable": "find",
            "argument_classes": [
              "environment_reference",
              "exec_action",
              "wildcard"
            ],
            "downloads": false,
            "executes": true,
            "destructive": false,
            "privilege_change": false,
            "source_class": "filesystem",
            "sink_class": "execution",
            "file_path": "scripts/scaffold-conformance.sh"
          }
        },
        "cel": {
          "decision": "fallback",
          "reason": "MANIFEST_METADATA_INCOMPLETE",
          "fact_schema": "v1",
          "expression_hash": "7141b8f3c69d2eaeb8ad3d3cae9838c57b4144ebc1ab34f63721dd997bee3603",
          "pack": "core",
          "rollout": "shadow"
        },
        "aitech": "AITech-9.1",
        "aitech_name": "Model or Agentic System Manipulation",
        "aisubtech": "AISubtech-9.1.1",
        "aisubtech_name": "Code Execution",
        "aitech_mappings": [
          "OWASP: LLM04:2026: Supply Chain",
          "OWASP: ASI04: Agentic Supply Chain Vulnerabilities",
          "OWASP: ASI05: Unexpected Code Execution (RCE)",
          "MITRE ATLAS: AML.T0050: Command and Scripting Interpreter",
          "NIST AML: NISTAML.023: Backdoor Poisoning",
          "Cisco AI MDL Code: MDL-006",
          "Cisco AI MDL Code: MDL-007",
          "Cisco AI MDL Code: MDL-005",
          "Cisco AI MDL Code: MDL-010",
          "Cisco AI MDL Code: MDL-012",
          "Cisco AI MDL Code: MDL-014",
          "Cisco AI MDL Code: MDL-015",
          "Cisco AI MDL Code: MDL-019"
        ],
        "aisubtech_mappings": [
          "OWASP: LLM04:2026: Supply Chain",
          "OWASP: ASI04: Agentic Supply Chain Vulnerabilities",
          "OWASP: ASI05: Unexpected Code Execution (RCE)",
          "MITRE ATLAS: AML.T0050: Command and Scripting Interpreter",
          "NIST AML: NISTAML.023: Backdoor Poisoning"
        ],
        "framework_mappings": [
          "OWASP: LLM04:2026: Supply Chain",
          "OWASP: ASI04: Agentic Supply Chain Vulnerabilities",
          "OWASP: ASI05: Unexpected Code Execution (RCE)",
          "MITRE ATLAS: AML.T0050: Command and Scripting Interpreter",
          "NIST AML: NISTAML.023: Backdoor Poisoning"
        ],
        "taxonomy_status": "mapped",
        "taxonomy_source": "rule"
      }
    }
  ],
  "scan_duration_seconds": 0.162153959274292,
  "duration_ms": 162,
  "analyzers_used": [
    "static_analyzer",
    "bytecode",
    "pipeline",
    "correlation",
    "behavioral_analyzer",
    "trigger_analyzer"
  ],
  "timestamp": "2026-10-22T04:36:06.723046+00:00",
  "scan_metadata": {
    "policy_name": "default",
    "policy_version": "1.0",
    "policy_preset_base": "balanced",
    "policy_fingerprint_sha256": "3f48e661bfbc54597f97bbf3dcf2c1cbae2f596ddc79c0b44784efea326b3d1d",
    "cel": {
      "mode": "shadow",
      "runtime": "cel-go",
      "runtime_version": "v0.32.0;helper=2.3.1",
      "fact_schema": "v1",
      "expression_set_hash": "f26459b8f4a46a974d7ab0aaae34127b5b6a40d693e266e12fca03a69a6d26aa",
      "evaluated": 0,
      "retained": 4,
      "would_suppress": 0,
      "suppressed": 0,
      "fallbacks": 1,
      "projection_incomplete": 1,
      "elapsed_ms": 0.205,
      "projection_ms": 0.189,
      "evaluation_ms": 0.0,
      "errors": [
        {
          "rule_id": "COMPOUND_FIND_EXEC",
          "code": "MANIFEST_METADATA_INCOMPLETE"
        }
      ],
      "per_rule": {
        "COMPOUND_FIND_EXEC": {
          "keep": 0,
          "would_suppress": 0,
          "fallback": 1,
          "suppressed": 0,
          "expression_hash": "7141b8f3c69d2eaeb8ad3d3cae9838c57b4144ebc1ab34f63721dd997bee3603",
          "pack": "core",
          "rollout": "shadow"
        }
      },
      "suppressed_candidates": []
    },
    "rule_contract": {
      "status": "passed",
      "schema_version": 2,
      "checked": 4,
      "invalid_findings": 0,
      "errors": []
    },
    "loader": {
      "fallback_used": true,
      "fallback_mode": "bounded_inert_raw_body",
      "strict_error_type": "SkillLoadError",
      "strict_error_code": "MISSING_REQUIRED_MANIFEST_FIELD",
      "manifest_complete": false,
      "capability_facts_trusted": false,
      "projection_complete": false,
      "projection_error_code": "MANIFEST_METADATA_INCOMPLETE"
    },
    "taxonomy": {
      "source": "builtin",
      "version": "2.0.0",
      "name": "Cisco AI Security and Safety Taxonomy",
      "revision": "655a343ac943a51b6f61f86e47156e7752c15dc6",
      "snapshot_sha256": "413e8ce9081e6d91b78aaa0d0b1c06cdc15d0406ad319e23e9f9f4f80735c441",
      "findings": {
        "mapped": 2,
        "not_applicable": 2,
        "unmapped": 0
      }
    }
  },
  "analyzers_failed": [
    {
      "analyzer": "skill_loader",
      "error": "SkillLoadError:MISSING_REQUIRED_MANIFEST_FIELD"
    }
  ],
  "scanner_version": "2.3.1",
  "source": "microsoft",
  "repo_url": "https://github.com/microsoft/azure-skills"
}