「npm install」だけでコードが実行される時代が終了へ、npmが自動スクリプト実行を標準で停止する予定

JavaScriptのパッケージ管理ツール「npm」で、依存パッケージのインストール時に自動実行されるスクリプトについて、2026年7月リリース予定の「npm v12」以降は標準で実行しないようになる変更が予定されています。
Upcoming breaking changes for npm v12 - GitHub Changelog
https://github.blog/changelog/2026-06-09-upcoming-breaking-changes-for-npm-v12/
npmを使用してパッケージをインストールするとき、開発者はターミナルで「npm install」を実行します。npm installを実行すると依存関係にあるパッケージも含めてダウンロードされるという便利さがあり、Node.jsを使う開発ではおなじみの作業です。
パッケージの中にはインストール時に設定作業やビルド作業を行うスクリプトを含むものがあり、npm installを実行しただけで開発者のPCやプログラムのテスト・ビルドを自動実行するCIサーバー上でコードが動く場合があります。普段はネイティブ拡張のビルドや補助ファイルの生成に使われる仕組みですが、悪意あるパッケージや乗っ取られたパッケージが入り込むと、インストール作業そのものが攻撃の入り口になってしまうというわけです。

npm v11系までのnpm installでは、依存パッケージに含まれる「preinstall」「install」「postinstall」といったスクリプトがインストール前後など特定のタイミングで自動実行される動作が標準でした。パッケージを導入するだけで準備まで済ませられる反面、開発者が中身を確認していない依存パッケージの処理まで実行される点が問題になっていました。
GitHubはnpm v12において、自動実行を前提にした仕組みをやめ、開発者やプロジェクトが信頼したパッケージだけに実行を許可する仕組みへの切り替えを予定していると発表しました。npm v12では「allowScripts」が標準でオフになり、依存パッケージのpreinstall、install、postinstallスクリプトはプロジェクト側で明示的に許可しない限り実行されなくなります。Gitやfile、linkの依存関係に含まれる「prepare」スクリプトも同じ扱いとのこと。
また、C言語やC++などで書かれた処理をNode.jsから使うパッケージでは「node-gyp」というビルドツールが使われることがあります。パッケージに「binding.gyp」があり明示的なinstallスクリプトがない場合でも、npmは暗黙的に「node-gyp rebuild」を実行することがありました。npm v12では、暗黙的なnode-gyp rebuildも許可なしではブロックされます。

npm v12ではスクリプト実行の変更以外に、Gitリポジトリを依存関係として指定する機能も標準で無効になる予定です。package.jsonではnpmレジストリ上のバージョンだけでなく、GitHubなどのGitリポジトリを直接参照する依存関係も書けますが、npm v12では直接依存と間接依存のどちらでも、明示的に「--allow-git」で許可しない限りGit依存関係を解決しなくなります。
Git依存関係に含まれる「.npmrc」ファイルによってGit実行ファイルのパスを書き換えられる場合があり、「--ignore-scripts」でスクリプト実行を止めていても任意のコード実行につながる経路が存在しているとのこと。
同様に、リモートURLを指定した依存関係も標準では解決されなくなります。
npm 11.16.0以降のバージョンで「npm install」を行うとnpm v12でスクリプト実行が制限されるパッケージに対し警告が出ます。また、開発者は「npm approve-scripts --allow-scripts-pending」でブロック対象になり得るパッケージを一覧でき、信頼できるパッケージは「npm approve-scripts」で許可し、許可したくないパッケージは「npm deny-scripts」で拒否できます。許可や拒否の情報はpackage.jsonに記録され、チームで共有するためにリポジトリへコミットすることが推奨されています。
・関連記事
度重なるサプライチェーン攻撃を受けnpmが「段階的リリース」を導入、流出したトークンだけではパッケージを公開できない仕組みを追加 - GIGAZINE
Red Hatの公式npmチャンネルを通じて数十個のパッケージにバックドアが仕込まれていたと判明 - GIGAZINE
偽のBunランタイムでわずか数時間で1000個以上のNPMパッケージと2万7000個以上のGithubリポジトリがマルウェアに感染 - GIGAZINE
毎週数百万回ダウンロードされる人気JavaScriptライブラリ群「TanStack」にサプライチェーン攻撃、問題のあるバージョンをインストールした開発環境では認証情報流出の恐れ - GIGAZINE
「AIの出力をコピペする開発者」を狙って悪意あるnpmパッケージをインストールさせて情報を盗み取る攻撃手法「PhantomRaven」の存在が判明 - GIGAZINE
・関連コンテンツ
in ソフトウェア, セキュリティ, Posted by log1d_ts
You can read the machine translated English article The era of simply running 'npm install' ….







