Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
Back to malware
MalwareUsed by 1 actor

mcpAddon.js

Share:
For your environment

Hunt this family in your stack

Mallory pivots from this family to the IOCs, detections, and named campaigns that touch your stack, and pages you when something new lands.

THREAT ACTORS

Groups observed using it

1 distinct threat actor attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.

View more details
TeamPCP

Our follow-on analysis shows that the Checkmarx compromise includes a multi-stage credential theft and propagation component downloaded as mcpAddon.js . The initial infection vector is embedded directly in the compromised VS Code / Open VSX extensions... The malware harvests developer and cloud credentials, compresses and encrypts the results, and exfiltrates them both to an external endpoint and to threat actor-created public GitHub repositories under victim accounts.

via socket blogsocket.dev
MITRE ATT&CK

Techniques & procedures

30 distinct techniques documented for this family, organized by ATT&CK tactic.

Initial Access

5 techniques
T1078Valid AccountsEvidence2

It also abuses stolen GitHub tokens to inject a new GitHub Actions workflow... and uses stolen npm credentials to identify writable packages for downstream republishing.

T1078.004Cloud AccountsEvidence1

GitHub OIDC 토큰을 요청할 수 있는 id-token: write 권한도 보유하고 있었습니다... Azure 자격증명을 그대로 탈취

T1195Supply Chain CompromiseEvidence4

A threat actor compromised the pipeline(s) and distribution channels of two developer-tooling vendors... Malicious versions of Checkmarx KICS ... and the Bitwarden CLI ... were pushed to official channels and presented as legitimate releases.

T1195.001Compromise Software Dependencies and Development ToolsEvidence3

On April 22, an attacker pushed malicious artifacts across three distribution channels... Docker Hub... Open VSX / VS Code extensions... GitHub Actions... Also on April 22, an attacker compromised a GitHub Action used in Bitwarden's CI/CD pipeline and published a trojanized @bitwarden/cli version 2026.4.0 to npm.

T1195.002Compromise Software Supply ChainEvidence1

related Checkmarx developer tooling may also have been affected, including recent VS Code extension releases that introduced code capable of downloading and executing a remote addon through the Bun runtime.

Execution

8 techniques
T1059Command and Scripting InterpreterEvidence1

This JavaScript file mcpAddon.js is executed using the Bun interpreter; supporting execution on Windows and Unix-based systems.

T1059.001PowerShellEvidence1

It also launches a PowerShell command to enumerate Azure tokens of attached tenants: powershell.exe -NoProfile -NonInteractive -Command ...

T1059.003Windows Command ShellEvidence1

Upon execution of mcpAddon.js, Bun launches the following commands on Windows systems: C:\WINDOWS\system32\cmd.exe /d /s /c "gh auth token" ...

T1059.004Unix ShellEvidence1

mcpAddon.js functions as a stand-alone token stealer which uses the victim’s shell (PowerShell or Bash) to enumerate and exfiltrate the following...

T1059.007JavaScriptEvidence3

The attacker added a hidden ‘MCP addon’ feature that pulled a ~10MB payload ( mcpAddon.js ) from a hardcoded GitHub URL and executed it via the Bun runtime on extension activation... A preinstall hook invoked a loader ( bw_setup.js ) that downloaded the Bun runtime and launched an obfuscated second-stage payload ( bw1.js ).

T1127Trusted Developer Utilities Proxy ExecutionEvidence1

This JavaScript file mcpAddon.js is executed using the Bun interpreter...

T1204.002Malicious FileEvidence1

These extensions were modified to silently download a malicious payload called mcpAddon.js from a hardcoded GitHub URL

T1651Cloud Administration CommandEvidence1

탈취한 GitHub 토큰을 이용해 ... 악성 워크플로우 파일(.github/workflows/format-check.yml)을 커밋하면, GitHub Actions가 이를 자동 실행하여 해당 저장소의 모든 시크릿을 아티팩트로 추출합니다.

Persistence

3 techniques
T1078Valid AccountsEvidence2

It also abuses stolen GitHub tokens to inject a new GitHub Actions workflow... and uses stolen npm credentials to identify writable packages for downstream republishing.

T1078.004Cloud AccountsEvidence1

GitHub OIDC 토큰을 요청할 수 있는 id-token: write 권한도 보유하고 있었습니다... Azure 자격증명을 그대로 탈취

T1543Create or Modify System ProcessEvidence2

For each qualifying repository, the worm creates a new branch, commits the malicious workflow, and waits for it to execute.

Privilege Escalation

3 techniques
T1078Valid AccountsEvidence2

It also abuses stolen GitHub tokens to inject a new GitHub Actions workflow... and uses stolen npm credentials to identify writable packages for downstream republishing.

T1078.004Cloud AccountsEvidence1

GitHub OIDC 토큰을 요청할 수 있는 id-token: write 권한도 보유하고 있었습니다... Azure 자격증명을 그대로 탈취

T1543Create or Modify System ProcessEvidence2

For each qualifying repository, the worm creates a new branch, commits the malicious workflow, and waits for it to execute.

Stealth

6 techniques
T1027Obfuscated Files or InformationEvidence2

Obfuscation Techniques (mcpAddon.js) A giant one-line bundle with mangled identifiers... A string-table decoder... Additional scrambled string decoding... Multiple gzip+base64 embedded payloads...

T1036MasqueradingEvidence1

