Safeguard
Supply Chain•

Malicious package reports in 2026: bulk days versus the steady rate

In 2026, OSV holds 13,024 npm and 3,368 RubyGems malware records, but 2,540 of the RubyGems ones landed in July. How to read monthly malware counts.

Safeguard Security Team
3 min read

OSV holds 13,024 npm, 3,368 RubyGems and 1,469 PyPI malicious package records dated 2026 so far. But the shape differs: PyPI runs at 56 to 235 a month, npm swings between about 330 and 4,082, and RubyGems had 2,540 of its records in July alone. Look for bulk days before reading any trend.

Method

We downloaded the per-ecosystem OSV dumps on 19 October 2026 and took records with IDs starting MAL (OpenSSF malicious-packages project) whose published date falls in 2026, through 18 October. We counted by ecosystem and month, and by day where a month looked odd. We did not determine the cause of any bulk day.

Counts for 2026

EcosystemMAL records published in 2026
npm13,024
RubyGems3,368
PyPI1,469
NuGet22
crates.io18
Go12

npm by month

January 527, February 330, March 1,047, April 619, May 1,629, June 1,431, July 2,060, August 4,082, September 886 and October 413 (to the 18th). August looks like a surge, but two days account for 2,311 of its 4,082 records: 5 August (1,353) and 28 August (958). Take those out and August is about 1,770, below July.

PyPI by month

January 92, February 147, March 221, April 186, May 235, June 176, July 162, August 98, September 96 and October 56 (to the 18th). PyPI has no single day above 32 records in 2026, so its curve is the easiest to read: a rise to a spring plateau and a decline since.

RubyGems

RubyGems had 3 to 20 records a month from February to June, then 2,540 in July, 115 in August, 611 in September and 66 in October so far. We did not establish what the July batch contains.

How to read a monthly chart

  1. Draw it by day first. A bar that is mostly one day is an event, not a trend.
  2. Say what you removed. If you strip bulk days, show both lines.
  3. Compare registries by their quiet months. The gap between npm and PyPI is large even then: npm's quietest 2026 month (330) is above PyPI's busiest (235).
  4. Remember what the count measures. It counts reports published in the dataset, not packages published by attackers. A drop can mean a source stopped reporting.

What it means for defenders

A rising count should not drive your controls. Your exposure depends on what you install, from where, and how quickly. Pin versions, delay adoption of brand new releases for packages you do not watch, and keep a record of what each build pulled. Those controls work whether the month's total is 50 or 4,000.

Safeguard's SBOM and dependency scanning lists the components you run, and reachability analysis helps separate vulnerable code your application calls from code it does not. You can try a free scan at gold.safeguard.sh/scan.

Quick check

Is August 2026 an npm attack surge?

Not by this data. Two days hold more than half of that month, and we cannot say what they contain.

Why is npm so much higher than PyPI?

The dataset has far more npm reports, and npm has more packages and more scanning. The count alone does not show which is safer.

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.