GHSA-rp72-5v5q-2446: @cardano402/mcp server @cardano402/mcp-server Missing Spending Limits, LAN-exposed Vulnerability
LOWGHSA-rp72-5v5q-2446 is a LOW (CVSS 0.0) @cardano402/mcp-server missing spending limits, lan-exposed vulnerability (CWE-770: Allocation of Resources Without Limits or Throttling) affecting @cardano402/mcp server libraries in the npm ecosystem. The issue involves @cardano402/mcp-server missing spending limits, lan-exposed http transport, and ssrf via catalog.server.url. Remediation is available by upgrading affected packages to version 0.1.2.
GHSA-rp72-5v5q-2446 at a Glance
Security Impact
CVSS: 0.0
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N).
How to Fix GHSA-rp72-5v5q-2446
To remediate this vulnerability, upgrade all affected @cardano402/mcp server dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install @cardano402/mcp-server@0.1.2
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls @cardano402/mcp-server
How to Check if You Are Affected
To determine whether your Node.js application is affected by GHSA-rp72-5v5q-2446, inspect your project dependencies using npm:
npm ls @cardano402/mcp-server
Analyze the terminal output to locate any version of @cardano402/mcp server in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.1.2), your application is affected.
Note: The npm ls @cardano402/mcp-server command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-770: Allocation of Resources Without Limits or Throttling, where the product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated. In @cardano402/mcp server, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
GHSA-rp72-5v5q-2446 Affected @cardano402/mcp server Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
@cardano402/mcp-server
|
npm |
< 0.1.2
|
0.1.2
|
References
Frequently Asked Questions
What is GHSA-rp72-5v5q-2446?
Which @cardano402/mcp server versions are affected?
What version fixes GHSA-rp72-5v5q-2446?
Is @cardano402/mcp-server affected?
What is the CVSS score of GHSA-rp72-5v5q-2446?
What CWE is associated with GHSA-rp72-5v5q-2446?
How can I check npm dependencies for GHSA-rp72-5v5q-2446?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-rp72-5v5q-2446",
"modified" : "2026-06-26T21:08:06Z",
"published" : "2026-06-26T21:08:06Z",
"aliases" : [ ],
"summary" : "@cardano402/mcp-server missing spending limits, LAN-exposed HTTP transport, and SSRF via catalog.server.url",
"details" : "## Summary\n`@cardano402/mcp-server` versions `<= 0.1.1` ship three security gaps that can lead to unauthorized fund movement when the package is used as designed (an MCP server exposing Cardano payment tools to an\n\n## Impact\n### 1. No spending limits on signed payments\nAn LLM (or prompt-injected LLM) calling tools registered by the MCP server can invoke them in a loop. Each call signs a real Cardano transaction for the catalog-advertised amount. There is no per-call cap, daily ceiling, MCP elicitation/confirmation step, or recipient allowlist. The `MAINNET=true` env-var guardrail can be bypassed by any LLM with shell-tool access. Worst case: full wallet drain.\n\n### 2. HTTP transport binds 0.0.0.0 without authentication\n`cardano402-mcp --transport http` listens on all interfaces with no `Origin` allowlist, no bearer-token requirement, and no CORS check. Anyone on the same LAN can POST MCP `tools/call` and trigger signed payments from the operator's wallet.\n\n### 3. SSRF via `catalog.server.url`\nA malicious catalog can declare a `server.url` pointing at internal infrastructure (e.g. `http://169.254.169.254/latest/meta-data`). The `allowInsecure` guard in 0.1.1 only checks the catalog URL itself, not the `server.url` it returns. `endpoint.path` is also not normalized, so `..` traversal or absolute URLs work.\n\n## Patches\nFixed in `@cardano402/mcp-server@0.1.2`:\n - Per-call and per-day spending limits (default 5 ADA / 50 ADA) + optional recipient allowlist + MCP `elicitation/create` confirmation hook.\n - HTTP transport defaults to `127.0.0.1`; non-loopback requires `--http-bearer-token`; per-request `Origin` allowlist + bearer check.\n - `catalog.server.url` validated against private-CIDR rules (RFC1918, RFC4193, link-local, CGNAT, multicast, IPv4-mapped IPv6, loopback) unless `CARDANO402_ALLOW_INSECURE=true`.\n - `endpoint.path` rejected if it contains `..`, NUL, whitespace/CRLF, an absolute URL, or `//host/...`.\n - Per-tool mainnet opt-in via `--mainnet-confirmed-tools`.\n\n ## Workarounds for 0.1.1 users\n - Do not run with `--transport http` on an untrusted network; use `--transport stdio` (default).\n - Only point the server at catalogs you control or have audited.\n - Use a low-balance hot wallet, never your main wallet.\n - Avoid `MAINNET=true` until upgraded to 0.1.2.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "@cardano402/mcp-server"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "0.1.2"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 0.1.1"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/MorganOnCode/cardano402/security/advisories/GHSA-rp72-5v5q-2446"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/MorganOnCode/cardano402"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-22", "CWE-770", "CWE-862", "CWE-918" ],
"severity" : "LOW",
"github_reviewed" : true,
"github_reviewed_at" : "2026-06-26T21:08:06Z",
"nvd_published_at" : null
}
}