A verdict is only worth what the data behind it is worth. These are our sources, their licences, how fresh they are, and what each one genuinely cannot tell you.
8,421
indicators held
30
rules in 7 categories
2026.07.21c
rules version
Newest indicator first seen 2026-07-21.
Malware distribution URLs and domains. Used to match indicators embedded INSIDE a scanned artifact.
Freshness: Refreshed daily.
What it cannot tell you: Covers where malware is served from, not what a package contains. It essentially never holds an npm package hash, which is why npm identity is answered from OSV instead.
Command-and-control indicators: IPs, domains, and file hashes tied to active malware families.
Freshness: Refreshed daily.
What it cannot tell you: Indicator-based. A brand-new C2 that nobody has reported yet is not in it, and neither are we.
Published malicious-package advisories (MAL- records and equivalent GHSA malware advisories). This is what makes a `malicious` verdict reachable for npm at all.
Freshness: Queried live per request, never a stale local copy.
What it cannot tell you: Advisories land AFTER a compromise is discovered, sometimes days after. A package published as malware an hour ago is not in it yet. Coverage is also version-scoped, so an unpinned name may be unanswerable.
Deterministic behavioral rules over the artifact itself: credential access, exfiltration, obfuscation, dynamic execution, persistence, install-time droppers, prompt injection aimed at an agent.
Freshness: Versioned; every change bumps `rules_version` and invalidates cached verdicts.
What it cannot tell you: Heuristics, so they cap at `flagged` and never produce `malicious` on their own. They read source text: a minified or packed bundle is reported as partially analyzed rather than silently skipped.
CC0-1.0 — 8,405 indicatorsinternal-corpus — 16 indicatorsThe abuse.ch feeds are public domain, so crediting them is not a licence obligation. We do it because you deserve to know whose data is behind a verdict, and a source we would be reluctant to name would be a source we should not be using.
Stated as plainly as the coverage above, because a clear verdict being read as a
clean bill of health is the one misunderstanding this product cannot afford:
Live counts and freshness: /v1/health · rule catalog: /v1/rules · mistakes we have corrected: /corrections