本文へスキップ
MameTechNews
バックエンド

npmのTrusted Publishing、1,500超がリポジトリ名の再利用で露出

## POINTS

  • 未検証のTrusted Publishingは、手放されたリポジトリ名を取るだけで発行資格を得られる状態だった。
  • 該当は1,500超、累計1,000万ダウンロード超。実環境の悪用は未観測で、修正は10月2日に入っている。
  • 登録したリポジトリ名が今も自分のものを指すか確認し、違う場合は信頼設定を削除して作り直す。

セキュリティ企業Bloom Securityは、npmのTrusted Publishingを迂回できる問題をSlugFestと名付け、10月13日に規模を公表した。メンテナは公開に使うGitHubリポジトリとワークフローを登録するが、npmは当初、名前(owner/repo)とファイル名だけを見ていた。リポジトリの改名、移譲、削除で名前が空くと、別の利用者が同じ名前を取り、期待されるワークフローから短命の発行資格を得られた。メンテナのGitHubやnpmを侵す必要はない。

同社のレジストリ全体の走査では、1,500を超えるパッケージが該当し、累計ダウンロードは1,000万超、月間は100万超だった。月間20万超のパッケージも1つある。セキュリティスキャナ、認証、暗号関連も含まれる。研究用に管理するパッケージでは、別組織のリポジトリから新バージョンを公開できることを確認した。実環境での悪用は観測していない。

npmは10月2日、未検証の設定を作成から48時間で失効させる修正を入れた。初回の公開成功で設定は検証済みになる。GitHub Actionsのissue_comment由来のトークンも拒否する。既存の信頼関係はメンテナ側の確認が残る。登録名が今も自分のリポジトリを指すかを見て、違えば結び直し、想定外のpublishを監視する。同社は数十組織で、エージェントによる直接インストールが端末あたり月約70件、開発者マシンでは約350件だったとも測っている。