서버 주소를 Checkmarx의 공식 텔레메트리 엔드포인트처럼 위장한 점도 주목할 부분입니다.

T1078Valid AccountsEvidence2

It also abuses stolen GitHub tokens to inject a new GitHub Actions workflow... and uses stolen npm credentials to identify writable packages for downstream republishing.

T1078.004Cloud AccountsEvidence1

GitHub OIDC 토큰을 요청할 수 있는 id-token: write 권한도 보유하고 있었습니다... Azure 자격증명을 그대로 탈취

T1127Trusted Developer Utilities Proxy ExecutionEvidence1

This JavaScript file mcpAddon.js is executed using the Bun interpreter...

T1564Hide ArtifactsEvidence1

The attacker began by injecting a backdated commit (68ed490b) into the Checkmarx/ast-vscode-extension repository... spoofed to look like it was authored in 2022... attached to a real commit as its parent...

Credential Access

4 techniques
T1528Steal Application Access TokenEvidence1

This workflow uses a clever trick—${{ toJSON(secrets) }}—to collapse every secret in the repository into a single string

T1552Unsecured CredentialsEvidence1

mcpAddon.js is designed to sweep development environments for high-value secrets, including GitHub tokens, npm tokens, AWS/Azure/GCP credentials, SSH keys, environment variables, and configuration files for Claude and other AI tools.

T1555Credentials from Password StoresEvidence4

Both malicious payloads attempted to harvest the following sensitive information: GitHub and npm tokens SSH keys Cloud provider credentials AI assistant configurations

T1649Steal or Forge Authentication CertificatesEvidence4

Both malicious payloads attempted to harvest the following sensitive information: GitHub and npm tokens SSH keys Cloud provider credentials AI assistant configurations... mcpAddon.js is designed to sweep development environments for high-value secrets, including GitHub tokens, npm tokens, AWS/Azure/GCP credentials, SSH keys...

Discovery

1 technique
T1526Cloud Service DiscoveryEvidence1

The malware harvests developer and cloud credentials... It also abuses stolen GitHub tokens to inject a new GitHub Actions workflow... and uses stolen npm credentials to identify writable packages for downstream republishing.

Lateral Movement

1 technique
T1570Lateral Tool TransferEvidence1

It then attempts to republish those packages with the malicious payload, enabling “rapid lateral spread across the npm ecosystem”.

Collection

2 techniques
T1119Automated CollectionEvidence1

Secret-aware targeting: Before taking action, it checks whether a repository (or its parent organization) has configured GitHub Actions secrets. Repositories without secrets are ignored...

T1560Archive Collected DataEvidence1

The malware harvests developer and cloud credentials, compresses and encrypts the results...

Command and Control

1 technique
T1105Ingress Tool TransferEvidence4

The attacker added a hidden ‘MCP addon’ feature that pulled a ~10MB payload ( mcpAddon.js ) from a hardcoded GitHub URL... A preinstall hook invoked a loader ( bw_setup.js ) that downloaded the Bun runtime and launched an obfuscated second-stage payload ( bw1.js ).

Exfiltration

4 techniques
T1041Exfiltration Over C2 ChannelEvidence1

수집된 데이터는 압축 및 암호화되어 audit.checkmarx[.]cx/v1/telemetry 라는 외부 서버로 전송됩니다.

T1567Exfiltration Over Web ServiceEvidence2

This harvested data is then exfiltrated to hxxps://audit[.]checkmarx[.]cx/v1/telemetry ... the attacker created public repositories in victim GitHub accounts and stored the encrypted stolen data inside them – essentially using the victim's own infrastructure as a dead drop.

T1567.001Exfiltration to Code RepositoryEvidence1

The malware uses stolen GitHub tokens to create repositories under the victim’s own account with the deceptive description “Checkmarx Configuration Storage”.

T1567.002Exfiltration to Cloud StorageEvidence1

Analysis of the malware’s GitHub abuse logic and live public repository artifacts shows that the threat actor abuses GitHub credentials to create public repositories used for exfiltration staging.

INDICATORS OF COMPROMISE

IOCs tracked for this family

6 indicators attributed across vendor reports, sandbox runs, and researcher write-ups. Full values are available in Mallory.

View more in app
Network
2 tracked

IPs, domains, and DNS infrastructure linked to this family.

Hashes
3 tracked

File hashes (MD5, SHA-1, SHA-256) from samples and reports.

Other
1 tracked

Other indicator types observed in public reporting.

TypeValueLatest sighting
hash.sha256●●●●●●●●●●●●View more in app1 month ago
domain●●●●●●●●●●●●View more in app1 month ago
ip.v4●●●●●●●●●●●●View more in app2 months ago
uri●●●●●●●●●●●●View more in app2 months ago
hash.md5●●●●●●●●●●●●View more in app2 months ago
hash.sha1●●●●●●●●●●●●View more in app2 months ago
What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets match these IOCs, which detections are missing, which campaigns to expect next, and what to do in the next 30 minutes.
IOC matching6

Match every observed IP, domain, and hash against your live telemetry.

Threat actor attribution1

Named campaigns wielding this family, with evidence pinned to each claim.

Exploited vulnerabilities

CVEs this family uses for access and lateral movement.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

MITRE ATT&CK mapping30

Every documented technique, ranked by evidence weight.

Researcher chatter

Reddit, Mastodon, and CTI community discussion around this family.