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

check-error-utilnpm

Malicious code in check-error-util (npm) Remove it immediately and rotate any exposed credentials.

MAL-2026-5527
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall check-error-util

What this malware does

On require/import, index.js executes a top-level resolveConfig() that reconstructs a URL from an XOR-obfuscated integer array, AES-256-CBC-decrypts it, fetches the URL over HTTPS, and runs the JSON cookie field of the response as JavaScript via new Function('require', cookie)(require). This grants an attacker arbitrary Node code execution with full require access on any machine that loads the package. The URL is hidden behind a layered XOR + AES blob (getHashAddress → Buffer.from(...,'hex') → createDecipheriv('aes-256-cbc', key, iv)) with cover-story comments ('S-box substitution', 'address pipeline', 'service layer hydration') intended to evade static review — there is no legitimate reason for an error-comparison utility to ship encrypted remote URLs. The package also impersonates the legitimate chaijs check-error library: package.json copies the upstream author Jake Luer [email protected], the chaijs contributor list, and a repository URL pointing at chaijs/check-error, while the published name is check-error-util and the upstream loader code is absent from the real package.

Malicious versions

6 flagged
2.1.32.1.42.1.52.1.62.1.72.1.8

Indicators of compromise (SHA-256)

4354c90de765b6812756121ed6ceb8784ca5a2d6e40f6aa97391e5014c35a038
91cb4f3b95eca0a9d180e159ac28ce3cc697c771229f9447cd1a293ce9cff57d
24cc0eadac07d953a8fb2335bb848dd379a08855a014e29c3766b3f56a36fd46
39efbd4fb0ca7ceb96ef1b0b8852b3a01f063534aa884d9b41b9c0e9807e7342
61a7e6a668d91a00d8a37aa73e538cf778fea022a19ba28e0c9d373a5946df05
6836fe64dbf323ab80a8ac08c2c1a257f3402082d7bd05fc76c5c549defe67d3
7c25cbbb904c18028cac363ba66eb89d91301bd3204a8347834e52387b4b575e
e087c7abebf26095695a247b30a2ddda639f3c774ccda3cecbac7037fe454728
3dbf726d1dec5d0add89d8c3499c5686f59d219140872b727a1813b170ef39d3
64f3a618c56463b3da94d7ad2bfcd9f241ee3db8c6c7e8c49a82314dbfd860ad
75e9f3a5c9df870e5f4f5accad4503ebaf5e542d183017e9ef79fddc3ecb942b

Detection & response playbook

Typosquat
  1. Find it

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

  2. If you installed it — respond

    check-error-util is a typosquat — you almost certainly intended a legitimately-named package. Remove check-error-util, install the correct package, and rotate any secrets exposed during the install since post-install scripts may have already run.

  3. Did it already run?

    If check-error-util 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 check-error-util 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. check-error-util on npm has been identified as a malicious package (versions 2.1.3, 2.1.4, 2.1.5, 2.1.6, 2.1.7, 2.1.8 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-005298IN-MAL-2026-005299IN-MAL-2026-005537IN-MAL-2026-005536IN-MAL-2026-005539IN-MAL-2026-005540IN-MAL-2026-005535IN-MAL-2026-005533IN-MAL-2026-005538IN-MAL-2026-005541IN-MAL-2026-005534

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks check-error-util-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

check-error-util (npm) malicious package — MAL-2026-5527 | O3 Security