testmetest npm campaign armed 42 real GitHub repositories, JFrog says
JFrog Security Research reported on Oct 26, 2026 that the testmetest npm campaign armed 42 GitHub repositories belonging to 11 legitimate owners, including one organization. Hidden hooks for Claude, Gemini, Cursor and VS Code run the .github/init.js payload when a developer opens the project, and the decoded payload publishes new malicious npm packages using stolen npm tokens or GitHub OIDC trusted publishing. Rotate GitHub and npm credentials and audit repositories by Git tree enumeration, since 12.9 to 13.7 MB wrappers escaped GitHub code search.
What happened
JFrog Security Research reported on Oct 26, 2026 that the testmetest npm campaign armed 42 GitHub repositories belonging to 11 legitimate owners, from students to one organization. The malware runs when a developer opens the project in Claude Code, Gemini CLI, Cursor or VS Code. The payload publishes new malicious npm packages using stolen npm tokens or GitHub OIDC trusted publishing.
Why it matters
Legitimate repositories became an attack vector against developers who trust the code. The payload self-propagates by publishing new malicious packages, widening the software supply chain compromise and potentially tainting builds and customers. The malicious files, 12.9 to 13.7 MB, escaped GitHub code search, so normal search-based detection fails.
What to do
Immediately rotate GitHub and npm credentials and tokens, revoke unused GitHub OIDC trusted publishing, and audit repositories by Git tree enumeration, not code search. Review permissions on accounts with access to published npm packages.
For the technical team
- Affected
- npm / GitHub Pacotes npm da campanha testmetest; 42 repositórios GitHub de 11 donos legítimos, incluindo uma organização · 42 GitHub repositories belonging to 11 legitimate owners, including established developers and one organization; npm packages from the testmetest campaign.
- Exploitation
- Exploitation confirmed in JFrog Security Research analysis dated Oct 26, 2026. The 42-repository count comes from JFrog's own analysis. SafeDep's Oct 22, 2026 research covered the npm worm, not the repo total. JFrog links the same hijacked accounts to cPanel CVE-2026-41940 scanning, with no confirmed downstream cPanel compromise.
- Fix
- No fix published. Mitigation cited by JFrog: rotate GitHub and npm credentials and audit repositories by Git tree enumeration.
- Vector
- Hidden hooks for Claude Code, Gemini CLI, Cursor and VS Code run the .github/init.js payload when the developer opens the project. Polymorphic wrappers of 12.9 to 13.7 MB escaped GitHub code search and the contents API. Newer packages hide the payload in a native addon (.napi_cache, XOR 0x96) that refuses to run in CI, containers or debuggers.
- More details
- The decoded payload is a publisher that uses stolen npm tokens or GitHub OIDC trusted publishing to push new malicious npm releases. JFrog does not attribute the campaign to the original Miasma operators.
Indicators (IoCs)
- .github/init.js
Timeline
JFrog says the 42 repos were rigged to run malware when a developer opens one in Claude Code, Gemini CLI, Cursor or VS Code; the ~13MB payload was too large for GitHub's code search to index.
JFrog research shows the campaign hit 42 real repositories with hidden hooks for AI tools.
Sources 2 sources
- @DailyDarkWeb @DailyDarkWeb
- @IntCyberDigest @IntCyberDigest



