Threat intelligence · Vulnetix Research Lab

Supply-Chain Malware Trends

Four feeds carry the world's known open-source malware into the Vulnetix VDB. This page counts what each one actually delivered, malware advisories, malicious packages, actionable indicators and the bad actors behind them, tracked per ecosystem, per month across October 2024 to September 2026. Some are built for SCA scanners to match a package by name; Vulnetix enriches them and adds SOC-grade detection and attribution on top.

249.2K
Malware advisories
246.1K
Malicious packages
114.4K
Actionable indicators
46.8K
Bad actors
The four feeds

What each feed carried across October 2024 to September 2026

Every malicious advisory in the VDB is classified into exactly one of four feeds: OSSF Malicious Packages (published to OSV.dev, built for SCA scanners), OpenSourceMalware (a commercial catalogue, ingested per user API key), Vulnetix CLI Malscan (standalone GCVE-110 findings, built for SOC detection), and the remaining enriched Vulnetix VDB corpus, which spans more ecosystems than any single upstream feed. Advisories, IOC samples and actionable IOCs are additive; packages and actors are counted distinct within each ecosystem-month bucket. Actionable IOCs exclude the bare package-identifier types (a name, typosquat or version).

FeedAdvisoriesPackagesIOC samplesActionableActors
OSSF Malicious Packages 204.9K 205.6K 210.7K 635 167
OpenSourceMalware (OSM) 12.5K 11.3K 5.9K 2.8K 1.5K
Vulnetix CLI Malscan 28.1K 27.2K 112.4K 110.8K 45K
Vulnetix VDB 3.8K 1.9K 2.7K 208 70

What "Vulnetix VDB (enriched)" means

This bucket is not a single upstream feed. It is 3.8K malicious-package advisories aggregated from other databases, GitLab, Snyk, Gemnasium, GitHub (GHSA) and OSV, each of which, like OSSF, publishes primarily name-level records for SCA scanners. Vulnetix ingests and enriches them, adding the hashes, hosts, install commands and attribution the original advisory never carried, 208 actionable indicators and 70 actors on records that arrived carrying none. A scanner reading the raw upstream advisory cannot act on that; it would have to enrich the data itself, or query a source like the Vulnetix VDB that already has.

OpenSourceMalware.com

A note on the OpenSourceMalware figures. OpenSourceMalware is a commercial threat-intelligence catalogue, the "open source" is the subject (malware in open-source packages), not the licence. Under our agreement Vulnetix ingests OSM data only for users who supply their own OSM API key, so the 12.5K advisories shown here are the slice our users unlocked, not OSM's full catalogue. Vulnetix has also donated malware data back to OSM across several ecosystems.

Explore OpenSourceMalware → · Add your OSM API key to Vulnetix to widen this coverage.

Deep dive

The exposure window: how long is a malicious package installable before OSSF flags it?

We resolved when each malicious package was first published (deps.dev historical index plus the npm and PyPI registries) and compared it to the advisory's publish date, across 217808 OSSF npm packages and 11130 PyPI packages. The gap is how long the package sat installable before anyone was warned.

By the time an OSSF advisory reaches you the damage is done: anyone who installed the package during the window is already compromised, and the advisory is a post-mortem, not a warning.

Closing the window: Malscan at install time

Vulnetix Malscan runs at install time inside the Package Firewall, checking every package against this same intelligence before it reaches your build, so a malicious dependency is blocked as it installs, not catalogued a year later. Registries and platform teams can also run the Malscan CLI on demand, before publishing, to confirm they are not shipping malware into their own build systems or downstream to their customers.

Method: first-publish via the deps.dev API; advisory date from the OSV record. Packages absent from deps.dev, or whose only surviving record post-dates the advisory, are reported deleted/erased. Computed continuously in the Vulnetix VDB; sample as of the latest run and growing.

Detection value

Two audiences: SCA scanners and SOC teams

A malware advisory only helps a scanner if it ships something machine-readable: a hash, a domain, an install command, an attacker account. Counting the actionable indicators per feed shows which reporting a defender can act on.

Built for different jobs

OSSF Malicious Packages and OSV are built for SCA scanners: is this installed dependency on a known-bad list, by name? For that job a name is enough. Across October 2024 to September 2026 the OSSF feed accounted for 204.9K advisories (82% of everything counted here) and 210.7K IOC samples, of which 210.1K are the package name or a version.

Vulnetix ingests every one of those MAL- advisories and enriches it, resolving package coordinates, adding context, and running its own analysis over the package. That enrichment surfaced 635 actionable indicators and 167 attributed accounts on advisories that arrived as names alone, real value on top of what OSV publishes, though sparse by nature.

A SOC asks a different question, what do I block, hunt and attribute, and that needs indicators and identities. The Vulnetix CLI Malscan corpus is built for it: 110.8K actionable indicators and 45K attributed accounts from 28.1K advisories. Different jobs, different data, both valuable.

Ecosystems

Where the malware landed

The same 24 months, grouped by the ecosystem each malicious advisory targeted, ranked by advisory count.

EcosystemAdvisoriesPackagesActionable IOCsActors
npm 205.7K 206K 11.2K 9.6K
Unattributed 12.8K 9.3K 2 995
PyPI 9.5K 9.5K 40.2K 9.3K
Composer 8.7K 8.7K 28K 17.2K
AUR 4.8K 4.8K 13.7K 3.4K
Go 3.9K 3.6K 15.1K 4.4K
crates.io 1.1K 1.1K 3.6K 821
vscode 554 677 68 16
brew 415 415 107 361
RubyGems 389 381 11 7
gem 310 310 1.2K 406
openvsx 301 466 52 5
NuGet 208 348 22 29
Pub 181 181 515 124
crates 93 103 8 1
In summary

What October 2024 to September 2026 showed

Across the window the four feeds reported 249.2K malware advisories over 246.1K packages. Of the 331.8K IOC samples, only 114.4K were actionable indicators, and those, with the 46.8K attributed actors, came overwhelmingly from Vulnetix's own scanning and enrichment rather than the high-volume, name-only upstream advisories. Those advisories are useful, they feed an SCA scanner a blocklist, but they arrive after the fact: most flagged packages had been installable for months, and many were already gone by the time anyone was warned. The value is in the indicators, the attribution and the timing, and that is what the Vulnetix VDB and the install-time Package Firewall are built to carry.

Bucketed per source × ecosystem × month over the trailing window. advisories, iocSamples and actionableIocs are additive; packages and actors are counted distinct within each bucket, so a package or actor spanning multiple buckets is counted in each. actionableIocs is the subset of iocSamples excluding bare package-identifier types (package-name, typosquat, malicious-version) — i.e. the domains, IPs, URLs, hashes and other indicators a scanner can match on.

Block it at the gate

Know a package is malicious before it installs

The Vulnetix Package Firewall checks every install against this same malware intelligence, across 25+ registries, before the dependency reaches your build. The malicious domains, IPs and URLs behind these counts are also published as free STIX 2.1 feeds.

Start for free · See the Package Firewall · Malware campaigns and threat actors