Safeguard
Industry Analysis•

A few packages carry many advisories, most carry one: concentration

In npm, 75.4 percent of packages with advisories have exactly one. In NuGet the top ten carry 31.1 percent. Advisory concentration in eight ecosystems.

Safeguard Security Team
4 min read

Advisories are not spread evenly. In OSV exports from 19 October 2026, 75.4 percent of npm packages with an advisory have exactly one, while PyPI and Go have a heavier middle, with only 22.8 and 19.6 percent at one. The top ten packages carry between 10.8 and 31.1 percent of all advisory links.

Method

We downloaded eight OSV exports on 19 October 2026 and kept vulnerability advisories (excluding MAL- and withdrawn records). We counted, for each package name, how many advisories list it. An advisory that lists several package names counts once for each. Shares of the top ten are of these package links, not of distinct advisories.

Limits: several package names can be one product (see below), so "package" here means a registry name, not a project.

What the numbers say

EcosystemPackages with advisoriesExactly one advisoryTop ten share of linksLargest single count
npm3,83075.4%16.4%590
RubyGems50065.2%23.0%62
crates.io1,81262.6%10.8%102
Maven3,41061.0%12.6%259
Packagist1,52360.4%24.9%437
NuGet73553.6%31.1%247
PyPI1,94422.8%27.5%861
Go1,70519.6%18.7%479

The heavy hitters are mostly applications and platforms, not small libraries. In Maven the top entry is the core package of a CI server (259). In Packagist it is a learning platform (437), and a commerce platform and a content system follow. In Go the leaders are a team chat server, a note-taking app and a Git hosting service. Large products accumulate advisories because they have many features and many researchers.

Same product, many names

Counting by name hides a pattern. In PyPI, three package names for one machine learning library (the main one, a GPU build and a CPU build) carry 861, 848 and 847 advisories, and these are largely the same advisories listed against three names. In NuGet, 41.2 percent of advisories list more than one package name, which fits one imaging library published in many build variants. In Go, 17.0 percent do, and the top Go entry has several version paths of the same module.

So a raw top ten overstates how many separate problems exist. Group by project before you read a ranking.

What to do with it

For triage, the long tail matters more than the leaders. Three in four npm packages with an advisory have only one, which means a typical vulnerable dependency is not famous. A watchlist of well known projects would miss most of your exposure.

For vendor and platform choices, a high count on a large product is not by itself a reason to avoid it. Read the fix rate and how fast patches arrive instead.

For reporting, say whether your counts are by package name, project or advisory.

Safeguard's SBOM and dependency scanning lists every component, including the many quiet ones, and the free scan at https://gold.safeguard.sh/scan shows how many of them have a record.

Try it yourself

Open the demo and look at the dependency inventory, especially how many components appear that you would not have named.

Click through it at your own pace, or open it full screen.

Quick check

Is the package with the most advisories the most dangerous?

Not necessarily. It may be a large application, or a name that duplicates another. Count by project and read fix rates.

Why list package names that carry only one advisory?

Because they are most of the packages. Ignoring them means ignoring most of the exposure.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.