{
  "executive_summary": {
    "badge": "Unsafe",
    "security_score": 45.46,
    "view": "composite",
    "scanner_badges": {
      "agentshield": "Verified",
      "cisco-skill-scanner": "Verified",
      "agent-audit-kit": "Unsafe",
      "bearer": "Verified",
      "nerlo-behavioral": "Verified",
      "nerlo-install-instruction": "Verified",
      "trivy": "Unsafe",
      "osv-scanner": "Unsafe"
    },
    "finding_counts": {
      "critical": 0,
      "high": 24,
      "medium": 30,
      "low": 8
    },
    "recommendation": "mcp-maven-deps is NOT recommended for integration: the scan surfaced 0 critical and 24 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/Bigsy/maven-mcp-server",
    "commit_sha_scanned": null,
    "license": "MIT",
    "maintainer": "",
    "name": "mcp-maven-deps",
    "version": "0.2.0"
  },
  "per_scanner_detail": [
    {
      "scanner_name": "agentshield",
      "scanner_version": "1.4.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 5.293934100001934,
      "status": "complete",
      "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": 87.5,
      "scanner_badge": "Verified",
      "findings": [
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "policy_violation",
          "file_path": "/repo",
          "line_number": null,
          "rule_identifier": "LOW_ANALYZABILITY",
          "title": "Moderate analyzability score",
          "description": "Only 76% of skill content could be analyzed. 2 of 10 files are opaque to the scanner. Some content could not be verified as safe.",
          "remediation": "Review opaque files and replace with inspectable formats where possible."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "social_engineering",
          "file_path": "/repo/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "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": "medium",
          "category": "data_exfiltration",
          "file_path": "/repo/test-maven-server.js",
          "line_number": 37,
          "rule_identifier": "DATA_EXFIL_JS_NETWORK",
          "title": "Outbound network request primitives in JavaScript/TypeScript",
          "description": "Pattern detected: axios.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        }
      ],
      "execution_duration_seconds": 31.527498908995767,
      "status": "complete",
      "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"
        ],
        "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
        "severity_counts": {
          "low": 1,
          "high": 0,
          "medium": 2,
          "critical": 0,
          "informational": 1
        }
      },
      "display_score": 87.5,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "agent-audit-kit",
      "scanner_version": "0.3.26",
      "score": 58.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "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": 424,
          "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": 19,
          "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": "high",
          "category": "supply-chain",
          "file_path": "package.json",
          "line_number": null,
          "rule_identifier": "AAK-DNS-REBIND-002",
          "title": "Vulnerable MCP SDK version pinned (DNS-rebinding fix missing)",
          "description": "A project dependency manifest (requirements.txt, pyproject.toml, package.json, pom.xml, build.gradle) pins an MCP SDK at a version below the DNS-rebinding fix. Patched versions: Python `mcp` >= 1.23.0, TS `@modelcontextprotocol/sdk` >= 1.21.1, Java `io.modelcontextprotocol.sdk:mcp-core` >= 0.11.0, `@apollo/mcp-server` >= 1.7.0. Even if the project never serves over StreamableHTTP itself, transitive servers built on the SDK inherit the bug.",
          "remediation": "Bump the SDK to the patched version listed in the rule title. If a bump is not yet possible, ensure every transport surface has its own Host-header allow-list (see AAK-DNS-REBIND-001 remediation)."
        }
      ],
      "execution_duration_seconds": 8.012450694994186,
      "status": "complete",
      "metadata": {
        "source": "pypi",
        "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
        "report_type": "agent-audit-kit-sast",
        "files_scanned": 9,
        "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
        "rules_evaluated": 211,
        "severity_counts": {
          "low": 1,
          "high": 2,
          "medium": 2,
          "critical": 0,
          "informational": 0
        }
      },
      "display_score": 58.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "bearer",
      "scanner_version": "2.0.2",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 9.578799732000334,
      "status": "complete",
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/Bearer/bearer",
        "report_type": "security",
        "rules_loaded": 1,
        "install_command": "curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | sh -s -- -b /usr/local/bin \"v2.0.2\""
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "nerlo-behavioral",
      "scanner_version": "0.1.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 41.070970585002215,
      "status": "complete",
      "metadata": {
        "source": "nerlo-original",
        "source_url": "https://github.com/nerlo-ai/nerlo",
        "report_type": "nerlo-behavioral",
        "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
        "files_scanned": 2,
        "install_command": "pip install 'semgrep==1.97.0'"
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "nerlo-install-instruction",
      "scanner_version": "0.1.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 40.933127019001404,
      "status": "complete",
      "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",
        "files_scanned": 1,
        "install_command": "pip install 'semgrep==1.97.0'"
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "trivy",
      "scanner_version": "0.71.0",
      "score": 0.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2025-66414",
          "title": "Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default",
          "description": "MCP TypeScript SDK is the official TypeScript SDK for Model Context Protocol servers and clients. Prior to 1.24.0, The Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default for HTTP-based servers. When an HTTP-based MCP server is run on localhost without authentication with StreamableHTTPServerTransport or SSEServerTransport and has not enabled enableDnsRebindingProtection, a malicious website could exploit DNS rebinding to bypass same-origin policy rest",
          "remediation": "Upgrade @modelcontextprotocol/sdk from 1.10.2 to 1.24.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-0621",
          "title": "Anthropic's MCP TypeScript SDK has a ReDoS vulnerability",
          "description": "Anthropic's MCP TypeScript SDK versions up to and including 1.25.1 contain a regular expression denial of service (ReDoS) vulnerability in the UriTemplate class when processing RFC 6570 exploded array patterns. The dynamically generated regular expression used during URI matching contains nested quantifiers that can trigger catastrophic backtracking on specially crafted inputs, resulting in excessive CPU consumption. An attacker can exploit this by supplying a malicious URI that causes the Node.",
          "remediation": "Upgrade @modelcontextprotocol/sdk from 1.10.2 to 1.25.2 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-25536",
          "title": "@modelcontextprotocol/sdk: @modelcontextprotocol/sdk cross-client data leak",
          "description": "MCP TypeScript SDK is the official TypeScript SDK for Model Context Protocol servers and clients. From version 1.10.0 to 1.25.3, cross-client response data leak when a single McpServer/Server and transport instance is reused across multiple client connections, most commonly in stateless StreamableHTTPServerTransport deployments. This issue has been patched in version 1.26.0.",
          "remediation": "Upgrade @modelcontextprotocol/sdk from 1.10.2 to 1.26.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44486",
          "title": "axios: Axios: Information disclosure of proxy credentials via HTTP redirects",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, Axios\u2019 Node.js HTTP adapter can leak proxy credentials to a redirect target in affected versions. When a request is sent through an authenticated proxy, Axios may add a Proxy-Authorization header. If Axios then follows a redirect and the redirected request is no longer sent through that proxy, the stale Proxy-Authorization header can remain on the redirected request and be sent to the redirect target. T",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44487",
          "title": "axios: Axios: Information disclosure of proxy credentials via redirect flows",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, Axios\u2019s Node.js HTTP adapter may forward a Proxy-Authorization header to a redirected origin during specific proxy-to-direct redirect flows. This affects Node.js usage, where an initial HTTP request is sent through an authenticated HTTP proxy, redirects are followed, and the redirected URL is no longer proxied. Under affected redirect shapes, the final origin can receive the proxy credential that was in",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44488",
          "title": "axios: Axios: Denial of Service due to unenforced request and response size limits",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. Axios versions 1.7.0 through 1.15.x did not enforce configured request and response size limits when requests were sent with the fetch adapter. Applications that selected adapter: 'fetch', or ran in environments where axios resolved to the fetch adapter, could receive or send bodies larger than maxContentLength or maxBodyLength despite those limits being explicitly configured. This can cause resource exhaustion in server-side usag",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44492",
          "title": "axios: Axios: Proxy bypass via IPv4-mapped IPv6 address non-normalization",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, Axios does not normalise IPv4-mapped IPv6 addresses. When NO_PROXY lists an IPv4 address such as 127.0.0.1 or 169.254.169.254, a request URL using the IPv4-mapped IPv6 form (::ffff:7f00:1, ::ffff:a9fe:a9fe) still routes through the configured proxy. Node.js resolves these addresses to the underlying IPv4 host, so the request reaches the internal service via the proxy rather than being blocked. This vuln",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44494",
          "title": "axios: Axios: Man-in-the-Middle (MITM) attack via Prototype Pollution",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. From 1.0.0 to before 1.16.0, the Axios library is vulnerable to a Prototype Pollution \"Gadget\" attack that allows any Object.prototype pollution in the application's dependency tree to be escalated into a full Man-in-the-Middle (MITM) attack \u2014 intercepting, reading, and modifying all HTTP traffic including authentication credentials. The HTTP adapter at lib/adapters/http.js:670 reads config.proxy via standard property access, whic",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44496",
          "title": "axios: Axios: Client-side Denial of Service via unescaped regex metacharacters in XSRF cookie name",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. Axios versions before 0.32.0 on the 0.x line and before 1.16.0 on the 1.x line build a regular expression from the configured XSRF cookie name without escaping regex metacharacters. In standard browser environments, an attacker who can influence the cookie name passed to axios can cause expensive regex backtracking while axios reads document.cookie. The practical impact is client-side availability degradation, such as freezing the",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-gcfj-64vw-6mp9",
          "title": "Axios Node HTTP adapter can use an inherited proxy after interceptor config cloning",
          "description": "## Summary\n\nAxios\u2019 Node.js HTTP adapter can route requests through an attacker-controlled proxy when `Object.prototype.proxy` is polluted and request configuration is materialized as a regular object before dispatch.\n\nRecent axios releases harden merged request config by creating a null-prototype object. However, request interceptors run after that merge and may return a replacement config. A common immutable interceptor pattern such as `{...config}` or `Object.assign({}, config)` converts the h",
          "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44490",
          "title": "axios: Axios: Information disclosure and denial of service due to prototype pollution",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, axios exposes two read-side prototype-pollution gadgets. When Object.prototype is polluted by an upstream dependency in the same process (e.g. lodash _.merge / CVE-2018-16487), axios silently picks up the polluted values. (1) lib/utils.js line 406 builds merge()'s accumulator as result = {}, so result[targetKey] (line 414) walks Object.prototype and the polluted bucket's own keys are copied into the mer",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-42h9-826w-cgv3",
          "title": "Axios: Excessive recursion in formDataToJSON can cause denial of service",
          "description": "## Summary\nAxios versions `0.28.0` and later contain uncontrolled recursion in `formDataToJSON`, the helper behind the public `axios.formToJSON()` / named `formToJSON` API and the default request transform used when FormData is sent with an `application/json` content type.\n\nApplications are affected when they pass attacker-controlled `FormData` field names into this functionality. A field name with thousands of nested bracket segments can exhaust the JavaScript call stack and throw `RangeError: ",
          "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-7q8q-rj6j-mhjq",
          "title": "Axios: Nested axios option objects can consume polluted prototype values",
          "description": "## Summary\n\nAxios can consume inherited properties from nested request option objects when the JavaScript process already has a polluted `Object.prototype`.\n\nThe top-level merged config is protected with a null prototype, but nested plain objects such as `auth` and `paramsSerializer` are cloned into ordinary objects. If application code passes placeholders such as `auth: {}` or `paramsSerializer: {}`, inherited `username`, `password`, `encode`, or `serialize` properties can influence outbound re",
          "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-f4gw-2p7v-4548",
          "title": "Axios: NO_PROXY bypass for 0.0.0.0 local addresses in axios",
          "description": "## Summary\n\nAxios versions containing `lib/helpers/shouldBypassProxy.js` do not treat `0.0.0.0` as a local address when evaluating `NO_PROXY` rules. In Node.js applications that use `HTTP_PROXY` or `HTTPS_PROXY` together with `NO_PROXY=localhost,127.0.0.1,::1` or similar, a request to `http://0.0.0.0:<port>/` can be routed through the configured proxy instead of bypassing it.\n\nThe issue is exploitable when an attacker can influence the axios request URL or a followed redirect target, and when th",
          "remediation": "Upgrade axios from 1.15.2 to 1.18.0, 0.33.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-hcpx-6fm6-wx23",
          "title": "Axios form serializer maxDepth bypass via {} metatoken",
          "description": "## Summary\n\nAxios versions in the fixed lines for GHSA-62hf-57xw-28j9 still contain an incomplete depth-limit bypass in `lib/helpers/toFormData.js`. When serializing an object with a top-level key ending in `{}`, axios calls `JSON.stringify()` on that value before the `formSerializer.maxDepth` guard can inspect the nested structure.\n\nAn attacker who can control object keys and nested values passed by an application into axios form or parameter serialization can trigger a raw `RangeError: Maximum",
          "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-jqh4-m9w3-8hp9",
          "title": "Axios: Fetch adapter `ReadableStream` uploads bypass `maxBodyLength`",
          "description": "## Summary\n\naxios\u2019 fetch adapter does not enforce `maxBodyLength` for live WHATWG `ReadableStream` request bodies whose size cannot be determined before dispatch. Applications that use `adapter: \"fetch\"` and rely on `maxBodyLength` to cap untrusted upload/proxy streams can send the full stream even when it exceeds the configured limit.\n\nThis affects fetch-adapter usage in edge runtimes where fetch is selected, and in Node.js or browser environments where the fetch adapter is explicitly selected.",
          "remediation": "Upgrade axios from 1.15.2 to 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-mmx7-hfxf-jppx",
          "title": "Axios: Prototype pollution gadgets can alter axios request construction",
          "description": "## Summary\n\naxios is vulnerable to read-side prototype-pollution gadgets when `Object.prototype` has already been polluted by another vulnerability or dependency. The most broadly reachable issue is in the bodyless method aliases: `axios.get()`, `axios.delete()`, `axios.head()`, and `axios.options()` read inherited `data` before config normalization, causing attacker-controlled body data to be sent on requests that did not explicitly set a body.\n\nAdditional low-level paths affect consumers that ",
          "remediation": "Upgrade axios from 1.15.2 to 1.18.0, 0.33.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-mwf2-3pr3-8698",
          "title": "Axios: HTTP/2 streamed uploads bypass `maxBodyLength`",
          "description": "## Summary\n\nAxios versions with Node.js HTTP/2 support allow streamed request bodies to bypass `maxBodyLength` enforcement when requests are sent with `httpVersion: 2`.\n\nThis affects applications that rely on `maxBodyLength` as a hard cap while forwarding attacker-controlled streams, such as upload endpoints proxying user data to an upstream HTTP/2 service. Buffered request bodies are still checked before the request is sent.\n\n## Impact\n\nAn attacker who can control a stream passed to axios can c",
          "remediation": "Upgrade axios from 1.15.2 to 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-pmv8-rq9r-6j72",
          "title": "Axios: Deep formToJSON Key Recursion Can Cause Denial of Service",
          "description": "## Summary\n\nAxios versions starting with `0.28.0` contain uncontrolled recursion in `formDataToJSON`, which is exposed as `axios.formToJSON()` and used internally when axios serialises `FormData` with `Content-Type: application/json`.\n\nIf an application passes attacker-controlled `FormData` field names to this functionality, a field name with thousands of nested bracket segments can exhaust the JavaScript call stack and cause denial of service for that request or, in applications without appropr",
          "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-xj6q-8x83-jv6g",
          "title": "Axios: Prototype pollution auth subfields can inject Basic auth",
          "description": "## Summary\n\nAxios versions after the `GHSA-q8qp-cvcw-x6jj` fix still contain prototype-pollution read-side gadgets in Basic auth subfield handling. If a host application is already affected by prototype pollution and then makes an axios request with an own `auth` object that omits `username` or `password`, axios reads inherited `Object.prototype.username` and `Object.prototype.password` values and uses them to construct an outbound `Authorization: Basic ...` header.\n\nThis does not mean axios its",
          "remediation": "Upgrade axios from 1.15.2 to 1.18.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "low",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-44489",
          "title": "axios: Axios: Information disclosure via Prototype Pollution",
          "description": "Axios is a promise based HTTP client for the browser and Node.js. From 1.15.2 to before 1.16.0, nested objects created by utils.merge() (e.g., config.proxy) are still constructed as plain {} with Object.prototype in their chain. The setProxy() function at lib/adapters/http.js:209-223 reads proxy.username, proxy.password, and proxy.auth without hasOwnProperty checks. When Object.prototype.username is polluted, setProxy() constructs a Proxy-Authorization header with attacker-controlled credentials",
          "remediation": "Upgrade axios from 1.15.2 to 1.16.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "low",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-12590",
          "title": "body-parser: body-parser: Denial of Service via invalid limit option",
          "description": "Impact: In body-parser versions prior to 1.20.6 (1.x line) and 2.3.0 (2.x line), when the parser is configured with an invalid limit option value such as an unparseable string or NaN, bytes.parse returns null and the request body size check is silently skipped. Applications that rely on limit as their primary safeguard against oversized request bodies will accept arbitrarily large payloads, leading to excessive memory and CPU usage and denial of service. Patches: This issue is fixed in body-pars",
          "remediation": "Upgrade body-parser from 1.20.5 to 1.20.6, 2.3.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "low",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-12590",
          "title": "body-parser: body-parser: Denial of Service via invalid limit option",
          "description": "Impact: In body-parser versions prior to 1.20.6 (1.x line) and 2.3.0 (2.x line), when the parser is configured with an invalid limit option value such as an unparseable string or NaN, bytes.parse returns null and the request body size check is silently skipped. Applications that rely on limit as their primary safeguard against oversized request bodies will accept arbitrarily large payloads, leading to excessive memory and CPU usage and denial of service. Patches: This issue is fixed in body-pars",
          "remediation": "Upgrade body-parser from 2.2.2 to 1.20.6, 2.3.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-41650",
          "title": "fast-xml-parser: fast-xml-parser: XML injection via improper escaping of comment and CDATA sequences",
          "description": "fast-xml-parser allows users to process XML from JS object without C/C++ based libraries or callbacks. Prior to version 5.7.0, XMLBuilder does not escape the \"-->\" sequence in comment content or the \"]]>\" sequence in CDATA sections when building XML from JavaScript objects. This allows XML injection when user-controlled data flows into comments or CDATA elements, leading to XSS, SOAP injection, or data manipulation. This issue has been patched in version 5.7.0.",
          "remediation": "Upgrade fast-xml-parser from 4.5.6 to 5.7.0 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "high",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-12143",
          "title": "form-data: form-data: Form field override via CRLF injection",
          "description": "form-data is a library for creating readable multipart/form-data streams. In versions through 4.0.5, the `field` argument to `FormData#append` and the `filename` option are concatenated verbatim into the `Content-Disposition` header without escaping carriage return (CR), line feed (LF), or double-quote (\") characters. An application that passes attacker-controlled data as a field name or filename (for example, an API gateway that turns JSON object keys into multipart field names) allows the atta",
          "remediation": "Upgrade form-data from 4.0.5 to 2.5.6, 3.0.5, 4.0.6 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-8723",
          "title": "### Summary    `qs.stringify` throws `TypeError` when called with `arr ...",
          "description": "### Summary\n\n\n\n`qs.stringify` throws `TypeError` when called with `arrayFormat: 'comma'` and `encodeValuesOnly: true` on an array containing `null` or `undefined`. The throw is synchronous and not handled by any of qs's null-related options (`skipNulls`, `strictNullHandling`).\n\n\n\n### Details\n\n\n\nIn the comma + `encodeValuesOnly` branch, `lib/stringify.js:145` mapped the array through the raw encoder before joining:\n\n\n\n```js\n\n\n\nobj = utils.maybeMap(obj, encoder);\n\n\n\n```\n\n\n\n`utils.encode` (`lib/uti",
          "remediation": "Upgrade qs from 6.14.2 to 6.15.2 or later"
        },
        {
          "tool_name": "trivy",
          "severity": "medium",
          "category": "npm",
          "file_path": "package-lock.json",
          "line_number": null,
          "rule_identifier": "CVE-2026-8723",
          "title": "### Summary    `qs.stringify` throws `TypeError` when called with `arr ...",
          "description": "### Summary\n\n\n\n`qs.stringify` throws `TypeError` when called with `arrayFormat: 'comma'` and `encodeValuesOnly: true` on an array containing `null` or `undefined`. The throw is synchronous and not handled by any of qs's null-related options (`skipNulls`, `strictNullHandling`).\n\n\n\n### Details\n\n\n\nIn the comma + `encodeValuesOnly` branch, `lib/stringify.js:145` mapped the array through the raw encoder before joining:\n\n\n\n```js\n\n\n\nobj = utils.maybeMap(obj, encoder);\n\n\n\n```\n\n\n\n`utils.encode` (`lib/uti",
          "remediation": "Upgrade qs from 6.15.1 to 6.15.2 or later"
        }
      ],
      "execution_duration_seconds": 1.3479368359985529,
      "status": "complete",
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/aquasecurity/trivy/releases/tag/v0.71.0",
        "report_type": "filesystem-vulnerability",
        "install_command": "curl -sfL -o /tmp/trivy.deb https://github.com/aquasecurity/trivy/releases/download/v0.71.0/trivy_0.71.0_Linux-64bit.deb && echo '<sha256>  /tmp/trivy.deb' | sha256sum -c - && dpkg -i /tmp/trivy.deb",
        "severity_counts": {
          "low": 3,
          "high": 11,
          "medium": 13,
          "critical": 0,
          "informational": 0
        },
        "manifests_scanned": [
          "package-lock.json"
        ]
      },
      "display_score": 0.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "osv-scanner",
      "scanner_version": "2.3.8",
      "score": 0.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-345p-7cg4-v4c7",
          "title": "GHSA-345p-7cg4-v4c7 \u2014 npm @modelcontextprotocol/sdk@1.10.2",
          "description": "aliases: CVE-2026-25536, GHSA-345p-7cg4-v4c7 | CVSS: 7.1",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-8r9q-7v3j-jr4g",
          "title": "GHSA-8r9q-7v3j-jr4g \u2014 npm @modelcontextprotocol/sdk@1.10.2",
          "description": "aliases: CVE-2026-0621, GHSA-8r9q-7v3j-jr4g | CVSS: 8.7",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-w48q-cv73-mx4w",
          "title": "GHSA-w48q-cv73-mx4w \u2014 npm @modelcontextprotocol/sdk@1.10.2",
          "description": "aliases: CVE-2025-66414, GHSA-w48q-cv73-mx4w | CVSS: 7.6",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-35jp-ww65-95wh",
          "title": "GHSA-35jp-ww65-95wh \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44494, GHSA-35jp-ww65-95wh | CVSS: 8.7",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-42h9-826w-cgv3",
          "title": "GHSA-42h9-826w-cgv3 \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-42h9-826w-cgv3 | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "low",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-654m-c8p4-x5fp",
          "title": "GHSA-654m-c8p4-x5fp \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44489, GHSA-654m-c8p4-x5fp | CVSS: 3.7",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-777c-7fjr-54vf",
          "title": "GHSA-777c-7fjr-54vf \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44488, GHSA-777c-7fjr-54vf | CVSS: 7.5",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-7q8q-rj6j-mhjq",
          "title": "GHSA-7q8q-rj6j-mhjq \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-7q8q-rj6j-mhjq | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-898c-q2cr-xwhg",
          "title": "GHSA-898c-q2cr-xwhg \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44490, GHSA-898c-q2cr-xwhg | CVSS: 4.8",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-f4gw-2p7v-4548",
          "title": "GHSA-f4gw-2p7v-4548 \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-f4gw-2p7v-4548 | CVSS: 6.9",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-gcfj-64vw-6mp9",
          "title": "GHSA-gcfj-64vw-6mp9 \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-gcfj-64vw-6mp9 | CVSS: 8.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-hcpx-6fm6-wx23",
          "title": "GHSA-hcpx-6fm6-wx23 \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-hcpx-6fm6-wx23 | CVSS: 6.9",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-hfxv-24rg-xrqf",
          "title": "GHSA-hfxv-24rg-xrqf \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44496, GHSA-hfxv-24rg-xrqf | CVSS: 7.5",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-j5f8-grm9-p9fc",
          "title": "GHSA-j5f8-grm9-p9fc \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44486, GHSA-j5f8-grm9-p9fc | CVSS: 7.5",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-jqh4-m9w3-8hp9",
          "title": "GHSA-jqh4-m9w3-8hp9 \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-jqh4-m9w3-8hp9 | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-mmx7-hfxf-jppx",
          "title": "GHSA-mmx7-hfxf-jppx \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-mmx7-hfxf-jppx | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-mwf2-3pr3-8698",
          "title": "GHSA-mwf2-3pr3-8698 \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-mwf2-3pr3-8698 | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-p92q-9vqr-4j8v",
          "title": "GHSA-p92q-9vqr-4j8v \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44487, GHSA-p92q-9vqr-4j8v | CVSS: 8.2",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-pjwm-pj3p-43mv",
          "title": "GHSA-pjwm-pj3p-43mv \u2014 npm axios@1.15.2",
          "description": "aliases: CVE-2026-44492, GHSA-pjwm-pj3p-43mv | CVSS: 8.6",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-pmv8-rq9r-6j72",
          "title": "GHSA-pmv8-rq9r-6j72 \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-pmv8-rq9r-6j72 | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-xj6q-8x83-jv6g",
          "title": "GHSA-xj6q-8x83-jv6g \u2014 npm axios@1.15.2",
          "description": "aliases: GHSA-xj6q-8x83-jv6g | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "low",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-v422-hmwv-36x6",
          "title": "GHSA-v422-hmwv-36x6 \u2014 npm body-parser@1.20.5",
          "description": "aliases: CVE-2026-12590, GHSA-v422-hmwv-36x6 | CVSS: 3.7",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "low",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-v422-hmwv-36x6",
          "title": "GHSA-v422-hmwv-36x6 \u2014 npm body-parser@2.2.2",
          "description": "aliases: CVE-2026-12590, GHSA-v422-hmwv-36x6 | CVSS: 3.7",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-gh4j-gqv2-49f6",
          "title": "GHSA-gh4j-gqv2-49f6 \u2014 npm fast-xml-parser@4.5.6",
          "description": "aliases: CVE-2026-41650, GHSA-gh4j-gqv2-49f6 | CVSS: 6.1",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "high",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-hmw2-7cc7-3qxx",
          "title": "GHSA-hmw2-7cc7-3qxx \u2014 npm form-data@4.0.5",
          "description": "aliases: CVE-2026-12143, GHSA-hmw2-7cc7-3qxx | CVSS: 8.7",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-q8mj-m7cp-5q26",
          "title": "GHSA-q8mj-m7cp-5q26 \u2014 npm qs@6.14.2",
          "description": "aliases: CVE-2026-8723, GHSA-q8mj-m7cp-5q26 | CVSS: 6.3",
          "remediation": null
        },
        {
          "tool_name": "osv-scanner",
          "severity": "medium",
          "category": "npm",
          "file_path": "/repo/package-lock.json",
          "line_number": null,
          "rule_identifier": "GHSA-q8mj-m7cp-5q26",
          "title": "GHSA-q8mj-m7cp-5q26 \u2014 npm qs@6.15.1",
          "description": "aliases: CVE-2026-8723, GHSA-q8mj-m7cp-5q26 | CVSS: 6.3",
          "remediation": null
        }
      ],
      "execution_duration_seconds": 24.903026107989717,
      "status": "complete",
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/google/osv-scanner/releases/tag/v2.3.8",
        "report_type": "osv-vulnerability",
        "ecosystems_seen": [
          "npm"
        ],
        "install_command": "curl -sfL -o /usr/local/bin/osv-scanner https://github.com/google/osv-scanner/releases/download/v2.3.8/osv-scanner_linux_amd64 && echo '<sha256>  /usr/local/bin/osv-scanner' | sha256sum -c - && chmod +x /usr/local/bin/osv-scanner",
        "severity_counts": {
          "low": 3,
          "high": 11,
          "medium": 13,
          "critical": 0,
          "informational": 0
        },
        "manifests_scanned": [
          "/repo/package-lock.json"
        ],
        "finding_id_aliases": {
          "GHSA-345p-7cg4-v4c7": [
            "CVE-2026-25536"
          ],
          "GHSA-35jp-ww65-95wh": [
            "CVE-2026-44494"
          ],
          "GHSA-654m-c8p4-x5fp": [
            "CVE-2026-44489"
          ],
          "GHSA-777c-7fjr-54vf": [
            "CVE-2026-44488"
          ],
          "GHSA-898c-q2cr-xwhg": [
            "CVE-2026-44490"
          ],
          "GHSA-8r9q-7v3j-jr4g": [
            "CVE-2026-0621"
          ],
          "GHSA-gh4j-gqv2-49f6": [
            "CVE-2026-41650"
          ],
          "GHSA-hfxv-24rg-xrqf": [
            "CVE-2026-44496"
          ],
          "GHSA-hmw2-7cc7-3qxx": [
            "CVE-2026-12143"
          ],
          "GHSA-j5f8-grm9-p9fc": [
            "CVE-2026-44486"
          ],
          "GHSA-p92q-9vqr-4j8v": [
            "CVE-2026-44487"
          ],
          "GHSA-pjwm-pj3p-43mv": [
            "CVE-2026-44492"
          ],
          "GHSA-q8mj-m7cp-5q26": [
            "CVE-2026-8723",
            "CVE-2026-8723"
          ],
          "GHSA-v422-hmwv-36x6": [
            "CVE-2026-12590",
            "CVE-2026-12590"
          ],
          "GHSA-w48q-cv73-mx4w": [
            "CVE-2025-66414"
          ]
        },
        "cross_scanner_correlation": {
          "only_osv": [],
          "only_trivy": [],
          "intersection_ids": [
            "CVE-2025-66414",
            "CVE-2026-0621",
            "CVE-2026-12143",
            "CVE-2026-12590",
            "CVE-2026-25536",
            "CVE-2026-41650",
            "CVE-2026-44486",
            "CVE-2026-44487",
            "CVE-2026-44488",
            "CVE-2026-44489",
            "CVE-2026-44490",
            "CVE-2026-44492",
            "CVE-2026-44494",
            "CVE-2026-44496",
            "CVE-2026-8723",
            "GHSA-42h9-826w-cgv3",
            "GHSA-7q8q-rj6j-mhjq",
            "GHSA-f4gw-2p7v-4548",
            "GHSA-gcfj-64vw-6mp9",
            "GHSA-hcpx-6fm6-wx23",
            "GHSA-jqh4-m9w3-8hp9",
            "GHSA-mmx7-hfxf-jppx",
            "GHSA-mwf2-3pr3-8698",
            "GHSA-pmv8-rq9r-6j72",
            "GHSA-xj6q-8x83-jv6g"
          ]
        }
      },
      "display_score": 0.0,
      "display_badge": "Unsafe"
    }
  ],
  "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": "a78b2481-3080-4036-b12d-fbcc7c8fb62f",
    "scan_completed_at": "2026-07-21T02:37:55.260427+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",
      "trivy": "0.71.0",
      "osv-scanner": "2.3.8"
    },
    "scanner_base_image": "us-central1-docker.pkg.dev/nerlo-vsk-prod/nerlo/scanner-base@sha256:ac300419a26e15cb906916e2759c49bb596a6a31f003e07912269b271f91dfc9",
    "ai_decision_log_ids": [
      "be431981-1554-492e-a8db-6df3e77e73d4"
    ],
    "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": 5.293934100001934,
        "status": "complete",
        "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": 87.5,
        "scanner_badge": "Verified",
        "findings": [
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "policy_violation",
            "file_path": "/repo",
            "line_number": null,
            "rule_identifier": "LOW_ANALYZABILITY",
            "title": "Moderate analyzability score",
            "description": "Only 76% of skill content could be analyzed. 2 of 10 files are opaque to the scanner. Some content could not be verified as safe.",
            "remediation": "Review opaque files and replace with inspectable formats where possible."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "social_engineering",
            "file_path": "/repo/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "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": "medium",
            "category": "data_exfiltration",
            "file_path": "/repo/test-maven-server.js",
            "line_number": 37,
            "rule_identifier": "DATA_EXFIL_JS_NETWORK",
            "title": "Outbound network request primitives in JavaScript/TypeScript",
            "description": "Pattern detected: axios.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          }
        ],
        "execution_duration_seconds": 31.527498908995767,
        "status": "complete",
        "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"
          ],
          "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
          "severity_counts": {
            "low": 1,
            "high": 0,
            "medium": 2,
            "critical": 0,
            "informational": 1
          }
        },
        "display_score": 87.5,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "agent-audit-kit",
        "scanner_version": "0.3.26",
        "score": 58.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "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": 424,
            "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": 19,
            "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": "high",
            "category": "supply-chain",
            "file_path": "package.json",
            "line_number": null,
            "rule_identifier": "AAK-DNS-REBIND-002",
            "title": "Vulnerable MCP SDK version pinned (DNS-rebinding fix missing)",
            "description": "A project dependency manifest (requirements.txt, pyproject.toml, package.json, pom.xml, build.gradle) pins an MCP SDK at a version below the DNS-rebinding fix. Patched versions: Python `mcp` >= 1.23.0, TS `@modelcontextprotocol/sdk` >= 1.21.1, Java `io.modelcontextprotocol.sdk:mcp-core` >= 0.11.0, `@apollo/mcp-server` >= 1.7.0. Even if the project never serves over StreamableHTTP itself, transitive servers built on the SDK inherit the bug.",
            "remediation": "Bump the SDK to the patched version listed in the rule title. If a bump is not yet possible, ensure every transport surface has its own Host-header allow-list (see AAK-DNS-REBIND-001 remediation)."
          }
        ],
        "execution_duration_seconds": 8.012450694994186,
        "status": "complete",
        "metadata": {
          "source": "pypi",
          "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
          "report_type": "agent-audit-kit-sast",
          "files_scanned": 9,
          "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
          "rules_evaluated": 211,
          "severity_counts": {
            "low": 1,
            "high": 2,
            "medium": 2,
            "critical": 0,
            "informational": 0
          }
        },
        "display_score": 58.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "bearer",
        "scanner_version": "2.0.2",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 9.578799732000334,
        "status": "complete",
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/Bearer/bearer",
          "report_type": "security",
          "rules_loaded": 1,
          "install_command": "curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | sh -s -- -b /usr/local/bin \"v2.0.2\""
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "nerlo-behavioral",
        "scanner_version": "0.1.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 41.070970585002215,
        "status": "complete",
        "metadata": {
          "source": "nerlo-original",
          "source_url": "https://github.com/nerlo-ai/nerlo",
          "report_type": "nerlo-behavioral",
          "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
          "files_scanned": 2,
          "install_command": "pip install 'semgrep==1.97.0'"
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "nerlo-install-instruction",
        "scanner_version": "0.1.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 40.933127019001404,
        "status": "complete",
        "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",
          "files_scanned": 1,
          "install_command": "pip install 'semgrep==1.97.0'"
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "trivy",
        "scanner_version": "0.71.0",
        "score": 0.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2025-66414",
            "title": "Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default",
            "description": "MCP TypeScript SDK is the official TypeScript SDK for Model Context Protocol servers and clients. Prior to 1.24.0, The Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default for HTTP-based servers. When an HTTP-based MCP server is run on localhost without authentication with StreamableHTTPServerTransport or SSEServerTransport and has not enabled enableDnsRebindingProtection, a malicious website could exploit DNS rebinding to bypass same-origin policy rest",
            "remediation": "Upgrade @modelcontextprotocol/sdk from 1.10.2 to 1.24.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-0621",
            "title": "Anthropic's MCP TypeScript SDK has a ReDoS vulnerability",
            "description": "Anthropic's MCP TypeScript SDK versions up to and including 1.25.1 contain a regular expression denial of service (ReDoS) vulnerability in the UriTemplate class when processing RFC 6570 exploded array patterns. The dynamically generated regular expression used during URI matching contains nested quantifiers that can trigger catastrophic backtracking on specially crafted inputs, resulting in excessive CPU consumption. An attacker can exploit this by supplying a malicious URI that causes the Node.",
            "remediation": "Upgrade @modelcontextprotocol/sdk from 1.10.2 to 1.25.2 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-25536",
            "title": "@modelcontextprotocol/sdk: @modelcontextprotocol/sdk cross-client data leak",
            "description": "MCP TypeScript SDK is the official TypeScript SDK for Model Context Protocol servers and clients. From version 1.10.0 to 1.25.3, cross-client response data leak when a single McpServer/Server and transport instance is reused across multiple client connections, most commonly in stateless StreamableHTTPServerTransport deployments. This issue has been patched in version 1.26.0.",
            "remediation": "Upgrade @modelcontextprotocol/sdk from 1.10.2 to 1.26.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44486",
            "title": "axios: Axios: Information disclosure of proxy credentials via HTTP redirects",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, Axios\u2019 Node.js HTTP adapter can leak proxy credentials to a redirect target in affected versions. When a request is sent through an authenticated proxy, Axios may add a Proxy-Authorization header. If Axios then follows a redirect and the redirected request is no longer sent through that proxy, the stale Proxy-Authorization header can remain on the redirected request and be sent to the redirect target. T",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44487",
            "title": "axios: Axios: Information disclosure of proxy credentials via redirect flows",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, Axios\u2019s Node.js HTTP adapter may forward a Proxy-Authorization header to a redirected origin during specific proxy-to-direct redirect flows. This affects Node.js usage, where an initial HTTP request is sent through an authenticated HTTP proxy, redirects are followed, and the redirected URL is no longer proxied. Under affected redirect shapes, the final origin can receive the proxy credential that was in",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44488",
            "title": "axios: Axios: Denial of Service due to unenforced request and response size limits",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. Axios versions 1.7.0 through 1.15.x did not enforce configured request and response size limits when requests were sent with the fetch adapter. Applications that selected adapter: 'fetch', or ran in environments where axios resolved to the fetch adapter, could receive or send bodies larger than maxContentLength or maxBodyLength despite those limits being explicitly configured. This can cause resource exhaustion in server-side usag",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44492",
            "title": "axios: Axios: Proxy bypass via IPv4-mapped IPv6 address non-normalization",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, Axios does not normalise IPv4-mapped IPv6 addresses. When NO_PROXY lists an IPv4 address such as 127.0.0.1 or 169.254.169.254, a request URL using the IPv4-mapped IPv6 form (::ffff:7f00:1, ::ffff:a9fe:a9fe) still routes through the configured proxy. Node.js resolves these addresses to the underlying IPv4 host, so the request reaches the internal service via the proxy rather than being blocked. This vuln",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44494",
            "title": "axios: Axios: Man-in-the-Middle (MITM) attack via Prototype Pollution",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. From 1.0.0 to before 1.16.0, the Axios library is vulnerable to a Prototype Pollution \"Gadget\" attack that allows any Object.prototype pollution in the application's dependency tree to be escalated into a full Man-in-the-Middle (MITM) attack \u2014 intercepting, reading, and modifying all HTTP traffic including authentication credentials. The HTTP adapter at lib/adapters/http.js:670 reads config.proxy via standard property access, whic",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44496",
            "title": "axios: Axios: Client-side Denial of Service via unescaped regex metacharacters in XSRF cookie name",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. Axios versions before 0.32.0 on the 0.x line and before 1.16.0 on the 1.x line build a regular expression from the configured XSRF cookie name without escaping regex metacharacters. In standard browser environments, an attacker who can influence the cookie name passed to axios can cause expensive regex backtracking while axios reads document.cookie. The practical impact is client-side availability degradation, such as freezing the",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-gcfj-64vw-6mp9",
            "title": "Axios Node HTTP adapter can use an inherited proxy after interceptor config cloning",
            "description": "## Summary\n\nAxios\u2019 Node.js HTTP adapter can route requests through an attacker-controlled proxy when `Object.prototype.proxy` is polluted and request configuration is materialized as a regular object before dispatch.\n\nRecent axios releases harden merged request config by creating a null-prototype object. However, request interceptors run after that merge and may return a replacement config. A common immutable interceptor pattern such as `{...config}` or `Object.assign({}, config)` converts the h",
            "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44490",
            "title": "axios: Axios: Information disclosure and denial of service due to prototype pollution",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 0.32.0 and 1.16.0, axios exposes two read-side prototype-pollution gadgets. When Object.prototype is polluted by an upstream dependency in the same process (e.g. lodash _.merge / CVE-2018-16487), axios silently picks up the polluted values. (1) lib/utils.js line 406 builds merge()'s accumulator as result = {}, so result[targetKey] (line 414) walks Object.prototype and the polluted bucket's own keys are copied into the mer",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0, 0.32.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-42h9-826w-cgv3",
            "title": "Axios: Excessive recursion in formDataToJSON can cause denial of service",
            "description": "## Summary\nAxios versions `0.28.0` and later contain uncontrolled recursion in `formDataToJSON`, the helper behind the public `axios.formToJSON()` / named `formToJSON` API and the default request transform used when FormData is sent with an `application/json` content type.\n\nApplications are affected when they pass attacker-controlled `FormData` field names into this functionality. A field name with thousands of nested bracket segments can exhaust the JavaScript call stack and throw `RangeError: ",
            "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-7q8q-rj6j-mhjq",
            "title": "Axios: Nested axios option objects can consume polluted prototype values",
            "description": "## Summary\n\nAxios can consume inherited properties from nested request option objects when the JavaScript process already has a polluted `Object.prototype`.\n\nThe top-level merged config is protected with a null prototype, but nested plain objects such as `auth` and `paramsSerializer` are cloned into ordinary objects. If application code passes placeholders such as `auth: {}` or `paramsSerializer: {}`, inherited `username`, `password`, `encode`, or `serialize` properties can influence outbound re",
            "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-f4gw-2p7v-4548",
            "title": "Axios: NO_PROXY bypass for 0.0.0.0 local addresses in axios",
            "description": "## Summary\n\nAxios versions containing `lib/helpers/shouldBypassProxy.js` do not treat `0.0.0.0` as a local address when evaluating `NO_PROXY` rules. In Node.js applications that use `HTTP_PROXY` or `HTTPS_PROXY` together with `NO_PROXY=localhost,127.0.0.1,::1` or similar, a request to `http://0.0.0.0:<port>/` can be routed through the configured proxy instead of bypassing it.\n\nThe issue is exploitable when an attacker can influence the axios request URL or a followed redirect target, and when th",
            "remediation": "Upgrade axios from 1.15.2 to 1.18.0, 0.33.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-hcpx-6fm6-wx23",
            "title": "Axios form serializer maxDepth bypass via {} metatoken",
            "description": "## Summary\n\nAxios versions in the fixed lines for GHSA-62hf-57xw-28j9 still contain an incomplete depth-limit bypass in `lib/helpers/toFormData.js`. When serializing an object with a top-level key ending in `{}`, axios calls `JSON.stringify()` on that value before the `formSerializer.maxDepth` guard can inspect the nested structure.\n\nAn attacker who can control object keys and nested values passed by an application into axios form or parameter serialization can trigger a raw `RangeError: Maximum",
            "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-jqh4-m9w3-8hp9",
            "title": "Axios: Fetch adapter `ReadableStream` uploads bypass `maxBodyLength`",
            "description": "## Summary\n\naxios\u2019 fetch adapter does not enforce `maxBodyLength` for live WHATWG `ReadableStream` request bodies whose size cannot be determined before dispatch. Applications that use `adapter: \"fetch\"` and rely on `maxBodyLength` to cap untrusted upload/proxy streams can send the full stream even when it exceeds the configured limit.\n\nThis affects fetch-adapter usage in edge runtimes where fetch is selected, and in Node.js or browser environments where the fetch adapter is explicitly selected.",
            "remediation": "Upgrade axios from 1.15.2 to 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-mmx7-hfxf-jppx",
            "title": "Axios: Prototype pollution gadgets can alter axios request construction",
            "description": "## Summary\n\naxios is vulnerable to read-side prototype-pollution gadgets when `Object.prototype` has already been polluted by another vulnerability or dependency. The most broadly reachable issue is in the bodyless method aliases: `axios.get()`, `axios.delete()`, `axios.head()`, and `axios.options()` read inherited `data` before config normalization, causing attacker-controlled body data to be sent on requests that did not explicitly set a body.\n\nAdditional low-level paths affect consumers that ",
            "remediation": "Upgrade axios from 1.15.2 to 1.18.0, 0.33.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-mwf2-3pr3-8698",
            "title": "Axios: HTTP/2 streamed uploads bypass `maxBodyLength`",
            "description": "## Summary\n\nAxios versions with Node.js HTTP/2 support allow streamed request bodies to bypass `maxBodyLength` enforcement when requests are sent with `httpVersion: 2`.\n\nThis affects applications that rely on `maxBodyLength` as a hard cap while forwarding attacker-controlled streams, such as upload endpoints proxying user data to an upstream HTTP/2 service. Buffered request bodies are still checked before the request is sent.\n\n## Impact\n\nAn attacker who can control a stream passed to axios can c",
            "remediation": "Upgrade axios from 1.15.2 to 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-pmv8-rq9r-6j72",
            "title": "Axios: Deep formToJSON Key Recursion Can Cause Denial of Service",
            "description": "## Summary\n\nAxios versions starting with `0.28.0` contain uncontrolled recursion in `formDataToJSON`, which is exposed as `axios.formToJSON()` and used internally when axios serialises `FormData` with `Content-Type: application/json`.\n\nIf an application passes attacker-controlled `FormData` field names to this functionality, a field name with thousands of nested bracket segments can exhaust the JavaScript call stack and cause denial of service for that request or, in applications without appropr",
            "remediation": "Upgrade axios from 1.15.2 to 0.33.0, 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-xj6q-8x83-jv6g",
            "title": "Axios: Prototype pollution auth subfields can inject Basic auth",
            "description": "## Summary\n\nAxios versions after the `GHSA-q8qp-cvcw-x6jj` fix still contain prototype-pollution read-side gadgets in Basic auth subfield handling. If a host application is already affected by prototype pollution and then makes an axios request with an own `auth` object that omits `username` or `password`, axios reads inherited `Object.prototype.username` and `Object.prototype.password` values and uses them to construct an outbound `Authorization: Basic ...` header.\n\nThis does not mean axios its",
            "remediation": "Upgrade axios from 1.15.2 to 1.18.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "low",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-44489",
            "title": "axios: Axios: Information disclosure via Prototype Pollution",
            "description": "Axios is a promise based HTTP client for the browser and Node.js. From 1.15.2 to before 1.16.0, nested objects created by utils.merge() (e.g., config.proxy) are still constructed as plain {} with Object.prototype in their chain. The setProxy() function at lib/adapters/http.js:209-223 reads proxy.username, proxy.password, and proxy.auth without hasOwnProperty checks. When Object.prototype.username is polluted, setProxy() constructs a Proxy-Authorization header with attacker-controlled credentials",
            "remediation": "Upgrade axios from 1.15.2 to 1.16.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "low",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-12590",
            "title": "body-parser: body-parser: Denial of Service via invalid limit option",
            "description": "Impact: In body-parser versions prior to 1.20.6 (1.x line) and 2.3.0 (2.x line), when the parser is configured with an invalid limit option value such as an unparseable string or NaN, bytes.parse returns null and the request body size check is silently skipped. Applications that rely on limit as their primary safeguard against oversized request bodies will accept arbitrarily large payloads, leading to excessive memory and CPU usage and denial of service. Patches: This issue is fixed in body-pars",
            "remediation": "Upgrade body-parser from 1.20.5 to 1.20.6, 2.3.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "low",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-12590",
            "title": "body-parser: body-parser: Denial of Service via invalid limit option",
            "description": "Impact: In body-parser versions prior to 1.20.6 (1.x line) and 2.3.0 (2.x line), when the parser is configured with an invalid limit option value such as an unparseable string or NaN, bytes.parse returns null and the request body size check is silently skipped. Applications that rely on limit as their primary safeguard against oversized request bodies will accept arbitrarily large payloads, leading to excessive memory and CPU usage and denial of service. Patches: This issue is fixed in body-pars",
            "remediation": "Upgrade body-parser from 2.2.2 to 1.20.6, 2.3.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-41650",
            "title": "fast-xml-parser: fast-xml-parser: XML injection via improper escaping of comment and CDATA sequences",
            "description": "fast-xml-parser allows users to process XML from JS object without C/C++ based libraries or callbacks. Prior to version 5.7.0, XMLBuilder does not escape the \"-->\" sequence in comment content or the \"]]>\" sequence in CDATA sections when building XML from JavaScript objects. This allows XML injection when user-controlled data flows into comments or CDATA elements, leading to XSS, SOAP injection, or data manipulation. This issue has been patched in version 5.7.0.",
            "remediation": "Upgrade fast-xml-parser from 4.5.6 to 5.7.0 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "high",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-12143",
            "title": "form-data: form-data: Form field override via CRLF injection",
            "description": "form-data is a library for creating readable multipart/form-data streams. In versions through 4.0.5, the `field` argument to `FormData#append` and the `filename` option are concatenated verbatim into the `Content-Disposition` header without escaping carriage return (CR), line feed (LF), or double-quote (\") characters. An application that passes attacker-controlled data as a field name or filename (for example, an API gateway that turns JSON object keys into multipart field names) allows the atta",
            "remediation": "Upgrade form-data from 4.0.5 to 2.5.6, 3.0.5, 4.0.6 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-8723",
            "title": "### Summary    `qs.stringify` throws `TypeError` when called with `arr ...",
            "description": "### Summary\n\n\n\n`qs.stringify` throws `TypeError` when called with `arrayFormat: 'comma'` and `encodeValuesOnly: true` on an array containing `null` or `undefined`. The throw is synchronous and not handled by any of qs's null-related options (`skipNulls`, `strictNullHandling`).\n\n\n\n### Details\n\n\n\nIn the comma + `encodeValuesOnly` branch, `lib/stringify.js:145` mapped the array through the raw encoder before joining:\n\n\n\n```js\n\n\n\nobj = utils.maybeMap(obj, encoder);\n\n\n\n```\n\n\n\n`utils.encode` (`lib/uti",
            "remediation": "Upgrade qs from 6.14.2 to 6.15.2 or later"
          },
          {
            "tool_name": "trivy",
            "severity": "medium",
            "category": "npm",
            "file_path": "package-lock.json",
            "line_number": null,
            "rule_identifier": "CVE-2026-8723",
            "title": "### Summary    `qs.stringify` throws `TypeError` when called with `arr ...",
            "description": "### Summary\n\n\n\n`qs.stringify` throws `TypeError` when called with `arrayFormat: 'comma'` and `encodeValuesOnly: true` on an array containing `null` or `undefined`. The throw is synchronous and not handled by any of qs's null-related options (`skipNulls`, `strictNullHandling`).\n\n\n\n### Details\n\n\n\nIn the comma + `encodeValuesOnly` branch, `lib/stringify.js:145` mapped the array through the raw encoder before joining:\n\n\n\n```js\n\n\n\nobj = utils.maybeMap(obj, encoder);\n\n\n\n```\n\n\n\n`utils.encode` (`lib/uti",
            "remediation": "Upgrade qs from 6.15.1 to 6.15.2 or later"
          }
        ],
        "execution_duration_seconds": 1.3479368359985529,
        "status": "complete",
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/aquasecurity/trivy/releases/tag/v0.71.0",
          "report_type": "filesystem-vulnerability",
          "install_command": "curl -sfL -o /tmp/trivy.deb https://github.com/aquasecurity/trivy/releases/download/v0.71.0/trivy_0.71.0_Linux-64bit.deb && echo '<sha256>  /tmp/trivy.deb' | sha256sum -c - && dpkg -i /tmp/trivy.deb",
          "severity_counts": {
            "low": 3,
            "high": 11,
            "medium": 13,
            "critical": 0,
            "informational": 0
          },
          "manifests_scanned": [
            "package-lock.json"
          ]
        },
        "display_score": 0.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "osv-scanner",
        "scanner_version": "2.3.8",
        "score": 0.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-345p-7cg4-v4c7",
            "title": "GHSA-345p-7cg4-v4c7 \u2014 npm @modelcontextprotocol/sdk@1.10.2",
            "description": "aliases: CVE-2026-25536, GHSA-345p-7cg4-v4c7 | CVSS: 7.1",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-8r9q-7v3j-jr4g",
            "title": "GHSA-8r9q-7v3j-jr4g \u2014 npm @modelcontextprotocol/sdk@1.10.2",
            "description": "aliases: CVE-2026-0621, GHSA-8r9q-7v3j-jr4g | CVSS: 8.7",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-w48q-cv73-mx4w",
            "title": "GHSA-w48q-cv73-mx4w \u2014 npm @modelcontextprotocol/sdk@1.10.2",
            "description": "aliases: CVE-2025-66414, GHSA-w48q-cv73-mx4w | CVSS: 7.6",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-35jp-ww65-95wh",
            "title": "GHSA-35jp-ww65-95wh \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44494, GHSA-35jp-ww65-95wh | CVSS: 8.7",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-42h9-826w-cgv3",
            "title": "GHSA-42h9-826w-cgv3 \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-42h9-826w-cgv3 | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "low",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-654m-c8p4-x5fp",
            "title": "GHSA-654m-c8p4-x5fp \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44489, GHSA-654m-c8p4-x5fp | CVSS: 3.7",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-777c-7fjr-54vf",
            "title": "GHSA-777c-7fjr-54vf \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44488, GHSA-777c-7fjr-54vf | CVSS: 7.5",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-7q8q-rj6j-mhjq",
            "title": "GHSA-7q8q-rj6j-mhjq \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-7q8q-rj6j-mhjq | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-898c-q2cr-xwhg",
            "title": "GHSA-898c-q2cr-xwhg \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44490, GHSA-898c-q2cr-xwhg | CVSS: 4.8",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-f4gw-2p7v-4548",
            "title": "GHSA-f4gw-2p7v-4548 \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-f4gw-2p7v-4548 | CVSS: 6.9",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-gcfj-64vw-6mp9",
            "title": "GHSA-gcfj-64vw-6mp9 \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-gcfj-64vw-6mp9 | CVSS: 8.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-hcpx-6fm6-wx23",
            "title": "GHSA-hcpx-6fm6-wx23 \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-hcpx-6fm6-wx23 | CVSS: 6.9",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-hfxv-24rg-xrqf",
            "title": "GHSA-hfxv-24rg-xrqf \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44496, GHSA-hfxv-24rg-xrqf | CVSS: 7.5",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-j5f8-grm9-p9fc",
            "title": "GHSA-j5f8-grm9-p9fc \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44486, GHSA-j5f8-grm9-p9fc | CVSS: 7.5",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-jqh4-m9w3-8hp9",
            "title": "GHSA-jqh4-m9w3-8hp9 \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-jqh4-m9w3-8hp9 | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-mmx7-hfxf-jppx",
            "title": "GHSA-mmx7-hfxf-jppx \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-mmx7-hfxf-jppx | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-mwf2-3pr3-8698",
            "title": "GHSA-mwf2-3pr3-8698 \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-mwf2-3pr3-8698 | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-p92q-9vqr-4j8v",
            "title": "GHSA-p92q-9vqr-4j8v \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44487, GHSA-p92q-9vqr-4j8v | CVSS: 8.2",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-pjwm-pj3p-43mv",
            "title": "GHSA-pjwm-pj3p-43mv \u2014 npm axios@1.15.2",
            "description": "aliases: CVE-2026-44492, GHSA-pjwm-pj3p-43mv | CVSS: 8.6",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-pmv8-rq9r-6j72",
            "title": "GHSA-pmv8-rq9r-6j72 \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-pmv8-rq9r-6j72 | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-xj6q-8x83-jv6g",
            "title": "GHSA-xj6q-8x83-jv6g \u2014 npm axios@1.15.2",
            "description": "aliases: GHSA-xj6q-8x83-jv6g | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "low",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-v422-hmwv-36x6",
            "title": "GHSA-v422-hmwv-36x6 \u2014 npm body-parser@1.20.5",
            "description": "aliases: CVE-2026-12590, GHSA-v422-hmwv-36x6 | CVSS: 3.7",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "low",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-v422-hmwv-36x6",
            "title": "GHSA-v422-hmwv-36x6 \u2014 npm body-parser@2.2.2",
            "description": "aliases: CVE-2026-12590, GHSA-v422-hmwv-36x6 | CVSS: 3.7",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-gh4j-gqv2-49f6",
            "title": "GHSA-gh4j-gqv2-49f6 \u2014 npm fast-xml-parser@4.5.6",
            "description": "aliases: CVE-2026-41650, GHSA-gh4j-gqv2-49f6 | CVSS: 6.1",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "high",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-hmw2-7cc7-3qxx",
            "title": "GHSA-hmw2-7cc7-3qxx \u2014 npm form-data@4.0.5",
            "description": "aliases: CVE-2026-12143, GHSA-hmw2-7cc7-3qxx | CVSS: 8.7",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-q8mj-m7cp-5q26",
            "title": "GHSA-q8mj-m7cp-5q26 \u2014 npm qs@6.14.2",
            "description": "aliases: CVE-2026-8723, GHSA-q8mj-m7cp-5q26 | CVSS: 6.3",
            "remediation": null
          },
          {
            "tool_name": "osv-scanner",
            "severity": "medium",
            "category": "npm",
            "file_path": "/repo/package-lock.json",
            "line_number": null,
            "rule_identifier": "GHSA-q8mj-m7cp-5q26",
            "title": "GHSA-q8mj-m7cp-5q26 \u2014 npm qs@6.15.1",
            "description": "aliases: CVE-2026-8723, GHSA-q8mj-m7cp-5q26 | CVSS: 6.3",
            "remediation": null
          }
        ],
        "execution_duration_seconds": 24.903026107989717,
        "status": "complete",
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/google/osv-scanner/releases/tag/v2.3.8",
          "report_type": "osv-vulnerability",
          "ecosystems_seen": [
            "npm"
          ],
          "install_command": "curl -sfL -o /usr/local/bin/osv-scanner https://github.com/google/osv-scanner/releases/download/v2.3.8/osv-scanner_linux_amd64 && echo '<sha256>  /usr/local/bin/osv-scanner' | sha256sum -c - && chmod +x /usr/local/bin/osv-scanner",
          "severity_counts": {
            "low": 3,
            "high": 11,
            "medium": 13,
            "critical": 0,
            "informational": 0
          },
          "manifests_scanned": [
            "/repo/package-lock.json"
          ],
          "finding_id_aliases": {
            "GHSA-345p-7cg4-v4c7": [
              "CVE-2026-25536"
            ],
            "GHSA-35jp-ww65-95wh": [
              "CVE-2026-44494"
            ],
            "GHSA-654m-c8p4-x5fp": [
              "CVE-2026-44489"
            ],
            "GHSA-777c-7fjr-54vf": [
              "CVE-2026-44488"
            ],
            "GHSA-898c-q2cr-xwhg": [
              "CVE-2026-44490"
            ],
            "GHSA-8r9q-7v3j-jr4g": [
              "CVE-2026-0621"
            ],
            "GHSA-gh4j-gqv2-49f6": [
              "CVE-2026-41650"
            ],
            "GHSA-hfxv-24rg-xrqf": [
              "CVE-2026-44496"
            ],
            "GHSA-hmw2-7cc7-3qxx": [
              "CVE-2026-12143"
            ],
            "GHSA-j5f8-grm9-p9fc": [
              "CVE-2026-44486"
            ],
            "GHSA-p92q-9vqr-4j8v": [
              "CVE-2026-44487"
            ],
            "GHSA-pjwm-pj3p-43mv": [
              "CVE-2026-44492"
            ],
            "GHSA-q8mj-m7cp-5q26": [
              "CVE-2026-8723",
              "CVE-2026-8723"
            ],
            "GHSA-v422-hmwv-36x6": [
              "CVE-2026-12590",
              "CVE-2026-12590"
            ],
            "GHSA-w48q-cv73-mx4w": [
              "CVE-2025-66414"
            ]
          },
          "cross_scanner_correlation": {
            "only_osv": [],
            "only_trivy": [],
            "intersection_ids": [
              "CVE-2025-66414",
              "CVE-2026-0621",
              "CVE-2026-12143",
              "CVE-2026-12590",
              "CVE-2026-25536",
              "CVE-2026-41650",
              "CVE-2026-44486",
              "CVE-2026-44487",
              "CVE-2026-44488",
              "CVE-2026-44489",
              "CVE-2026-44490",
              "CVE-2026-44492",
              "CVE-2026-44494",
              "CVE-2026-44496",
              "CVE-2026-8723",
              "GHSA-42h9-826w-cgv3",
              "GHSA-7q8q-rj6j-mhjq",
              "GHSA-f4gw-2p7v-4548",
              "GHSA-gcfj-64vw-6mp9",
              "GHSA-hcpx-6fm6-wx23",
              "GHSA-jqh4-m9w3-8hp9",
              "GHSA-mmx7-hfxf-jppx",
              "GHSA-mwf2-3pr3-8698",
              "GHSA-pmv8-rq9r-6j72",
              "GHSA-xj6q-8x83-jv6g"
            ]
          }
        },
        "display_score": 0.0,
        "display_badge": "Unsafe"
      }
    ]
  },
  "report": {
    "report_id": "ec45245d-638f-4838-a3a3-bf7ae60d01e7",
    "format": "json",
    "generated_at": "2026-07-22T02:30:18.187113+00:00",
    "scanner_filter": null,
    "signature": null
  }
}