{
  "executive_summary": {
    "badge": "Unsafe",
    "security_score": null,
    "view": "composite",
    "aggregate_verdict_withheld": false,
    "aggregate_verdict_withheld_reason": null,
    "scanner_badges": {
      "agentshield": "Verified",
      "cisco-skill-scanner": "Unsafe",
      "agent-audit-kit": "Unsafe",
      "bearer": "Unsafe",
      "nerlo-behavioral": "Unsafe",
      "nerlo-install-instruction": "Verified",
      "capslock": "not_applicable"
    },
    "finding_counts": {
      "critical": 7,
      "high": 14,
      "medium": 13,
      "low": 33,
      "informational": 23
    },
    "recommendation": "@aashari/mcp-server-aws-sso is NOT recommended for integration: the scan surfaced 7 critical and 14 high-severity findings. Treat the Per-Scanner Detail section as a remediation worklist and re-scan before reconsidering."
  },
  "source_provenance": {
    "repository_url": "https://github.com/aashari/mcp-server-aws-sso",
    "commit_sha_scanned": null,
    "license": "ISC",
    "maintainer": "Andi Ashari",
    "name": "@aashari/mcp-server-aws-sso",
    "version": "4.0.0"
  },
  "per_scanner_detail": [
    {
      "scanner_name": "agentshield",
      "scanner_version": "1.4.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 0.722541393013671,
      "status": "complete",
      "examined": {
        "unit": "scan_targets",
        "count": 1
      },
      "metadata": {
        "source": "npm",
        "source_url": "https://www.npmjs.com/package/ecc-agentshield",
        "install_command": "npm install -g ecc-agentshield@1.4.0",
        "scans_performed": [
          "supply_chain"
        ]
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "cisco-skill-scanner",
      "scanner_version": "2.0.11",
      "score": 0.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo",
          "line_number": null,
          "rule_identifier": "LOW_ANALYZABILITY",
          "title": "Critically low analyzability score",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Only 22% of skill content could be analyzed. 62 of 82 files are opaque to the scanner. The safety assessment has low confidence.",
          "remediation": "Replace opaque files (binaries, encrypted content) with inspectable source code to improve scan confidence."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "obfuscation",
          "file_path": "/repo/.releaserc.json",
          "line_number": null,
          "rule_identifier": "HIDDEN_DATA_FILE",
          "title": "Hidden data file detected",
          "description": "Hidden file found: .releaserc.json. Hidden files may contain concealed configuration or data that should be reviewed.",
          "remediation": "Move file to a visible location or document its purpose."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "social_engineering",
          "file_path": "/repo/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 74,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 132,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 159,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 163,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "obfuscation",
          "file_path": "/repo/src/controllers/aws.sso.auth.controller.ts",
          "line_number": null,
          "rule_identifier": "FILE_MAGIC_MISMATCH",
          "title": "File extension does not match actual content type",
          "description": "File 'aws.sso.auth.controller.ts' extension (.ts) suggests one format but Magika detected a different text format: JavaScript source (javascript). This may indicate content obfuscation or a misnamed file.",
          "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/services/vendor.aws.sso.auth.http.ts",
          "line_number": 23,
          "rule_identifier": "DATA_EXFIL_JS_NETWORK",
          "title": "Outbound network request primitives in JavaScript/TypeScript",
          "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "critical",
          "category": "command_injection",
          "file_path": "/repo/src/services/vendor.aws.sso.exec.service.ts",
          "line_number": 166,
          "rule_identifier": "COMMAND_INJECTION_EVAL",
          "title": "Dangerous code execution functions that can execute arbitrary code",
          "description": "Pattern detected: exec(",
          "remediation": "Avoid eval(), exec(), and compile(). Use safer alternatives like ast.literal_eval() or operator module"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "critical",
          "category": "command_injection",
          "file_path": "/repo/src/services/vendor.aws.sso.exec.service.ts",
          "line_number": 179,
          "rule_identifier": "COMMAND_INJECTION_EVAL",
          "title": "Dangerous code execution functions that can execute arbitrary code",
          "description": "Pattern detected: exec (",
          "remediation": "Avoid eval(), exec(), and compile(). Use safer alternatives like ast.literal_eval() or operator module"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "obfuscation",
          "file_path": "/repo/src/tools/aws.sso.exec.tool.ts",
          "line_number": null,
          "rule_identifier": "FILE_MAGIC_MISMATCH",
          "title": "File extension does not match actual content type",
          "description": "File 'aws.sso.exec.tool.ts' extension (.ts) suggests one format but Magika detected a different text format: JavaScript source (javascript). This may indicate content obfuscation or a misnamed file.",
          "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 81,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 142,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 186,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 244,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 282,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 327,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 416,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 454,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "critical",
          "category": "command_injection",
          "file_path": "/repo/src/utils/aws.sso.util.ts",
          "line_number": 1,
          "rule_identifier": "COMMAND_INJECTION_JS_CHILD_PROCESS",
          "title": "Node.js child_process module usage for shell command execution",
          "description": "Pattern detected: from 'child_process'",
          "remediation": "Avoid child_process. If required, use execFile with explicit arguments instead of exec with shell strings"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "critical",
          "category": "command_injection",
          "file_path": "/repo/src/utils/aws.sso.util.ts",
          "line_number": 17,
          "rule_identifier": "COMMAND_INJECTION_JS_CHILD_PROCESS",
          "title": "Node.js child_process module usage for shell command execution",
          "description": "Pattern detected: execSync(",
          "remediation": "Avoid child_process. If required, use execFile with explicit arguments instead of exec with shell strings"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "critical",
          "category": "command_injection",
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 1,
          "rule_identifier": "COMMAND_INJECTION_JS_CHILD_PROCESS",
          "title": "Node.js child_process module usage for shell command execution",
          "description": "Pattern detected: from 'child_process'",
          "remediation": "Avoid child_process. If required, use execFile with explicit arguments instead of exec with shell strings"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/config.util.ts",
          "line_number": 92,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/logger.util.ts",
          "line_number": 129,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/logger.util.ts",
          "line_number": 160,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/logger.util.ts",
          "line_number": 307,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.appendFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/utils/response.util.ts",
          "line_number": 82,
          "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
          "title": "Node.js filesystem access that could read or write sensitive data",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
          "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "social_engineering",
          "file_path": "/repo/docs/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/docs/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        }
      ],
      "execution_duration_seconds": 9.230661917012185,
      "status": "complete",
      "examined": {
        "unit": "skills",
        "count": 2
      },
      "metadata": {
        "source": "pypi",
        "source_url": "https://pypi.org/project/cisco-ai-skill-scanner/2.0.11/",
        "report_type": "cisco-skill-sast",
        "analyzers_used": [
          "bytecode",
          "pipeline",
          "static_analyzer"
        ],
        "skills_scanned": [
          "repo",
          "docs"
        ],
        "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
        "severity_counts": {
          "low": 1,
          "high": 0,
          "medium": 2,
          "critical": 5,
          "informational": 23
        },
        "artifact_type_policy": "mcp_server",
        "downweighted_findings": 21
      },
      "display_score": 0.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "agent-audit-kit",
      "scanner_version": "0.3.26",
      "score": 1.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "agent-audit-kit",
          "severity": "low",
          "category": "supply-chain",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "AAK-SUPPLY-005",
          "title": "Dependency count exceeds threshold",
          "description": "More than 200 direct + transitive dependencies in lockfile. Each dependency is a trust decision.",
          "remediation": "Audit and remove unused dependencies. Consider lighter alternatives."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "legal-compliance",
          "file_path": "scripts/package.json",
          "line_number": 1,
          "rule_identifier": "AAK-LEGAL-002",
          "title": "Dependency with no declared license",
          "description": "A dependency has no declared license, creating legal uncertainty about usage rights.",
          "remediation": "Contact the maintainer to clarify licensing or replace with a properly licensed alternative."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "low",
          "category": "supply-chain",
          "file_path": "SECURITY.md",
          "line_number": null,
          "rule_identifier": "AAK-SEC-MD-001",
          "title": "MCP server repo missing SECURITY.md or security_contact",
          "description": "A repository whose name or pyproject keywords declare it as an MCP server ships without a top-level SECURITY.md AND without a `security_contact` entry in marketplace.json / pyproject.toml / package.json. Anthropic's April 2026 SECURITY.md guidance makes this the baseline expectation so researchers have a channel.",
          "remediation": "Add SECURITY.md at the repo root with a disclosure email and response SLA; OR add `security_contact` to the project manifest."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "mcp-config",
          "file_path": "src/index.ts",
          "line_number": 2,
          "rule_identifier": "AAK-MCP-018",
          "title": "Missing rate limiting on MCP endpoint",
          "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
          "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "mcp-config",
          "file_path": "src/tools/aws.sso.auth.tool.ts",
          "line_number": 1,
          "rule_identifier": "AAK-MCP-018",
          "title": "Missing rate limiting on MCP endpoint",
          "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
          "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "mcp-config",
          "file_path": "src/tools/aws.sso.ec2.tool.ts",
          "line_number": 1,
          "rule_identifier": "AAK-MCP-018",
          "title": "Missing rate limiting on MCP endpoint",
          "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
          "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "mcp-config",
          "file_path": "src/tools/aws.sso.accounts.tool.ts",
          "line_number": 1,
          "rule_identifier": "AAK-MCP-018",
          "title": "Missing rate limiting on MCP endpoint",
          "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
          "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "mcp-config",
          "file_path": "src/tools/aws.sso.exec.tool.ts",
          "line_number": 1,
          "rule_identifier": "AAK-MCP-018",
          "title": "Missing rate limiting on MCP endpoint",
          "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
          "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "supply-chain",
          "file_path": "package.json",
          "line_number": 105,
          "rule_identifier": "AAK-OAUTH-3P-001",
          "title": "Repo depends on a third-party agent-platform SDK",
          "description": "The project depends on an agent-platform SDK (context-ai, langsmith, helicone, langfuse, humanloop, MCP SDK). Informational finding so reviewers audit the vendor's OAuth-scope footprint before merging. Raised to MEDIUM because the April 19 2026 Vercel \u00d7 Context.ai incident showed a single vendor compromise can turn into a production breach via transitive OAuth grants.",
          "remediation": "Pin the SDK to an exact version, audit the OAuth scopes it requests, and keep any deployment-level grants (Vercel, GCP, Workspace) in a secrets vault \u2014 never in a committed env file. See Vercel's bulletin for sensitive-env-var guidance: https://vercel.com/kb/bulletin/vercel-april-2026-security-incident"
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "supply-chain",
          "file_path": "src/index.ts",
          "line_number": null,
          "rule_identifier": "AAK-ANTHROPIC-SDK-001",
          "title": "MCP server built on the upstream SDK without STDIO sanitizer",
          "description": "Repository declares a dependency on the upstream Anthropic / ModelContextProtocol SDK (Python `mcp` / `modelcontextprotocol`, TS `@modelcontextprotocol/sdk`, Java `io.modelcontextprotocol:*`, Rust `mcp` / `modelcontextprotocol`) and exposes a STDIO transport (`StdioServerTransport`, `stdio_server`, etc.) without a sanitizer on argv assembly. Anthropic declined to CVE this as working as designed \u2014 sanitization is the developer's responsibility. The OX Security disclosure on 2026-04-15 rolled up L",
          "remediation": "Wrap every argv the STDIO transport builds in an allow-list sanitizer \u2014 `shlex.quote` in Python, `execFile` with an explicit argv array in Node, equivalent in Java/Rust. OR switch the transport off STDIO (`transports=['http']` / `['sse']`). If you have deliberately accepted the risk, add `accepts_stdio_risk: true` plus a `justification:` field in `.agent-audit-kit.yml`."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "transport-security",
          "file_path": "src/index.ts",
          "line_number": 3,
          "rule_identifier": "AAK-DNS-REBIND-001",
          "title": "MCP StreamableHTTP transport without Host-header allow-list",
          "description": "The upstream MCP Python, Java, Apollo and TypeScript SDKs shipped a StreamableHTTP transport that trusts the browser-supplied `Host` header. A malicious web page that a user visits can resolve a custom domain to 127.0.0.1 via DNS rebinding and reach a local MCP server, turning every browser tab into a remote-attack surface for stdio-grade tools. The upstream patch adds a Host allow-list; downstream servers embedding StreamableHTTP must enforce one too. See CVE-2025-66414 / CVE-2025-66416 (Python",
          "remediation": "Wrap the StreamableHTTP app with a Host-header allow-list. In Starlette / FastAPI attach `TrustedHostMiddleware(allowed_hosts=...)`; in Node attach an `allowedHosts:` option or a Host middleware; in Java/Apollo enable `HostHeaderFilter` / `allowedHosts` config. Alternatively upgrade the SDK to a patched version and pass through its host-validation option."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "supply-chain",
          "file_path": ".github/workflows/ci-dependabot-auto-merge.yml",
          "line_number": 36,
          "rule_identifier": "AAK-GHA-IMMUTABLE-001",
          "title": "Third-party GitHub Action not pinned by full commit SHA",
          "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
          "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
        }
      ],
      "execution_duration_seconds": 2.7286693349597044,
      "status": "complete",
      "examined": {
        "unit": "files",
        "count": 78
      },
      "metadata": {
        "source": "pypi",
        "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
        "report_type": "agent-audit-kit-sast",
        "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
        "rules_evaluated": 211,
        "severity_counts": {
          "low": 2,
          "high": 1,
          "medium": 8,
          "critical": 1,
          "informational": 0
        }
      },
      "display_score": 1.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "bearer",
      "scanner_version": "2.0.2",
      "score": 0.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "bearer",
          "severity": "critical",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 47,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in OS command",
          "description": "## Description\n\nIncorporating unsanitized dynamic input directly into operating system commands poses a significant security risk. This practice could give attackers the opportunity to execute harmful commands on your system.\n\n## Remediations\n\n- **Do** use static, hardcoded values in command strings - wherever possible - to avoid relying on dynamic data.\n  ```javascript\n  let filePattern = \"*.js\";\n  cp.exec(`cp ${filePattern} destinationFolder`, (error, stdout, stderr) => {});\n  ```\n- **Do** san",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 122,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 132,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 159,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 163,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
          "line_number": 55,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/src/utils/logger.util.ts",
          "line_number": 307,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/src/utils/response.util.ts",
          "line_number": 33,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "high",
          "category": null,
          "file_path": "/repo/src/utils/response.util.ts",
          "line_number": 34,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in file path",
          "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "medium",
          "category": null,
          "file_path": "/repo/src/index.ts",
          "line_number": 116,
          "rule_identifier": null,
          "title": "Missing Helmet configuration on HTTP headers",
          "description": "## Description\n\nHelmet can help protect your app from some well-known web vulnerabilities by setting HTTP headers appropriately. Failing to configure Helmet for HTTP headers leaves your application vulnerable to several web attacks.\n\n## Remediations\n\n- **Do** use Helmet middleware to secure your app by adding it to your application's middleware.\n  ```javascript\n  const helmet = require(\"helmet\");\n  app.use(helmet());\n  ```\n\n## References\n\n- [Express Security Best Practices: Use Helmet](https://e",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "medium",
          "category": null,
          "file_path": "/repo/src/index.ts",
          "line_number": 116,
          "rule_identifier": null,
          "title": "Missing server configuration to reduce server fingerprinting",
          "description": "## Description\n\nReducing server fingerprinting enhances security by making it harder for attackers to identify the software your server is running. Server fingerprinting involves analyzing the unique responses of server software to specific requests, which can reveal information about the server's software and version. While not a direct security vulnerability, minimizing this information leakage is a proactive step to obscure details that could be used in targeted attacks.\n\n## Remediations\n\n- *",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "medium",
          "category": null,
          "file_path": "/repo/src/utils/logger.util.ts",
          "line_number": 110,
          "rule_identifier": null,
          "title": "Unsanitized dynamic input in regular expression",
          "description": "## Description\n\nCreating regular expressions from dynamic input can lead to a vulnerability known as Regular Expression Denial of Service (ReDoS). This issue arises because some regular expressions can be processed with exponential time complexity. When attackers exploit this, it can significantly drain CPU resources, effectively causing a denial of service.\n\n## Remediations\n\n- **Do** validate all dynamic and user-supplied input against a strict safelist of allowed characters before using it in ",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/retry.util.ts",
          "line_number": 75,
          "rule_identifier": null,
          "title": "Usage of insufficient random value",
          "description": "## Description\n\nUsing predictable random values compromises your application's security, particularly if these values serve security-related functions.\n\n## Remediations\n\n- **Do** use a robust library for generating random values to enhance security.\n  ```javascript\n  const crypto = require('crypto');\n  crypto.randomBytes(16).toString('hex');\n  ```",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/scripts/ensure-executable.js",
          "line_number": 26,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 35,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 83,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 127,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 136,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 173,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/scripts/update-version.js",
          "line_number": 202,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/aws.sso.accounts.cli.ts",
          "line_number": 58,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/aws.sso.auth.cli.ts",
          "line_number": 53,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/aws.sso.auth.cli.ts",
          "line_number": 90,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/aws.sso.ec2.cli.ts",
          "line_number": 74,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/aws.sso.ec2.cli.ts",
          "line_number": 79,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/aws.sso.exec.cli.ts",
          "line_number": 84,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/aws.sso.exec.cli.ts",
          "line_number": 89,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/cli/index.ts",
          "line_number": 67,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 33,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 59,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 66,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 72,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 73,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 81,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 84,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 85,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 99,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/cli.test.util.ts",
          "line_number": 119,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/error.util.ts",
          "line_number": 278,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/logger.util.ts",
          "line_number": 310,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/logger.util.ts",
          "line_number": 316,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        },
        {
          "tool_name": "bearer",
          "severity": "low",
          "category": null,
          "file_path": "/repo/src/utils/toon.util.ts",
          "line_number": 29,
          "rule_identifier": null,
          "title": "Leakage of information in logger message",
          "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
          "remediation": null
        }
      ],
      "execution_duration_seconds": 11.281380979984533,
      "status": "complete",
      "examined": {
        "unit": "files",
        "count": 62
      },
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/Bearer/bearer",
        "report_type": "security",
        "rules_loaded": 554,
        "install_command": "curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | sh -s -- -b /usr/local/bin \"v2.0.2\"",
        "severity_counts": {
          "low": 30,
          "high": 8,
          "medium": 3,
          "critical": 1,
          "informational": 0
        }
      },
      "display_score": 0.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "nerlo-behavioral",
      "scanner_version": "0.1.0",
      "score": 25.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/services/vendor.aws.sso.accounts.service.ts",
          "line_number": 101,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/services/vendor.aws.sso.accounts.service.ts",
          "line_number": 228,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/services/vendor.aws.sso.accounts.service.ts",
          "line_number": 434,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/services/vendor.aws.sso.ec2.service.ts",
          "line_number": 142,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/services/vendor.aws.sso.ec2.service.ts",
          "line_number": 198,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        }
      ],
      "execution_duration_seconds": 5.265694825036917,
      "status": "complete",
      "examined": {
        "unit": "files",
        "count": 62
      },
      "metadata": {
        "source": "nerlo-original",
        "source_url": "https://github.com/nerlo-ai/nerlo",
        "report_type": "nerlo-behavioral",
        "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
        "ruleset_paths": [
          "/opt/nerlo-rules/exfiltration.yaml",
          "/opt/nerlo-rules/clipboard_exfiltration.yaml",
          "/opt/nerlo-rules/rce_endpoint.yaml",
          "/opt/nerlo-rules/taint_egress.yaml"
        ],
        "install_command": "pip install 'semgrep==1.97.0'",
        "severity_counts": {
          "low": 0,
          "high": 5,
          "medium": 0,
          "critical": 0,
          "informational": 0
        },
        "merged_invocation": true
      },
      "display_score": 25.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "nerlo-install-instruction",
      "scanner_version": "0.1.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 5.268259931995999,
      "status": "complete",
      "examined": {
        "unit": "files",
        "count": 5
      },
      "metadata": {
        "source": "nerlo-original",
        "source_url": "https://github.com/nerlo-ai/nerlo",
        "report_type": "nerlo-install-instruction",
        "ruleset_path": "/opt/nerlo-rules/install_instructions.yaml",
        "ruleset_paths": [
          "/opt/nerlo-rules/install_instructions.yaml",
          "/opt/nerlo-rules/cursor_rules.yaml"
        ],
        "install_command": "pip install 'semgrep==1.97.0'",
        "merged_invocation": true
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "capslock",
      "scanner_version": "v0.3.2",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 0.1122392219840549,
      "status": "not_applicable",
      "examined": {
        "unit": "packages",
        "count": 0
      },
      "metadata": {
        "source": "go-module-proxy",
        "source_url": "https://github.com/google/capslock/releases/tag/v0.3.2",
        "report_type": "go-capability",
        "vendor_mode": false,
        "install_command": "GOTOOLCHAIN=local GOFLAGS=-mod=mod GOSUMDB=sum.golang.org GOBIN=/usr/local/bin go install github.com/google/capslock/cmd/capslock@v0.3.2  # github.com/google/capslock v0.3.2 h1:0ZQa9YR8s9ewFu1g5w6Rgd/lW/4dga7qJew3K6Ql7aM=",
        "environment_note": "capslock found no .go files to analyze; reported not_applicable rather than a clean 100 \u2014 the scanner never ran, so it has no verdict to contribute",
        "go_files_present": 0,
        "artifact_type_policy": "mcp_server",
        "expected_capabilities": [
          "CAPABILITY_FILES",
          "CAPABILITY_NETWORK",
          "CAPABILITY_READ_SYSTEM_STATE",
          "CAPABILITY_REFLECT",
          "CAPABILITY_RUNTIME"
        ],
        "artifact_type_explicit": true
      },
      "display_score": null,
      "display_badge": "not_applicable"
    }
  ],
  "threat_model": "Threat model synthesis has not yet run for this scan. This section is generated by the registry's LLM pipeline (Req 22.3) and will appear in the next regeneration of this report.",
  "audit_chain": {
    "scan_job_id": "425386ba-66c0-441d-a5f4-122bea996901",
    "scan_completed_at": "2026-08-12T11:42:35.333168+00:00",
    "scanner_versions": {
      "agentshield": "1.4.0",
      "cisco-skill-scanner": "2.0.11",
      "agent-audit-kit": "0.3.26",
      "bearer": "2.0.2",
      "nerlo-behavioral": "0.1.0",
      "nerlo-install-instruction": "0.1.0",
      "capslock": "v0.3.2"
    },
    "scanner_base_image": "us-central1-docker.pkg.dev/nerlo-vsk-prod/nerlo/scanner-base@sha256:d5aaefa8b517d1f03832091ab094e20dc73160a07ae1102af1b2e395ce6ce852",
    "ai_decision_log_ids": [
      "7647bc6e-a56f-4efd-a274-781396eee66e"
    ],
    "self_attestation_url": "http://localhost:8000/api/v1/registry/self-attestation"
  },
  "appendix": {
    "raw_scanner_reports": [
      {
        "scanner_name": "agentshield",
        "scanner_version": "1.4.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 0.722541393013671,
        "status": "complete",
        "examined": {
          "unit": "scan_targets",
          "count": 1
        },
        "metadata": {
          "source": "npm",
          "source_url": "https://www.npmjs.com/package/ecc-agentshield",
          "install_command": "npm install -g ecc-agentshield@1.4.0",
          "scans_performed": [
            "supply_chain"
          ]
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "cisco-skill-scanner",
        "scanner_version": "2.0.11",
        "score": 0.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo",
            "line_number": null,
            "rule_identifier": "LOW_ANALYZABILITY",
            "title": "Critically low analyzability score",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Only 22% of skill content could be analyzed. 62 of 82 files are opaque to the scanner. The safety assessment has low confidence.",
            "remediation": "Replace opaque files (binaries, encrypted content) with inspectable source code to improve scan confidence."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "obfuscation",
            "file_path": "/repo/.releaserc.json",
            "line_number": null,
            "rule_identifier": "HIDDEN_DATA_FILE",
            "title": "Hidden data file detected",
            "description": "Hidden file found: .releaserc.json. Hidden files may contain concealed configuration or data that should be reviewed.",
            "remediation": "Move file to a visible location or document its purpose."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "social_engineering",
            "file_path": "/repo/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 74,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 132,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 159,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 163,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "obfuscation",
            "file_path": "/repo/src/controllers/aws.sso.auth.controller.ts",
            "line_number": null,
            "rule_identifier": "FILE_MAGIC_MISMATCH",
            "title": "File extension does not match actual content type",
            "description": "File 'aws.sso.auth.controller.ts' extension (.ts) suggests one format but Magika detected a different text format: JavaScript source (javascript). This may indicate content obfuscation or a misnamed file.",
            "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/services/vendor.aws.sso.auth.http.ts",
            "line_number": 23,
            "rule_identifier": "DATA_EXFIL_JS_NETWORK",
            "title": "Outbound network request primitives in JavaScript/TypeScript",
            "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: fetch(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "critical",
            "category": "command_injection",
            "file_path": "/repo/src/services/vendor.aws.sso.exec.service.ts",
            "line_number": 166,
            "rule_identifier": "COMMAND_INJECTION_EVAL",
            "title": "Dangerous code execution functions that can execute arbitrary code",
            "description": "Pattern detected: exec(",
            "remediation": "Avoid eval(), exec(), and compile(). Use safer alternatives like ast.literal_eval() or operator module"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "critical",
            "category": "command_injection",
            "file_path": "/repo/src/services/vendor.aws.sso.exec.service.ts",
            "line_number": 179,
            "rule_identifier": "COMMAND_INJECTION_EVAL",
            "title": "Dangerous code execution functions that can execute arbitrary code",
            "description": "Pattern detected: exec (",
            "remediation": "Avoid eval(), exec(), and compile(). Use safer alternatives like ast.literal_eval() or operator module"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "obfuscation",
            "file_path": "/repo/src/tools/aws.sso.exec.tool.ts",
            "line_number": null,
            "rule_identifier": "FILE_MAGIC_MISMATCH",
            "title": "File extension does not match actual content type",
            "description": "File 'aws.sso.exec.tool.ts' extension (.ts) suggests one format but Magika detected a different text format: JavaScript source (javascript). This may indicate content obfuscation or a misnamed file.",
            "remediation": "Rename the file to match its actual content type, or remove it if it appears malicious."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 81,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 142,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 186,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 244,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 282,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 327,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 416,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 454,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFile(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "critical",
            "category": "command_injection",
            "file_path": "/repo/src/utils/aws.sso.util.ts",
            "line_number": 1,
            "rule_identifier": "COMMAND_INJECTION_JS_CHILD_PROCESS",
            "title": "Node.js child_process module usage for shell command execution",
            "description": "Pattern detected: from 'child_process'",
            "remediation": "Avoid child_process. If required, use execFile with explicit arguments instead of exec with shell strings"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "critical",
            "category": "command_injection",
            "file_path": "/repo/src/utils/aws.sso.util.ts",
            "line_number": 17,
            "rule_identifier": "COMMAND_INJECTION_JS_CHILD_PROCESS",
            "title": "Node.js child_process module usage for shell command execution",
            "description": "Pattern detected: execSync(",
            "remediation": "Avoid child_process. If required, use execFile with explicit arguments instead of exec with shell strings"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "critical",
            "category": "command_injection",
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 1,
            "rule_identifier": "COMMAND_INJECTION_JS_CHILD_PROCESS",
            "title": "Node.js child_process module usage for shell command execution",
            "description": "Pattern detected: from 'child_process'",
            "remediation": "Avoid child_process. If required, use execFile with explicit arguments instead of exec with shell strings"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/config.util.ts",
            "line_number": 92,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/logger.util.ts",
            "line_number": 129,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.readFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/logger.util.ts",
            "line_number": 160,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/logger.util.ts",
            "line_number": 307,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.appendFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/utils/response.util.ts",
            "line_number": 82,
            "rule_identifier": "DATA_EXFIL_JS_FS_ACCESS",
            "title": "Node.js filesystem access that could read or write sensitive data",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Pattern detected: fs.writeFileSync(",
            "remediation": "Review filesystem operations. Ensure they don't access sensitive system files or credential stores"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "social_engineering",
            "file_path": "/repo/docs/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/docs/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          }
        ],
        "execution_duration_seconds": 9.230661917012185,
        "status": "complete",
        "examined": {
          "unit": "skills",
          "count": 2
        },
        "metadata": {
          "source": "pypi",
          "source_url": "https://pypi.org/project/cisco-ai-skill-scanner/2.0.11/",
          "report_type": "cisco-skill-sast",
          "analyzers_used": [
            "bytecode",
            "pipeline",
            "static_analyzer"
          ],
          "skills_scanned": [
            "repo",
            "docs"
          ],
          "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
          "severity_counts": {
            "low": 1,
            "high": 0,
            "medium": 2,
            "critical": 5,
            "informational": 23
          },
          "artifact_type_policy": "mcp_server",
          "downweighted_findings": 21
        },
        "display_score": 0.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "agent-audit-kit",
        "scanner_version": "0.3.26",
        "score": 1.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "agent-audit-kit",
            "severity": "low",
            "category": "supply-chain",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "AAK-SUPPLY-005",
            "title": "Dependency count exceeds threshold",
            "description": "More than 200 direct + transitive dependencies in lockfile. Each dependency is a trust decision.",
            "remediation": "Audit and remove unused dependencies. Consider lighter alternatives."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "legal-compliance",
            "file_path": "scripts/package.json",
            "line_number": 1,
            "rule_identifier": "AAK-LEGAL-002",
            "title": "Dependency with no declared license",
            "description": "A dependency has no declared license, creating legal uncertainty about usage rights.",
            "remediation": "Contact the maintainer to clarify licensing or replace with a properly licensed alternative."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "low",
            "category": "supply-chain",
            "file_path": "SECURITY.md",
            "line_number": null,
            "rule_identifier": "AAK-SEC-MD-001",
            "title": "MCP server repo missing SECURITY.md or security_contact",
            "description": "A repository whose name or pyproject keywords declare it as an MCP server ships without a top-level SECURITY.md AND without a `security_contact` entry in marketplace.json / pyproject.toml / package.json. Anthropic's April 2026 SECURITY.md guidance makes this the baseline expectation so researchers have a channel.",
            "remediation": "Add SECURITY.md at the repo root with a disclosure email and response SLA; OR add `security_contact` to the project manifest."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "mcp-config",
            "file_path": "src/index.ts",
            "line_number": 2,
            "rule_identifier": "AAK-MCP-018",
            "title": "Missing rate limiting on MCP endpoint",
            "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
            "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "mcp-config",
            "file_path": "src/tools/aws.sso.auth.tool.ts",
            "line_number": 1,
            "rule_identifier": "AAK-MCP-018",
            "title": "Missing rate limiting on MCP endpoint",
            "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
            "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "mcp-config",
            "file_path": "src/tools/aws.sso.ec2.tool.ts",
            "line_number": 1,
            "rule_identifier": "AAK-MCP-018",
            "title": "Missing rate limiting on MCP endpoint",
            "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
            "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "mcp-config",
            "file_path": "src/tools/aws.sso.accounts.tool.ts",
            "line_number": 1,
            "rule_identifier": "AAK-MCP-018",
            "title": "Missing rate limiting on MCP endpoint",
            "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
            "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "mcp-config",
            "file_path": "src/tools/aws.sso.exec.tool.ts",
            "line_number": 1,
            "rule_identifier": "AAK-MCP-018",
            "title": "Missing rate limiting on MCP endpoint",
            "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
            "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "supply-chain",
            "file_path": "package.json",
            "line_number": 105,
            "rule_identifier": "AAK-OAUTH-3P-001",
            "title": "Repo depends on a third-party agent-platform SDK",
            "description": "The project depends on an agent-platform SDK (context-ai, langsmith, helicone, langfuse, humanloop, MCP SDK). Informational finding so reviewers audit the vendor's OAuth-scope footprint before merging. Raised to MEDIUM because the April 19 2026 Vercel \u00d7 Context.ai incident showed a single vendor compromise can turn into a production breach via transitive OAuth grants.",
            "remediation": "Pin the SDK to an exact version, audit the OAuth scopes it requests, and keep any deployment-level grants (Vercel, GCP, Workspace) in a secrets vault \u2014 never in a committed env file. See Vercel's bulletin for sensitive-env-var guidance: https://vercel.com/kb/bulletin/vercel-april-2026-security-incident"
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "supply-chain",
            "file_path": "src/index.ts",
            "line_number": null,
            "rule_identifier": "AAK-ANTHROPIC-SDK-001",
            "title": "MCP server built on the upstream SDK without STDIO sanitizer",
            "description": "Repository declares a dependency on the upstream Anthropic / ModelContextProtocol SDK (Python `mcp` / `modelcontextprotocol`, TS `@modelcontextprotocol/sdk`, Java `io.modelcontextprotocol:*`, Rust `mcp` / `modelcontextprotocol`) and exposes a STDIO transport (`StdioServerTransport`, `stdio_server`, etc.) without a sanitizer on argv assembly. Anthropic declined to CVE this as working as designed \u2014 sanitization is the developer's responsibility. The OX Security disclosure on 2026-04-15 rolled up L",
            "remediation": "Wrap every argv the STDIO transport builds in an allow-list sanitizer \u2014 `shlex.quote` in Python, `execFile` with an explicit argv array in Node, equivalent in Java/Rust. OR switch the transport off STDIO (`transports=['http']` / `['sse']`). If you have deliberately accepted the risk, add `accepts_stdio_risk: true` plus a `justification:` field in `.agent-audit-kit.yml`."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "transport-security",
            "file_path": "src/index.ts",
            "line_number": 3,
            "rule_identifier": "AAK-DNS-REBIND-001",
            "title": "MCP StreamableHTTP transport without Host-header allow-list",
            "description": "The upstream MCP Python, Java, Apollo and TypeScript SDKs shipped a StreamableHTTP transport that trusts the browser-supplied `Host` header. A malicious web page that a user visits can resolve a custom domain to 127.0.0.1 via DNS rebinding and reach a local MCP server, turning every browser tab into a remote-attack surface for stdio-grade tools. The upstream patch adds a Host allow-list; downstream servers embedding StreamableHTTP must enforce one too. See CVE-2025-66414 / CVE-2025-66416 (Python",
            "remediation": "Wrap the StreamableHTTP app with a Host-header allow-list. In Starlette / FastAPI attach `TrustedHostMiddleware(allowed_hosts=...)`; in Node attach an `allowedHosts:` option or a Host middleware; in Java/Apollo enable `HostHeaderFilter` / `allowedHosts` config. Alternatively upgrade the SDK to a patched version and pass through its host-validation option."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "supply-chain",
            "file_path": ".github/workflows/ci-dependabot-auto-merge.yml",
            "line_number": 36,
            "rule_identifier": "AAK-GHA-IMMUTABLE-001",
            "title": "Third-party GitHub Action not pinned by full commit SHA",
            "description": "A workflow in `.github/workflows/` uses a third-party Action (`owner/action@ref`) where `ref` is a tag or branch name instead of a 40-character commit SHA. A repo-takeover of the Action's publisher can re-point the tag to a malicious revision \u2014 the downstream repo consuming it will happily run the new code with `GITHUB_TOKEN` and write permissions. GitHub's April 2026 Security Roadmap ships Immutable Actions and makes SHA pinning the default policy.",
            "remediation": "Repin third-party Actions to a 40-character commit SHA and add a `# v1.2.3`-style trailing comment for humans. First-party Actions under `actions/` and `github/` are exempt (they now ship Immutable Actions). Dependabot will auto-bump SHA pins when `update-type: all` is set."
          }
        ],
        "execution_duration_seconds": 2.7286693349597044,
        "status": "complete",
        "examined": {
          "unit": "files",
          "count": 78
        },
        "metadata": {
          "source": "pypi",
          "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
          "report_type": "agent-audit-kit-sast",
          "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
          "rules_evaluated": 211,
          "severity_counts": {
            "low": 2,
            "high": 1,
            "medium": 8,
            "critical": 1,
            "informational": 0
          }
        },
        "display_score": 1.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "bearer",
        "scanner_version": "2.0.2",
        "score": 0.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "bearer",
            "severity": "critical",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 47,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in OS command",
            "description": "## Description\n\nIncorporating unsanitized dynamic input directly into operating system commands poses a significant security risk. This practice could give attackers the opportunity to execute harmful commands on your system.\n\n## Remediations\n\n- **Do** use static, hardcoded values in command strings - wherever possible - to avoid relying on dynamic data.\n  ```javascript\n  let filePattern = \"*.js\";\n  cp.exec(`cp ${filePattern} destinationFolder`, (error, stdout, stderr) => {});\n  ```\n- **Do** san",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 122,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 132,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 159,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 163,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/src/utils/aws.sso.cache.util.ts",
            "line_number": 55,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/src/utils/logger.util.ts",
            "line_number": 307,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/src/utils/response.util.ts",
            "line_number": 33,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "high",
            "category": null,
            "file_path": "/repo/src/utils/response.util.ts",
            "line_number": 34,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in file path",
            "description": "## Description\n\nAllowing unsanitized dynamic input in file paths can lead to unauthorized file and folder access. This vulnerability arises when dynamic data is used within the file system operations, potentially allowing attackers to access unauthorized or hidden files and folders.\n\n## Remediations\n\n- **Do** sanitize all dynamic data and function arguments before using them in file system operations. This step is crucial to prevent unauthorized access.\n- **Do** use a combination of hard-coded s",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "medium",
            "category": null,
            "file_path": "/repo/src/index.ts",
            "line_number": 116,
            "rule_identifier": null,
            "title": "Missing Helmet configuration on HTTP headers",
            "description": "## Description\n\nHelmet can help protect your app from some well-known web vulnerabilities by setting HTTP headers appropriately. Failing to configure Helmet for HTTP headers leaves your application vulnerable to several web attacks.\n\n## Remediations\n\n- **Do** use Helmet middleware to secure your app by adding it to your application's middleware.\n  ```javascript\n  const helmet = require(\"helmet\");\n  app.use(helmet());\n  ```\n\n## References\n\n- [Express Security Best Practices: Use Helmet](https://e",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "medium",
            "category": null,
            "file_path": "/repo/src/index.ts",
            "line_number": 116,
            "rule_identifier": null,
            "title": "Missing server configuration to reduce server fingerprinting",
            "description": "## Description\n\nReducing server fingerprinting enhances security by making it harder for attackers to identify the software your server is running. Server fingerprinting involves analyzing the unique responses of server software to specific requests, which can reveal information about the server's software and version. While not a direct security vulnerability, minimizing this information leakage is a proactive step to obscure details that could be used in targeted attacks.\n\n## Remediations\n\n- *",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "medium",
            "category": null,
            "file_path": "/repo/src/utils/logger.util.ts",
            "line_number": 110,
            "rule_identifier": null,
            "title": "Unsanitized dynamic input in regular expression",
            "description": "## Description\n\nCreating regular expressions from dynamic input can lead to a vulnerability known as Regular Expression Denial of Service (ReDoS). This issue arises because some regular expressions can be processed with exponential time complexity. When attackers exploit this, it can significantly drain CPU resources, effectively causing a denial of service.\n\n## Remediations\n\n- **Do** validate all dynamic and user-supplied input against a strict safelist of allowed characters before using it in ",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/retry.util.ts",
            "line_number": 75,
            "rule_identifier": null,
            "title": "Usage of insufficient random value",
            "description": "## Description\n\nUsing predictable random values compromises your application's security, particularly if these values serve security-related functions.\n\n## Remediations\n\n- **Do** use a robust library for generating random values to enhance security.\n  ```javascript\n  const crypto = require('crypto');\n  crypto.randomBytes(16).toString('hex');\n  ```",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/scripts/ensure-executable.js",
            "line_number": 26,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 35,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 83,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 127,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 136,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 173,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/scripts/update-version.js",
            "line_number": 202,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/aws.sso.accounts.cli.ts",
            "line_number": 58,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/aws.sso.auth.cli.ts",
            "line_number": 53,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/aws.sso.auth.cli.ts",
            "line_number": 90,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/aws.sso.ec2.cli.ts",
            "line_number": 74,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/aws.sso.ec2.cli.ts",
            "line_number": 79,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/aws.sso.exec.cli.ts",
            "line_number": 84,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/aws.sso.exec.cli.ts",
            "line_number": 89,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/cli/index.ts",
            "line_number": 67,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 33,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 59,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 66,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 72,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 73,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 81,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 84,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 85,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 99,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/cli.test.util.ts",
            "line_number": 119,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/error.util.ts",
            "line_number": 278,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/logger.util.ts",
            "line_number": 310,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/logger.util.ts",
            "line_number": 316,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          },
          {
            "tool_name": "bearer",
            "severity": "low",
            "category": null,
            "file_path": "/repo/src/utils/toon.util.ts",
            "line_number": 29,
            "rule_identifier": null,
            "title": "Leakage of information in logger message",
            "description": "## Description\n\nInformation leakage through logger messages can compromise sensitive data. This vulnerability arises when dynamic data or variables, which may contain sensitive information, are included in log messages.\n\n## Remediations\n\n- **Do not** include sensitive data directly in logger messages. This can lead to the exposure of such data in log files, which might be accessible to unauthorized individuals.\n  ```javascript\n  logger.info(`Results: ${data}`) // unsafe\n  ```\n- **Do** use loggin",
            "remediation": null
          }
        ],
        "execution_duration_seconds": 11.281380979984533,
        "status": "complete",
        "examined": {
          "unit": "files",
          "count": 62
        },
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/Bearer/bearer",
          "report_type": "security",
          "rules_loaded": 554,
          "install_command": "curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | sh -s -- -b /usr/local/bin \"v2.0.2\"",
          "severity_counts": {
            "low": 30,
            "high": 8,
            "medium": 3,
            "critical": 1,
            "informational": 0
          }
        },
        "display_score": 0.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "nerlo-behavioral",
        "scanner_version": "0.1.0",
        "score": 25.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/services/vendor.aws.sso.accounts.service.ts",
            "line_number": 101,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/services/vendor.aws.sso.accounts.service.ts",
            "line_number": 228,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/services/vendor.aws.sso.accounts.service.ts",
            "line_number": 434,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/services/vendor.aws.sso.ec2.service.ts",
            "line_number": 142,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/services/vendor.aws.sso.ec2.service.ts",
            "line_number": 198,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          }
        ],
        "execution_duration_seconds": 5.265694825036917,
        "status": "complete",
        "examined": {
          "unit": "files",
          "count": 62
        },
        "metadata": {
          "source": "nerlo-original",
          "source_url": "https://github.com/nerlo-ai/nerlo",
          "report_type": "nerlo-behavioral",
          "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
          "ruleset_paths": [
            "/opt/nerlo-rules/exfiltration.yaml",
            "/opt/nerlo-rules/clipboard_exfiltration.yaml",
            "/opt/nerlo-rules/rce_endpoint.yaml",
            "/opt/nerlo-rules/taint_egress.yaml"
          ],
          "install_command": "pip install 'semgrep==1.97.0'",
          "severity_counts": {
            "low": 0,
            "high": 5,
            "medium": 0,
            "critical": 0,
            "informational": 0
          },
          "merged_invocation": true
        },
        "display_score": 25.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "nerlo-install-instruction",
        "scanner_version": "0.1.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 5.268259931995999,
        "status": "complete",
        "examined": {
          "unit": "files",
          "count": 5
        },
        "metadata": {
          "source": "nerlo-original",
          "source_url": "https://github.com/nerlo-ai/nerlo",
          "report_type": "nerlo-install-instruction",
          "ruleset_path": "/opt/nerlo-rules/install_instructions.yaml",
          "ruleset_paths": [
            "/opt/nerlo-rules/install_instructions.yaml",
            "/opt/nerlo-rules/cursor_rules.yaml"
          ],
          "install_command": "pip install 'semgrep==1.97.0'",
          "merged_invocation": true
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "capslock",
        "scanner_version": "v0.3.2",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 0.1122392219840549,
        "status": "not_applicable",
        "examined": {
          "unit": "packages",
          "count": 0
        },
        "metadata": {
          "source": "go-module-proxy",
          "source_url": "https://github.com/google/capslock/releases/tag/v0.3.2",
          "report_type": "go-capability",
          "vendor_mode": false,
          "install_command": "GOTOOLCHAIN=local GOFLAGS=-mod=mod GOSUMDB=sum.golang.org GOBIN=/usr/local/bin go install github.com/google/capslock/cmd/capslock@v0.3.2  # github.com/google/capslock v0.3.2 h1:0ZQa9YR8s9ewFu1g5w6Rgd/lW/4dga7qJew3K6Ql7aM=",
          "environment_note": "capslock found no .go files to analyze; reported not_applicable rather than a clean 100 \u2014 the scanner never ran, so it has no verdict to contribute",
          "go_files_present": 0,
          "artifact_type_policy": "mcp_server",
          "expected_capabilities": [
            "CAPABILITY_FILES",
            "CAPABILITY_NETWORK",
            "CAPABILITY_READ_SYSTEM_STATE",
            "CAPABILITY_REFLECT",
            "CAPABILITY_RUNTIME"
          ],
          "artifact_type_explicit": true
        },
        "display_score": null,
        "display_badge": "not_applicable"
      }
    ]
  },
  "report": {
    "report_id": "e1167516-5bc6-4696-8f3e-4546f6ecd72a",
    "format": "json",
    "generated_at": "2026-08-12T12:11:29.853054+00:00",
    "scanner_filter": null,
    "signature": null
  }
}