Case · DiggingBeagle record

npm trusted publishing could accept a reclaimed repository slug as package authority

npm trusted publishing could accept an attacker-reclaimed GitHub repository name as valid workflow provenance for an older package binding.

Scope

Unvalidated npm trusted publishing configurations tied to mutable GitHub repository slugs, as disclosed by Bloom Security in October 2026. Potentially susceptible packages are not proven hijacked. New configurations have a reported 48-hour validation expiry.

Assessment profile

Assessment method
Setting
research demonstration
Exploitation
demonstrated
Impact
Band 3 of 4
Evidence
Grade B
Remediation
mitigation available
AI role
WITH AI
Basis and provenance

Bloom's SlugFest write-up documents reuse of a prior GitHub owner/repo name with resulting trusted-publisher authority. GitHub introduced a 48-hour expiry for unvalidated configurations, a meaningful mitigation but not a universal proof that all identity-reuse configurations are safe. No actual package theft or customer count should be inferred from download statistics.

Impact basis: A controlled OIDC trusted-publisher takeover through a reclaimed mutable repository slug could authorize a package publication under a new operator. The studied vulnerable packages are potentially exposed, not all hijacked; no widespread malicious payload installation is established.

Assessed Oct 19, 2026 using diggingbeagle.assessment/1.

At a glance

Claims & evidence

CLM-NPM-SLUGFEST-REPO-RECLAIMBloom Security reported that an unvalidated npm trusted-publishing configuration could recognize a newly claimed GitHub repository slug as the issuer of a package that had trusted a prior repository identity.supported

Basis: reported finding

Link to claim

Implications

Coding agents are a distribution amplifier here because they fetch and execute packages automatically. They are not the root vulnerability, which is an identity binding in npm trusted publishing.

Controls and mitigations

  • Bind publisher identity to immutable repository and owner identifiers and revalidate it at token exchange, independent of mutable GitHub names.

Unknowns and contradictions

  • Bloom estimated more than 1,500 potentially affected packages and more than ten million historical downloads. Those are exposure counts, not 1,500 observed malicious releases. GitHub announced expiry of unvalidated configurations after 48 hours, which is not equivalent to proving immutable repository-ID validation in every case.

Sources and citation

Material revision history

  1. Oct 19, 2026 · Published version · first publication · revision 174
  2. Oct 19, 2026 · Canonical change recorded · material revision · revision 175Public fields changed: assessment_profile