CI/CDを乗っ取り「悪意あるnpmパッケージ」を流通させる攻撃が深刻化。GitHubは、2つの機能追加を発表した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
近年、npmレジストリを狙うソフトウェアサプライチェーン攻撃が深刻化している。CI/CD(継続的インテグレーション/継続的デリバリー)ワークフローや自動化されたパブリッシュフローを乗っ取られると、サイバー攻撃者は悪意あるパッケージをレジストリに公開できてしまう。
開発者が正規パッケージと思ってnpmパッケージをインストールすることを狙った攻撃を防ぐべくGitHubは2026年5月22日(米国時間)、npmのサプライチェーンセキュリティに関連する2つの更新を発表した。
1つ目は一般提供開始となった「ステージドパブリッシング」だ。従来の直接公開では、コマンドを実行した時点でパッケージのバージョンが即座に利用者に提供される。ステージドパブリッシングでは、事前ビルドしたtarballをまずステージキューにアップロードし、メンテナーがキューを確認して明示的に承認した時点でインストール可能になる。ステージキューは「npmjs.com」「npm CLI」の両方で可視化される。
ステージドパブリッシングは、公開のたびに「人間の介在の証明(proof of presence)」を強化する。対話的でないCI/CDワークフローからのパブリッシュや、OIDC(OpenID Connect)を用いたトラステッドパブリッシングも対象だ。レジストリに公開する前には、二要素認証(2FA)を完了したメンテナーによる承認が必須となる。
ステージドパブリッシングは既に提供開始されており、下記ドキュメントも公開されている。
ステージドパブリッシングを利用するには、npm CLI 11.15.0以降が必要だ。ステージ動作を有効化したいCI/CDワークフローでは、「npm publish」の代わりに「npm stage publish」コマンドを使うようワークフローを更新する必要がある。
GitHubは、ステージドパブリッシングを、トラステッドパブリッシングと組み合わせて利用することを推奨している。トラステッドパブリッシングの構成はステージ専用に制限でき、当該ワークフローからの「npm publish」コマンドは拒否され、「npm stage publish」コマンドのみが受け付けられる。
CIワークフローは非対話的に動作を継続し、メンテナーは後からWebサイトまたはCLIから、ステージされたバージョンを承認する。「npm stage publish」コマンドをローカル環境で実行することもできるが、最も効果的な構成はCIによるステージキューへの公開と、信頼された端末からのメンテナー承認との組み合わせだ。
2026年2月にリリースされたトラステッドパブリッシング構成の一括管理機能を既に運用している場合、これを利用して既存パッケージをステージドパブリッシングに移行できる。その際もCIワークフローを新CLIバージョンに更新し、「npm stage publish」コマンドを使うよう変更する必要がある。
2つ目の機能追加は、3つのインストールソースフラグだ。npm 11.10.0で導入された「--allow-git」フラグによって、「npm install」コマンドがGitソースから依存関係を解決するかどうかを制御できるようになった。npm 11.15.0からは、レジストリ以外の全インストールソースに同様の明示的な許可リスト方式を適用できるように3つのフラグが追加される。
各フラグは「all」(現在の既定値)または「none」を指定できる。「.npmrc」または「package.json」の設定にも記述可能だ。詳細は「npm install」レファレンスと設定レファレンスで参照できる。
2026年2月の発表で既に告知されている通り、「--allow-git」の既定値は次のメジャーバージョン(v12)で「all」から「none」に変更される予定だ。今回11.15.0で追加された「--allow-file」「--allow-remote」「--allow-directory」も、明示的に「none」に設定することで、現時点からより厳格な動作にオプトインできる。
「開発者はおいしい脆弱性になった」 AIコーディング、採用、OSS、CI/CD“4つの包囲網”と生存戦略
AIプログラミング時代に潜む罠 ソフトウェアサプライチェーンの現在と身を守るための新常識
開発者を狙う大規模フィッシングに注意 約6週間で250通以上の攻撃メール
Microsoftのシステムが外部パッケージを実行? 依存関係混乱を巡る攻防
6分に1つのペースで悪性パッケージが見つかる オープンソースエコシステムを狙う攻撃の実態Copyright © ITmedia, Inc. All Rights Reserved.
編集部からのお知らせ