GitHubが「npm 12」を発表、インストールスクリプトをデフォルト無効化しサプライチェーンリスクを低減
要点
- GitHubは、パッケージインストール時のスクリプト実行をデフォルトで無効化した「npm 12」を正式にリリースした。
- ライフサイクルスクリプトやGit・リモートURLからの依存関係解決は、明示的な許可が必要なオプトイン方式に変更される。
- 2要素認証(2FA)をバイパスするために設計された「粒度の細かいアクセストークン(GAT)」のサポートが段階的に廃止される。
- 2026年8月から管理操作におけるトークン使用が制限され、2027年1月には直接のパッケージ公開ができなくなる。
- 競合ツール「pnpm」でも、プロジェクトファイルからの認証情報漏洩を防ぐ機能が導入された。
リード文
GitHubは2026年7月8日、JavaScriptのパッケージ管理ツール「npm」の最新メジャーバージョンとなる「npm 12」を正式にリリースしたと発表した。本バージョンでは、悪意あるコードが混入するサプライチェーンリスク(ソフトウェアの開発・配布プロセスを狙うセキュリティ上の脅威)を低減するため、インストール時のスクリプト実行がデフォルトで無効化される。また、セキュリティ強化の一環として、2要素認証(2FA)をバイパスして動作するアクセストークンの段階的な機能制限と非推奨化も明らかにされた。
本文
これまでnpmでは、パッケージインストール時に開発者が意図しないスクリプトが自動実行される仕様だったが、npm 12からは明示的な許可を必要とするオプトイン方式に切り替わる。具体的には、以下の3つの動作が初期状態で無効化された。
- allowScriptsのデフォルトoff: インストール前後に動作するライフサイクルスクリプト(preinstall、install、postinstallなど)や、C++拡張機能をコンパイルする「node-gyp」によるビルド処理は、明示的に許可しない限り自動実行されなくなる。
- --allow-gitのデフォルトnone: 直接または間接的に参照されているGit依存関係は、明示的に許可を与えない限り読み込まれなくなる。
- --allow-remoteのデフォルトnone: リモートURLからの依存関係も、許可なしには解決されなくなった。
信頼できるスクリプトを承認するには、コマンド npm approve-scripts --allow-scripts-pending を実行し、生成された許可リストを package.json にコミットして保存する手順が必要だ。なお、これらの変更は2026年6月にプレビュー版として予告されていたもので、GitHubは事前にnpm 11.16.0以降へのアップグレードと警告の確認を推奨していた。
さらにnpm 12では、2要素認証(2FA:IDとパスワードに加え、別デバイスでの認証コード等を求める仕組み)をバイパスするよう設計された「粒度の細かいアクセストークン(GAT:権限を細かく設定して発行できる、特定の操作を行うための認証用の文字列)」に対して、二つの制限が設けられた。
第1の制限として、2FAをバイパスするGATは、トークンの作成・削除、パスワード変更、2FA設定の変更、組織のメンバーシップ管理など、機密性の高い管理操作を実行できなくなる。この制限は2026年8月上旬に開始され、それ以降は対話的な2FAを用いた手続きが推奨される。
第2の制限として、GATを用いた直接のパッケージ公開(パブリッシュ)ができなくなる。GATの権限はプライベートパッケージの読み取りと公開準備段階である「ステージング」のみに制限され、人間による2FA承認を経て初めて一般公開される。この制限は2027年1月に実施予定だ。GitHubは開発者に対し、長寿命のパブリッシュトークンの使用を止め、自動化された公開処理を「信頼されたパブリッシング(OIDCと呼ばれる標準的な認証プロトコルを用いた手法)」などへ移行するよう呼びかけている。
一方、別のパッケージ管理ツール「pnpm」でもセキュリティを強化する取り組みが進められている。pnpmのバージョン11.10では、レジストリ(パッケージの登録先)に対する認証情報を設定するための新しい項目「_auth」が導入された。これは、認証情報と対応するホスト情報をセットにした単一の構造化された値として管理される。
pnpmは、環境変数またはグローバルな設定ファイルからのみこの「_auth」の情報を読み取り、プロジェクトファイルからは一切読み取らない。これにより、プロジェクト内に悪意を持って配置された、または改ざんされた設定ファイルがあったとしても、そこから有効なトークンを攻撃者が用意した別のホストに転送させて盗み出すことができなくなる。プロジェクトファイルの改ざんは攻撃者が足がかりを得る一般的な手法であり、この経路を塞ぐことでリスクを排除している。