THREATPKG
SYNC STALE

Supply-chain threat intelligence

Incident detail

criticalnpm·obfuscation·osv

Malicious code in check-error-util (npm)

check-error-util

Risk score

92

AI summary

Indexed incident for check-error-util (npm).

Description

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 jake@alogicalparadox.com, 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.

Technical details

Affected versions

=2.1.4=2.1.6=2.1.5=2.1.7=2.1.3=2.1.8

Indicators

  • affected version=2.1.475%
  • affected version=2.1.675%
  • affected version=2.1.575%
  • affected version=2.1.775%
  • affected version=2.1.375%
  • affected version=2.1.875%

Timeline

  1. Advisory published
  2. Indexed by ThreatPkg

Related incidents