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

check-error-utilnpm

Advisory published Updated

check-error-util is a confirmed malicious npm package (MAL-2026-5527) that typosquats a legitimate package to trick installs (malicious versions 2.1.3, 2.1.4, 2.1.5…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in check-error-util (npm)

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

    Search your lockfiles and build artifacts for check-error-util (6 malicious versions).

  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 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. 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