Start with Identity
News

SlugFest: npm trusted publishing trusted repository names, so reclaimed names could publish

Bloom Security found npm trusted publishing matched GitHub repositories by owner/name until first publish, letting anyone who reclaimed a renamed or deleted slug mint publish tokens for more than 1,500 packages. npm now expires unvalidated configurations after 48 hours.

By SWI Community TeamOct 13, 2026

Bloom Security disclosed SlugFest on October 13: npm trusted publishing identified the GitHub repository allowed to publish a package by its owner/repository name, and only stored the permanent numeric repository ID after the first successful publish. If a maintainer configured trusted publishing and then renamed, transferred or deleted the repository, or the owner account, before publishing from it, anyone could register the freed name, add a workflow with the expected filename, and exchange a GitHub Actions OIDC token for a valid npm publish credential with no maintainer secrets. Bloom counts more than 1,500 exposed packages with over 10 million total downloads and reports no confirmed exploitation. It reported the issue on June 6. GitHub's October 2 changelog makes unvalidated configurations expire 48 hours after creation and also rejects trusted publishing tokens from issue_comment workflow events.

Why it matters

Trusted publishing replaces long-lived npm tokens with short-lived OIDC exchanges, which is the right direction, but the trust is only as good as the identifier it binds to. A name that can be released and reclaimed is not an identity. This is the same lesson as orphaned accounts: the binding outlived the thing it pointed at.

Maintainers should run npm trust list, confirm every bound repository still exists under their control, delete and recreate bindings after any rename or transfer, remove bindings before deleting a repository, and publish once immediately after creating a new binding so it locks to the numeric ID. Watch for publishes you did not start. The same check applies to workload identity federation trust policies in cloud accounts that match on repository name. Bloom's write-up is here and GitHub's change is in the changelog.

Source: The Hacker News

Last reviewed By SWI Community TeamSuggest a correctionHow we research
Independent analysis. No vendor sponsorship.