【なぜ重要か】
axiosのような週間1億ダウンロードを誇るパッケージが、ソーシャルエンジニアリングによるアカウント乗っ取りを経由して悪意あるバージョンを公開されるという攻撃が現実に発生している。npmは今回の変更により、アカウント乗っ取りの初期段階で検知・遮断できる仕組みをレジストリレベルで実装した。日本のエンジニアやセキュリティ担当者にとっても、自分たちが依存するパッケージのサプライチェーンセキュリティに直結する重要な変更である。
【ポイント】
- 72時間の読み取り専用凍結:週間ダウンロード数100万以上、または500以上の依存パッケージを管理する「高影響力アカウント」でメールアドレス変更や2FAリカバリーコード使用などのセンシティブな操作が検出されると、そのアカウントは72時間読み取り専用状態になる。パッケージのインストールやダウンロードは通常通り継続されるが、公開・トークン管理・パッケージ可視性変更・組織メンバーシップ変更などは一時停止される。
- 背景となった攻撃事例:2025年3月のaxios侵害では、攻撃者が共同創業者を装いメンテナーをビデオ通話に誘導し、リモートアクセス型トロイの木馬(RAT)をインストールさせて、ライブのnpmセッションを奪取。メールアドレスを変更した上でCIシステムを一切通らずに悪意あるバージョンを直接公開した。メールアドレス変更は、正規オーナーのリカバリー経路を断ち、セキュリティアラートを攻撃者にリダイレクトするために使われる手口であり、npmがこの操作を検知できる唯一のポイントでもある。
- 既存の対策との補完関係:npmはここ1年ほどで「トラステッド・パブリッシング(長期トークン不要のOIDC認証による公開)」と「ステージド・パブリッシング(CIからのリリースをメンテナーが2FAで承認するまで公開されない)」を導入済み。トラステッド・パブリッシングは盗まれた認証情報に対処し、ステージド・パブリッシングはレビューなしの自動リリースに対処するが、いずれもライブセッションを持つ攻撃者には迂回される。今回の凍結措置は、この2つをすり抜けるアカウント乗っ取り攻撃への対処として機能する。
- パッケージ公開者向けの推奨アクション:npmアカウントに登録しているメールアドレスが自分でコントロールし実際に監視しているものであるかを確認する。可能であればFIDO2認証に移行する。予期しないメール変更通知はスパムや不具合ではなくセキュリティインシデントとして扱う。CIから公開している場合は、トラステッド・パブリッシングをステージ専用に設定し、長期トークンを無効化することで、すべてのリリースに人間の承認を必須にする。
- パッケージ利用者向けの補足:今回の変更により利用者側は何もしなくても恩恵を受けられる。ただし、すべてのパッケージがこれらのセキュリティ設定を有効にしているわけではない。Aikidoが提供する無償のオープンソースツール「Safe Chain」は、npm・npx・yarnのラッパーとして機能し、インストール前にマルウェアチェックを行い、新バージョンへの待機期間を強制することで、侵害されたリリースが手元に届く前に検知できる。
【まとめ】
npmが導入した72時間凍結措置は、トラステッド・パブリッシングおよびステージド・パブリッシングと組み合わせることで、アカウント乗っ取りを起点としたサプライチェーン攻撃の主要な経路を多層的に塞ぐものである。人気パッケージのメンテナーはまず自分のnpmアカウントのメールアドレスと2FA設定を見直し、CIパイプラインをトラステッド・パブリッシング+ステージ承認の構成に移行することを優先すべきである。