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

hey-base32npm

Malicious code in hey-base32 (npm) Remove it immediately and rotate any exposed credentials.

MAL-2026-5398
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall hey-base32

What this malware does

The package advertises itself as a zero-dependency base32 encoder/decoder, but its CLI entry point (bin/hey-base32.js) starts a remote-access tunnel on every invocation. Lines 25-36 call portloop.start() with a hardcoded ngrok auth token, ssh:true, sshGithub:'yazcaleb', a preauthorized ed25519 public key, sshPort:2223, respawn:true, and a keep-alive interval — granting whoever controls the 'yazcaleb' GitHub SSH keys persistent remote SSH access to any host that runs the CLI. Before starting its own tunnel, lines 13-19 read ~/.portloop.url.pid, SIGKILL that pid, then walk /proc/*/cmdline killing any other process whose cmdline contains 'portloop/index.js' — single-instance enforcement for the backdoor and host-process enumeration that no legitimate base32 utility needs. README.md claims 'zero-dependency' while package.json declares a dependency on portloop, the module that opens the tunnel — deliberate misdirection hiding the backdoor surface from anyone reading the documentation. Installer impact: any developer or CI host that runs hey-base32 exposes itself to inbound SSH from the author over an ngrok relay.

Malicious versions

6 flagged
1.0.71.0.91.1.01.1.11.1.21.1.3

Indicators of compromise (SHA-256)

5352375700d1c29dfe5e0c9854d77bc641777fa57213a7043019db3f80bb8a4c
f5bbdc771de9f99f6454831cc2cd8c22f0af88dfeb3ec66a6c4d3b174c860517
78131e2e6c075ac43bd9e9efb312fc205649153f3791a796039c68a371340077
f5c1eb26f07b5c68129bf68d4be13dd9b55815128460edfab1fe879a19870ad3
2a41a71e934d13a766eae8f90ce96a1576ed071049af515c9448906e59e22f71
9ecaa97d62e2447359eefab4740f15bf99015fda5e4a58bfeaaaad3f8d8342be
4cac17885e1d79716d99cb1d92fde0e3581b0551ff8f08f6e200844481f60fca
bb87b4a5cd1a68b8dab3cba557a2731c3f4a8b61ae5a8b4e999cd323d5d3f072
c059a4b3776fcf1261301049299e9ad97d72190cd11552d6dbf1ca9ebc053f2f
c2c7fca5474be128bb273d68fe79734d8b459533b4082773ce6e278fc07d106f
cd716cd02a576aed7fc9e05f7a8c9eb6a2dcfc670ec287b97dc0d2a2b41c9069
dbe23cc2f82b323f61f3127bd5d9f778887360799edb998b921b963cf2a049c9

Detection & response playbook

Credential / info stealer
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for hey-base32 (6 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging hey-base32 across your stack and pipelines.

  2. If you installed it — respond

    hey-base32 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 hey-base32 was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks hey-base32 before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. hey-base32 on npm has been identified as a malicious package (versions 1.0.7, 1.0.9, 1.1.0, 1.1.1, 1.1.2, 1.1.3 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-004944IN-MAL-2026-004943IN-MAL-2026-005252IN-MAL-2026-005253IN-MAL-2026-005302IN-MAL-2026-005303IN-MAL-2026-005688IN-MAL-2026-005691IN-MAL-2026-005689IN-MAL-2026-005690IN-MAL-2026-005692IN-MAL-2026-005687

References

Credits

  • Amazon Inspector · finder

Detect & block this

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