OpenSSF/OSV advisory MAL-2026-13699 confirms this npm version as malicious. The package presents itself as a chai plugin (name resembles chai-as-promised, manifest description references chai assertions), but ships no chai-related functionality. index.js unconditionally loads lib/config.js on require(), and lib/config.js is a ~4 MB obfuscator.io payload with a 23,890-entry rotating string array, hex-obfuscated identifiers, and control-flow flattening. The remaining lib/ files (proto.js,...
Source
OpenSSF Malicious Packages via OSV
Summary
Malicious code in chai-as-bench (npm)
Details
The package presents itself as a chai plugin (name resembles chai-as-promised, manifest description references chai assertions), but ships no chai-related functionality. index.js unconditionally loads lib/config.js on require(), and lib/config.js is a ~4 MB obfuscator.io payload with a 23,890-entry rotating string array, hex-obfuscated identifiers, and control-flow flattening. The remaining lib/ files (proto.js, multistream.js, transport.js) plus LICENSE are copied verbatim from the unrelated pino logger project as camouflage, and index.js itself only exports a no-op Express-style middleware ((_req,_res,next)=>next()). README contains placeholder yourusername GitHub URLs and generic author metadata (james@abscond.org). Heavy obfuscation of a multi-megabyte payload that runs on every require(), inside a package whose advertised purpose does not require any such code and whose surrounding files are stolen from an unrelated project, is the standard loader/stealer shape for an npm supply-chain plant targeting developers who mistype chai-as-promised.
Decision reason
OpenSSF Malicious Packages via OSV confirms chai-as-bench@7.0.3 as malicious (MAL-2026-13699): Malicious code in chai-as-bench (npm)