Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

browser-metrics-plugin.contribnpm

Advisory published Updated

browser-metrics-plugin.contrib is a confirmed malicious npm package (MAL-2026-17640) that steals credentials and exfiltrates sensitive data (malicious versions 0.0.1, 1.0.0, 1.0.1…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in browser-metrics-plugin.contrib (npm)

MAL-2026-17640
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall browser-metrics-plugin.contrib

What this malware does

browser-metrics-plugin.contrib is a dependency-confusion package: it is described as a "Compatibility shim", uses version numbers up to 99.0.1, and its README calls it an "authorized dependency-confusion test". Each listed version has a postinstall script that runs node beacon.cjs on npm install, and index.js calls the same code when the package is imported; it POSTs the hostname, install path and current working directory over plain HTTP to http://185.158.107.175:8787/_ah/dc, and index.js exports a Proxy that returns no-op functions so builds importing the real package keep running. The npm account xwise8887 published these 6 versions, and 7 versions of troubleshooting with the same payload, on 2026-10-07 between 00:01 and 00:07 UTC.

[email protected] ships beacon.cjs which POSTs a JSON payload containing os.hostname(), __dirname (install path), process.cwd(), and Node version to the hardcoded cleartext bare-IP endpoint http://185.158.107.175:8787/_ah/dc. The beacon fires twice: once from a postinstall lifecycle hook on npm install, and again at require time from index.js (the declared main), which calls require('./beacon.cjs').fire() at top level inside a try/catch. The module exports a Proxy of no-ops so that load failures do not break the surrounding build, concealing the beacon's presence. The second trigger ensures the callback fires even when scripts are disabled via --ignore-scripts. The combination of hardcoded bare-IP destination (no TLS, no domain), host identifier collection at install and import time, dual-trigger design, and silencing wrapper is the canonical dependency-confusion exfiltration shape. A README self-label as a 'research' or 'dependency-confusion test' package is author-controlled and does not constitute installer consent; the hostname and install path disclose internal corporate build infrastructure to a third party.

Malicious versions

6 flagged
0.0.11.0.01.0.11.1.02.0.199.0.1

Indicators of compromise (SHA-256)

5c14ea3f89a327e671b6bb6bfd27cb0db7fbc92f0777b89710442b792740d073
8123f97c3618eb20a66da2dfb8a45256e76fb1c84c4a17ce844dac7a2389bfe6
add156e4ab0c336588911b9741dc7b10a5b1471d4b094e2410c5325ceecb3401
b1483de01fa77ef2e754624666b2c65ee4d2aff5ab261e38e3eb3f111b7efded
ba360d12dd9384c50c52bb7367dcee82bc20aa303178b4782e9f2fb8b823f5c6
d92366e7357cc9d42be3e33965b1c6bac85403f0b3f1fc079e33e81b81b61827

Detection & response playbook

Credential / info stealer
  1. Find it

    Search your lockfiles and build artifacts for browser-metrics-plugin.contrib (6 malicious versions).

  2. If you installed it — respond

    browser-metrics-plugin.contrib is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.

  3. Did it already run?

    If browser-metrics-plugin.contrib was installed, its post-install payload may already have run. Removing the package does not undo that — check outbound connections and credential use from the install window onward.

Frequently asked questions

No. browser-metrics-plugin.contrib on npm has been identified as a malicious package (versions 0.0.1, 1.0.0, 1.0.1, 1.1.0, 2.0.1, 99.0.1 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-021130IN-MAL-2026-021114IN-MAL-2026-021107IN-MAL-2026-021108IN-MAL-2026-021110IN-MAL-2026-021109

References

Credits

  • Amazon Inspector · finder
  • InvisiRisk, Inc. · finder

Detect & block this

O3 blocks browser-metrics-plugin.contrib-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.

Explore

browser-metrics-plugin.contrib (npm) malicious package — MAL-2026-17640 | O3 Security