npm

chai-leaf @1.4.8

Vulnerability report · Last retrieved from osv.dev August 5, 2026 at 5:03 PM UTC

Malicious

OSV ID

MAL-2026-10940

Ecosystem

npm

Summary

chai-leaf@1.4.5's main entry index.js unconditionally requires./lib/config, which is a single 3,546,568-byte obfuscator.io-encoded file (20,721-entry string array with self-defending routines) that runs immediately on require(). The decoded string table inside lib/config.js contains literals for.ssh and.aws (installer credential directories) alongside axios, spawn, exec, Function, and require — the shape of a load-time credential stealer that reads secrets from the installer's home directory and exfiltrates via HTTP. package.json declares axios as a runtime dependency. The package presents itself with inconsistent cover stories: package.json describes it as vulnerability-management documentation while the README impersonates pino (badges, prose, and docs/api.md copied verbatim from pinojs/pino) and the lib/ tree mirrors pino's file names (proto.js, redaction.js, tools.js, transport.js, worker.js) with the extra obfuscated config.js that has no analog in real pino. The package name and README also allude to chai, unrelated to either declared purpose. A logger/chai plugin has no legitimate need for a multi-megabyte self-defending obfuscated blob that executes at import, and no legitimate need to reference ~/.ssh and ~/.aws.

Source: amazon-inspector (77cc7562a27df348fafc455124fd845dfc2e5774c42279ee6e3dd8f1cfb1f05b)

Protect your entire dependency tree

Scan your lock files automatically on every PR. Block malicious packages before they reach production.