2026年6月9日、GitHubはnpm v12に導入される3つのセキュリティ関連の破壊的変更(Breaking Changes)を公式Changelogで発表しました。
npm v12のリリースは2026年7月予定です。今回の変更の核心は「npm installコマンド実行時に自動的に行われていたコード実行と外部ソースからの依存関係取得を、すべて明示的な許可が必要な操作へ変更する」という方針転換です。
具体的には、①依存パッケージのpreinstall・install・postinstallスクリプトのデフォルト無効化、
②Gitリポジトリからの依存関係取得のデフォルト遮断、
③リモートURL(HTTPSターボール等)からの依存関係取得のデフォルト遮断
の3点です。これらの変更が急務とされる背景には、2026年3月31日に発生した週1億ダウンロード超のJavaScriptライブラリ「Axios」への汚染攻撃があります。
北朝鮮(DPRK)の国家支援グループ「Lazarus(UNC1069・BlueNoroff)」がAxiosのメンテナーアカウントを乗っ取り、postinstallフックを悪用してリモートアクセス型トロイの木馬(SILKBELL)をサイレントインストールさせる手口が使われ、Google GTIG・Mandiant・CrowdStrikeが独立してDPRK帰属を確認しています。今回のnpm v12の変更が正式適用されていれば、この攻撃の自動実行経路は遮断されていた計算です。本記事ではGitHub公式発表に基づいて3つの変更の詳細・今から実施できる準備手順・pnpm/Yarn Berryとの比較・今回の変更でも防げない攻撃パターンを解説します。
サマリー
- 2026年6月9日、GitHub公式Changelogでnpm v12のBreaking Changesを発表。2026年7月リリース予定
- 変更①:
allowScriptsがデフォルトoff——preinstall・install・postinstallスクリプトは明示的に許可しない限り実行されない。node-gypの暗黙的リビルドも対象 - 変更②:
--allow-gitがデフォルトnone——Gitリポジトリからの依存関係(直接・推移的問わず)は許可なく解決されない。Gitの.npmrcによるGit実行ファイル上書きという悪用経路を閉じる - 変更③:
--allow-remoteがデフォルトnone——HTTPSターボール等のリモートURLからの依存関係は許可なく解決されない - 今すぐ準備可能:npm 11.16.0以降にアップグレードすることで変更の影響をWarningとして事前確認できる
- 直近の標的事案:Lazarus(DPRK・UNC1069)が2026年3月31日にAxios(週1億DL超)の
postinstallフックにSILKBELLトロイの木馬を仕込んだ攻撃——npm v12の変更で自動実行が遮断される - Lazarusの規模:2025年にnpm上に800件以上の悪意あるパッケージを公開(Sonatype)。GitHubは「npmを国家の収益源として扱っている」と認識
- pnpm/Yarn Berryとの比較:pnpm(v9以降)・Yarn Berry(v2以降)はすでにスクリプト無効化がデフォルト——npmが追いついた形
- 今回の変更で防げない攻撃:node-ipc攻撃(2026年5月14日)のような「
require()時に実行されるランタイムペイロード」はインストール時フック無効化の対象外
目次
npm installが攻撃の入り口になっている
Axios攻撃(2026年3月31日)——今回の変更が直接阻止できた事案
2026年3月31日00時21分〜03時20分(UTC)の間、Google Threat Intelligence Group(GTIG)がAxiosのnpmパッケージへの能動的なサプライチェーン攻撃を検知しました。
攻撃者(DPRK帰属のUNC1069・BlueNoroff・Lazarus)はAxiosのメンテナーアカウントを乗っ取り、悪意のある依存パッケージ[email protected]をAxios 1.14.1と0.30.4に注入しました。plain-crypto-jsのpackage.jsonには以下のpostinstallフックが設定されていました。
"scripts": {
"postinstall": "node setup.js"
}
Axiosをインストールした開発者の環境で、npmは自動的にsetup.jsを実行。このスクリプトはSILKBELLと呼ばれるクロスプラットフォームのリモートアクセス型トロイの木馬を配信しました。
- Axios 1.14.1の週次ダウンロード数:約1億件
- Axios 0.30.4の週次ダウンロード数:約8,300万件
npm v12のallowScriptsデフォルトoff変更が適用されていれば、この攻撃におけるpostinstallスクリプトの自動実行は遮断されていたことになります。
Lazarusのnpm悪用の規模
Sonatypeの2026年報告によれば、Lazarus Groupは2025年にnpm上に800件以上の悪意あるパッケージを公開しており、その97%がJavaScriptエコシステムを標的にしています。ある調査会社は「DPRKはnpmを国家の収益源として、日和見的なターゲットではなく戦略的に扱っている」と評価しています。また別の攻撃キャンペーン(「インドネシア料理キャンペーン」)では悪意あるパッケージが7秒ごとに1件のペースで公開され、数日間で10万件以上が登録されるという規模にまで到達しています。
変更①:allowScriptsのデフォルトをoffに——スクリプトの明示的な許可制へ
変更内容
GitHub公式発表によれば、npm v12からnpm installは依存パッケージのpreinstall・install・postinstallスクリプトをプロジェクトで明示的に許可されない限り実行しなくなります。
これには以下が含まれます:
- ネイティブモジュールの
node-gypリビルド(binding.gypを持つパッケージの暗黙的なnode-gyp rebuildも対象) - Git・ローカルファイル・リンク依存関係の
prepareスクリプト
実際の影響:「攻撃者がnpm installを武器化する」経路の遮断
現在のnpm installは、インストールするすべての依存パッケージのインストールスクリプトを暗黙的に信頼して実行します。Mondooのnpmセキュリティ解説(2026年5月)は「npm installを実行するたびに、あなたがプルダウンするすべてのパッケージがライフサイクルスクリプトを通じてマシン上で任意コードを実行できる。これらのスクリプトはあなたのフルユーザー権限で動作し、ファイルシステム・認証情報・SSHキー・クラウドトークン・CI/CDシークレットへのアクセスがある」と説明しています。
Shai-Hulud攻撃(2025年)ではpre/postinstallスクリプトがnpmトークンとGitHub認証情報を窃取し、それを使って感染した開発者がメンテナーを務める別のパッケージの汚染バージョンを公開するというワーム的な指数関数的感染拡大が発生しました。
準備方法(今すぐ実施可能)
# npm 11.16.0以降にアップグレード
npm install -g npm@latest
# ブロックされるスクリプトの確認
npm approve-scripts --allow-scripts-pending
# 信頼するパッケージのスクリプトを許可
npm approve-scripts
# 許可しないパッケージを明示的にブロック
npm deny-scripts
# 更新されたpackage.jsonをコミット
git add package.json && git commit -m "npm v12: approve required install scripts"
許可リストはpackage.jsonに書き込まれ、リポジトリにコミットすることが推奨されます。
変更②:--allow-gitのデフォルトをnoneに——Gitリポジトリ依存関係の遮断
GitHub公式によれば、npm v12からnpm installはGitリポジトリからの依存関係(直接・推移的を問わず)を--allow-gitで明示的に許可しない限り解決しなくなります。
この変更が重要な理由として、GitHubは「Gitの依存関係の.npmrcファイルが、--ignore-scriptsが有効な場合でも使用するGit実行ファイルを上書きできるというコード実行経路を閉じる」と説明しています。つまり、--ignore-scriptsでインストールスクリプトを無効化しても、Gitリポジトリに配置された.npmrcを悪用することでGit実行ファイル自体を置き換えてコードを実行できるという迂回路が存在していました。
この変更は2026年2月18日に事前告知されており、npm 11.10.0以降で既に--allow-gitフラグが利用可能です。
変更③:--allow-remoteのデフォルトをnoneに——リモートURL依存関係の遮断
npm v12からnpm installはHTTPSターボールなどのリモートURLからの依存関係(直接・推移的を問わず)を--allow-remoteで明示的に許可しない限り解決しなくなります。このフラグはnpm 11.15.0以降で利用可能です。
なお--allow-file(ローカルファイルパス)と--allow-directoryフラグはv12ではデフォルトを変更しないことがGitHubの公式発表で明記されています。
pnpm・Yarn Berryとの比較——npmが「追いついた」変更
今回のnpm v12のスクリプトデフォルト無効化について特筆すべきは、pnpm(v9以降)やYarn Berry(v2以降)がすでに同様のデフォルト設定を採用していたという事実です。
pnpmはビルドスクリプトをデフォルトでブロックし、pnpm-workspace.yamlのallowBuildsマップで明示的にスクリプト実行を許可する方式を採用。pnpm v11ではこれを単一の統合マップに統一しました。
Yarn Berryはv2以降、enableScripts: falseをデフォルトとしており、サードパーティのpostinstallスクリプトをブロックしています。
Mondooは「pnpmは何年も前からスクリプトオフがデフォルトだった。npmは今回ようやく追いついた」と評価しています。
今回の変更でも防げない攻撃パターン
npm v12のセキュリティ強化は重要ですが、すべてのサプライチェーン攻撃を防ぐわけではありません。
node-ipc攻撃(2026年5月14日)が代表例です。StepSecurityが検出したこの攻撃では、9.1.6・9.2.3・12.0.1の3バージョンが同時公開され(週1,000万DL超)、CommonJSバンドル内に認証情報窃取のペイロードが注入されました。しかしこの攻撃のペイロードはpreinstallやpostinstallフックではなく、require('node-ipc')呼び出し時に実行される設計でした。
インストール時フックをスキャンするツールには見えず、npm installの実行ではなくアプリケーション実行時に発火します。今回のnpm v12の変更はインストール時スクリプトの無効化であるため、このパターンの攻撃には効果がありません。
依存パッケージのソースコード自体に悪意あるコードが混入する「Protestware」型や、実行時ペイロードを持つ攻撃に対しては、依然としてソフトウェア構成分析(SCA)ツールによるコード審査・プライベートレジストリの活用・パッケージのバージョン固定(lockfileの管理)・最小権限のCI/CD環境設定が必要です。
今から実施すべき対応チェックリスト
開発者・チームリード向け
npm 11.16.0以降にアップグレード(npm install -g npm@latest)npm approve-scripts --allow-scripts-pendingを実行してブロック対象スクリプトを確認preinstall・postinstallスクリプトが必要なパッケージを審査し、必要最小限をnpm approve-scriptsで許可- 更新した
package.jsonをリポジトリにコミット npm installの出力に表示されるWarningを確認してv12適用前に対処
CI/CDパイプライン担当者向け
- CI環境の
npm installコマンドが変更後も動作するかをnpm 11.16.0のWarningで検証 - GitリポジトリやリモートURLからの依存関係を使用しているパイプラインを棚卸しし、v12で必要な
--allow-git・--allow-remoteフラグを追加
情報システム担当者向け
- 社内のNode.js開発プロジェクトでのnpmバージョン管理方針を確認
- Lazarusをはじめとするサプライチェーン攻撃のリスクを踏まえ、プライベートレジストリの導入やパッケージ審査プロセスの整備を検討
FAQ
Q. npm v12はいつリリースされますか? A. GitHubの公式発表では「2026年7月予定」とされています。現時点でnpm 11.16.0以降にアップグレードすることで、v12で破壊的変更となる挙動をWarningとして事前確認・準備できます。
Q. allowScriptsをoffにすると、nativeモジュール(node-gypを使うパッケージなど)は動かなくなりますか? A. 動かなくなる可能性があります。binding.gypを持つパッケージへの暗黙的なnode-gyp rebuildも今回の変更で対象になります。npm approve-scripts --allow-scripts-pendingで対象パッケージを確認し、必要なものは事前に許可リストに追加してください。
Q. --ignore-scriptsフラグで十分ではないのですか? A. --ignore-scriptsではGit依存関係の.npmrcを通じたGit実行ファイル上書きという迂回路が残ります。今回の--allow-git defaultをnoneにする変更がこの特定の迂回路を閉じます。--ignore-scriptsと今回の変更は補完的な関係にあります。
Q. pnpmやYarn Berryを使っているプロジェクトも影響を受けますか? A. いいえ。pnpm(v9以降)とYarn Berry(v2以降)はすでに同様のデフォルト設定を採用しており、これらを使用しているプロジェクトは今回のnpm v12の変更の影響を受けません。npmを使用しているプロジェクトのみが対応を必要とします。
参考情報
- GitHub公式Changelog「Upcoming breaking changes for npm v12」(2026年6月9日)
- npm docs「npm approve-scripts」
- npm docs「npm deny-scripts」
- npm docs「allow-scripts config」
- GitHub community discussion(npm v12 breaking changes)
- Google GTIG「North Korea-Nexus Threat Actor Compromises Widely Used Axios NPM Package in Supply Chain Attack」(2026年3月31日)
- StepSecurity「Active Supply Chain Attack: Malicious node-ipc Versions Published to npm」(2026年5月14日)
- Mondoo「npm Supply Chain Security in 2026: What Your Package Manager Does (and Doesn’t) Protect You From」(2026年5月5日)
- 当サイト関連:Vitest RCE脆弱性——開発ツールを狙うサイバー攻撃
- 当サイト関連:バイブコーディングとシャドーAI——AIが書いたコードの45%にOWASP Top 10脆弱性
- 当サイト関連:LLMShare——ChatGPT/Claude正規ドメインを使ったマルウェア配布
- 当サイト関連:サイバー攻撃・情報漏えい最新事例まとめ2026








