概要
npmは、2025年12月にSha1-Hulud事件への対応として、主要な認証オーバーホールを完了しました。このオーバーホールは供給チェーン攻撃のリスクを減らす重要な一歩ですが、npmプロジェクトが供給チェーン攻撃から完全に免疫になるわけではありません。
問題の背景
これまで、npmは長期間有効で広範なスコープを持つトークン(クラシックトークン)を主に使用していました。これらのトークンが盗まれると、攻撃者はそのパッケージに対して悪意のあるバージョンを直接公開することができました。
npmの対策
npmは以下の変更を行いました:
- すべてのクラシックトークンを無効化し、セッションベースのトークンにデフォルトで切り替えました。
- トークン管理機能を改善しました。インタラクティブなワークフローでは、npm loginを通じて取得される短時間有効のセッショントークン(通常2時間)を使用します。
- MFA(多要素認証)がデフォルトでオンになっています。
依然として残る問題点
第一に、ChalkJSなどのツールに対する最初の攻撃はnpmコンソールでのMFAフィッシング攻撃でした。これは、開発者が適切な対策を講じても被害を受けてしまう可能性があることを示しています。
第二に、パブリッシュ時のMFAはオプションであり、90日間有効のトークンを作成する機能がまだ存在します。これは、攻撃者が悪意のあるパッケージやバージョンを公開できる可能性があります。
今後の推奨事項
オープンソースセキュリティの観点から、以下の3つの提案を行います:
- OIDC(OpenID Connect)とMFAをパブリッシュ時のデフォルトとして強制する。
- MFAバイパスが可能なカスタムトークンを作成することを禁止する。
- パッケージのリリースにメタデータを追加し、供給チェーンセキュリティ対策を行っていないパッケージやメンテナを避けるように開発者に警告する。
結論
npmは重要な一歩を踏み出し、永久的なトークンの廃止とデフォルト設定の改善を行いました。しかし、短時間有効で身元に基づいた資格情報が標準となるまで、攻撃者による構築システムの侵害リスクは依然として存在します。
元記事: https://thehackernews.com/2026/02/npms-update-to-harden-their-supply.html
