
GitHubは、JavaScriptのパッケージ配布サービス「npm」の公開(パブリッシュ)の仕組みを見直し、検証されていない「Trusted Publishing(信頼された公開)」の設定を、作成から48時間で自動的に失効させる措置を取りました。研究者らが、攻撃者が他人のパッケージの正規の新バージョンを、認証情報を盗むことなく公開できてしまうセキュリティホールを見つけたためです。
Trusted Publishingとは、パスワードや長期的なトークンを使わず、「このGitHubのリポジトリからの公開だけを許可する」と事前に登録しておく方式です。鍵の盗難リスクを減らせる安全な仕組みとして、近年広まっていました。ところが、この登録内容が十分に検証されないまま有効になる場合があり、その隙を突くと、本来の持ち主ではない人物が新しいバージョンを公開できる可能性があったとされています。
報道によれば、影響を受けうるパッケージは1,500件以上にのぼります。npmのパッケージは、無数のアプリやサイトの部品として自動的に取り込まれるため、人気パッケージが改ざんされると、その部品を使うすべての開発環境や製品に不正なコードが広がるおそれがあります。これが「サプライチェーン攻撃」と呼ばれる手口です。
GitHubの新しい運用では、検証されていない設定は48時間で無効になり、そのうちに正しい検証を済ませる必要があります。パッケージを公開している開発者は、Trusted Publishingの設定内容を見直し、身に覚えのない設定が残っていないか確認しておくとよいでしょう。npmのパッケージを使う側も、依存パッケージを固定(ロックファイルの利用)し、更新時に変更内容を確認する習慣が有効です。