Malicious code in chai-as-indexed (npm)
Collected exploitation and prediction evidence
Risk source coverageCISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.
No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.
osv · MAL-2026-16293
Published--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (6bd158a05893a55a82bee4867772aefbfb3199a443c38e7161db1a71d47ced86) chai-as-indexed presents itself as a pino-compatible logger (package.json keywords fast/logger/stream/json, exports module.exports.pino, lib/* filenames mirror pino) but the exported middleware's only real action is to spawn a detached Node child that runs lib/caller.js. lib/caller.js hides its C2 behind a fake local `process.env` object whose values are base64 literals (DEV_API_KEY, DEV_SECRET_KEY, DEV_SECRET_VALUE); at runtime they decode to the URL https://tomato-erminie-2.tiiny.site/index.json and a request header. The decoded URL is fetched and the JSON response's `cookie` field is passed to `new Function.constructor('require', response)(require)`, executing attacker-controlled JavaScript with the host process's full Node privileges and `require` handed in. The destination is an anonymous, author-mutable tiiny.site host with no pinning or integrity check. Any application that requires this package expecting pino and invokes the middleware will fetch and execute whatever the attacker is currently serving.
- Source published
- 18 Sep 2026 20:25:47 UTC
- Source modified
- 8 Oct 2026 04:00:04 UTC
- Observed here
- 24 Oct 2026 13:17:17 UTC
- Source terms
- OSV · upstream source license applies
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · OSV · upstream source license applies. Source text is retained; field grouping and change labels are provided by ChangeIntel.