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

scan-onlynpm

scan-only is a confirmed malicious npm package (MAL-2026-6067) that steals credentials and exfiltrates sensitive data (malicious versions 0.2.0, 0.3.0, 0.4.0…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in scan-only (npm)

MAL-2026-6067
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall scan-only

What this malware does

The CLI binary at bin/scan-only.js, when invoked (e.g., via npx scan-only --diagnose), harvests installer-side secrets and ships them to a hardcoded attacker endpoint, then fetches and executes attacker-controlled shell commands. Specifically, the binary reads ~/.gitconfig, ~/.ssh, ~/.npmrc (npm token), ~/.aws/credentials, ~/.docker/config.json, ~/.bash_history, ~/.zsh_history, the full process.env, os.userInfo(), and network interfaces, packages them into a recon object, and POSTs them to https://sentry.citadel-casino.com/collect with a hardcoded x-api-key header and user-agent citadel-diagnose/0.2.0. It also fetches https://sentry.citadel-casino.com/decoy, runs a refineText() routine that extracts a hidden command via an acrostic of first letters terminated by endofpayload, unescapes tokens like sbslash to \, and passes the result to execSync via /bin/sh on Unix or powershell -EncodedCommand on Windows — giving the operator of sentry.citadel-casino.com arbitrary code execution on the host running the CLI. The exfiltration output is masked by fake Sentry Diagnostic Tools v1.2.0 console banners, and the Sentry-lookalike subdomain on citadel-casino.com is brand-impersonation cover. package.json's generic Diagnostic tool description and scan-only bin name disguise the binary's true citadel-diagnose identity. Harm fires the moment a developer or CI system runs the CLI.

Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.

Malicious versions

14 flagged
0.2.00.3.00.4.00.4.10.4.20.4.30.4.40.4.50.4.60.4.70.4.80.4.90.5.01.0.0

Indicators of compromise (SHA-256)

117c86ce8a46816d63f57e4c6f2015c70c92480428c4436f78b492bfaa5cb2c3
7b940e23f31bc48db5cf3c87a8e9fa1b746505e326521105619dfe12f883da4b
aa03231f11911a8cb8561add13ed2cf6a705021ea2f5b8f6e949a99796cd7cb4
b523ee98635b5214fba801ee136ec0548d4e16c132516d087c788bce841658e0
21ae3a240675015022a6f119cc0795f3904276a955f1bb5f653e883d778c3697
4efea3893451636daac8f951e74e6c36c3fb72b10defac3eadba6ef360913425
633fb5a8c3bbce8086e8c9e8853fa6a81f8b0d2a7645938be0a2fc32aa0be3af
02d12029193cf5c42cb47575070769fa2863a4bcfd87877ff5eadd84e3fcf005
8f6d12c05f2ed743b7e67b06d43d3a696f581f6f2b65744fc721e36ef34f3901
9a7779ff21d9783e1026e13a7abf65e448c5f3d3d111f3cae539f3690e53a2b4
a2a62b541f49c4afa753b1eca36ea975a55b5acdc67a2afa657e35147a7c7169
d71b7cd780060714d911a699eb3c6d843b772573e9de99380a9c9fc0130268cb
da16f6edd9f3f0a876381602ddcd89b2717f68fd8d4888101a313628c8676f01
74f20dc79ebffd17c5af3ec0600301a0d201519da36e656163d6c9032db9d84a
a76341b8fce903044b4b4262618cbe28c9a74c1007880cfa5121b01e77215448

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 scan-only (14 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging scan-only across your stack and pipelines.

  2. If you installed it — respond

    scan-only 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 scan-only 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 scan-only 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. scan-only on npm has been identified as a malicious package (versions 0.2.0, 0.3.0, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, and 6 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-006907IN-MAL-2026-006911IN-MAL-2026-006910IN-MAL-2026-006908IN-MAL-2026-006912IN-MAL-2026-006906IN-MAL-2026-006909IN-MAL-2026-006924IN-MAL-2026-006922IN-MAL-2026-006920IN-MAL-2026-006923IN-MAL-2026-006921IN-MAL-2026-006919IN-MAL-2026-006932GHSA-72g3-g9xj-wxp6

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks scan-only-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

scan-only (npm) malicious package — MAL-2026-6067 | O3 Security