Skip to content

Security Not yet confirmed elsewhere1 publisher 2 min read Published

Trail of Bits test finds 23 of 25 package managers skip integrity checks on some downloads

Only two of 25 popular package managers verified every package they downloaded in a Trail of Bits test. Fewer than half checked lockfiles for tampering by default, leaving many open to a compromised repository that injects code, the post says.

The Watch · Security desk

How we use AI Send a correction

Most tested managers lack default signature checks Package managers that did not verify signatures by default, out of the 25 package managers.

One bar out of 25 package managers: 24 of the 25 did not verify signatures by default.

Most tested managers lack default signature checks
SharePartWholePercentClaim
No default signature check24 package managers25 package managers96% (computed)16

What happened

  • Automatic lockfile hash verification was the default in about half of the managers tested.
  • On signatures, only Go verified them by default, and the rest needed extra configuration, lacked verification code, or did not support signatures.
  • The threat model assumes any web-facing server can be compromised, with Composer's Packagist and GitHub fetches as the example, while private signing keys stay secure.

Why it matters

  • exposure Teams on managers without default verification are trusting the repository host and every web-facing server it pulls from, such as Packagist and GitHub for Composer.
  • cost For the managers that do not verify automatically, integrity is a setup task that each team pays for, and the post's first table ranks managers by how much work that takes.
  • decision A lockfile is where the hashes live, so the choice to commit one is also a choice about whether hashes get checked at all.
  • precedent The author expects attackers to move to repositories if defences against developer compromise work. That is a forecast from the post, not a campaign anyone has reported.

This is a survey of design, not a bug with a CVE. The post does not cite a CVE or an attack in the wild.

The attacker's precondition is control of a server the package manager fetches from. The test harness grants it. The mitmproxy certificate authority is installed in each Docker image, so the addon can rewrite the plaintext of repository responses [9]. The author treats any web-facing server as compromisable, using Composer as the example because it fetches metadata from Packagist and packages from GitHub [10]. Private signing keys stay secure in the model [10]. A test attack counts as a success only if the sample code executes the injected malware [11].

The post's counts on defences are not identical. It says automatic hash verification was the default in about half of the managers [7], and separately that fewer than half used lockfiles that checked for tampering by default [5]. Fewer than half of 25 is at most 12 [14]. The excerpt does not give exact tallies for either. On the strictest measure, 23 of 25 managers did not verify every package they downloaded [15]. On signatures, 24 of 25 did not verify them by default [16].

The results hold for a particular configuration [3]. The author installed the latest version of each manager, followed quickstart guides for sample projects, infected popular packages from public repositories, and ran commands with default flags [1]. A team running other flags may see different results. The per-manager breakdown is in the post's two tables.

The author wrote that "This code integrity problem could be solved using cryptographic hashes or signatures, but many package managers are still vulnerable to this threat." [18] The forward-looking claim is also the author's. If mitigation of developer compromise succeeds, attackers will shift to the repositories that serve the code [17].

We think this belongs on a hardening backlog. It needs a repository compromise first, and the post's evidence is the design gap in the managers.

What to watch

  • A report of a real repository injection that matches the test model would turn the author's forecast into an observed campaign.
  • Default changes in the managers that fell short, since the author says some communities are already bringing improved designs to reality.
  • The post's closing discussion of cryptographic designs that might be adopted in future, which the excerpt does not reach.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence62
Adoption
Insufficient
Hype gap−5
Incentives
Insufficient
Confidence60
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    The author installed the latest package manager versions, followed quickstart guides for setting up sample projects inside the container, picked popular packages from public repositories to infect, and ran package manager commands with default flags.

    Reported Supported Source: Trail of Bits blog post2 sources— create a free account to open themView cited source
  2. [2]

    There are conflicting opinions about whether to include lockfiles in source code repositories, so the author tested both configurations.

    Reported Supported Source: Trail of Bits blog post2 sources— create a free account to open themView cited source
  3. [3]

    The results in the post's tables are experimentally verified for a particular configuration, with caveats detailed in the post.

    Reported Supported Source: Trail of Bits blog post, table captions2 sources— create a free account to open themView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. blog.trailofbits.com

    1 article · October 14, 2026

    Package managers have an integrity problem

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Entities

Loading related stories