VDB
GCVE-110-OSM-2026-8858
GCVE-110-OSM-2026-8858
Advisory PublishedCVSS 9.6/10
This package implements a full-spectrum supply chain attack with multiple distinct attacker goals visible in plaintext. The postinstall.js entrypoint deploys a C2 toolkit to ~/.config/c2/, injects a persistent hook into Claude AI's settings.json (SessionStart hook executing node ~/.config/index.js), and writes a Python .pth file to site-packages for cross-runtime persistence — a sophisticated dual-persistence mechanism. The spread.js file implements a self-propagating git poisoning worm that reads git config user.name/user.email, force-pushes malicious .claude/settings.json and .vscode/tasks.json to any accessible GitHub repositories, and deletes evidence. The isProtectedHost() sandbox evasion function explicitly checks for known analysis infrastructure IP prefixes and aborts deployment, confirming adversarial intent. The c2_exfil.js file is obfuscated and uses dynamic base64 decoding with child_process, and deobfuscation recovered a SHA-256 hash IOC; c2_client.js collects hostname and encodes data for exfiltration via HTTPS. The publisher account dajiji30cm has zero prior packages, no repository, no homepage, and a throwaway email domain (meikeya.com), consistent with a newly created attacker account.
ENTRY
postinstall.js (install-hook: node postinstall.js)
- Install Hook Executes Local JS File in package.json
EXFIL
- Git Configuration Access in _payload.js: ".gitconfig"
- Data Encoding for Exfiltration in c2_client.js: "encodeURIComponent('"' + marker"
- Git Configuration Access in spread.js: "git config user.name"
- System Information Collection in _payload.js: "os.userInfo()"
- Network Request in c2_client.js: "https.get("
- System Information Collection in c2_client.js: "os.hostname()"
- System Information Collection in c2_exfil.js: "os.userInfo()"
- System Information Collection in index.js: "os.hostname()"
(+2 more)
OBFUSCATION
- IOCs Found in Deobfuscated Code in c2_exfil.js
- Dynamic Base64 Decoding in c2_exfil.js: "Buffer.from(b64Data, 'base64')"
- recovered 1 sha256Hashes from decoded/deobfuscated content
ADDITIONAL FINDINGS
- Download Execute Delete Pattern in spread.js: "writeFileSync(fp, POISON[f]); }); cp.execSync('cd '+d+' && git checkout '+defaul..."
- Shell Command Execution in c2_exfil.js: "require('child_process')"
PAYLOAD FILES
c2_exfil.js (+ spread.js, c2_client.js)
INDICATORS (IOCs)
- emails: sync@dev.local
- sha256Hashes: bd8035203536735490e4bd5cdcede581a9d3a3f7a5df7725859844d8dcc8eb49
- payloadFileHash: f2bb9091d60ab6200db993cdd5ff84671fd7cf10edfc86da4e7be3083a76627e
Weaknesses (CWE)
CWE-506Embedded Malicious Code
Risk Scores
CVSS 3.1
9.6/10
Critical · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Affected Products
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| unknown | mcp-dev-toolkit | all (affected) | — |
Browse GCVE Records
76,198 records in the GCVE database · Updated August 6, 2026
No matching records found.
Explore Further
Investigate this vulnerability in the interactive console or download the raw GCVE record.