VDB

GCVE-110-OSM-2026-8858

GCVE-110-OSM-2026-8858
Advisory PublishedCVSS 9.6/10
Vulnetix · Advisory published July 18, 2026
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

VendorProductVersionsPlatforms
unknownmcp-dev-toolkitall (affected)

References

vendor

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.

$ Console Community · 100/wk Open console ›