npmは、ソフトウェアサプライチェーン攻撃を防ぐことを目的として、パッケージマネージャーの新バージョン(v12)を発表しました。
6月9日に公開されたブログ投稿の中で、Microsoft傘下のGitHubに所属するnpm開発チームは、パッケージマネージャーを暗黙の信頼モデルから明示的なオプトインモデルへと移行させる、セキュリティに特化した3つの破壊的変更を発表しました。
2026年7月から利用可能となるこれらの変更は、エコシステムが依存関係を扱う方法における根本的な転換を意味します。
npm v12では、これまで緩やかだった3つのデフォルト設定が変更されます。
- インストールスクリプトのブロック:npm installの実行時に、バックグラウンドスクリプト(preinstall、install、postinstallや、node-gyp rebuildのようなネイティブC/C++ビルドなど)が自動実行されなくなり、インストール中に悪意あるコードが即座に実行されるのを防ぎます
- Git依存関係のブロック:カスタムGit URLから直接依存関係を解決する方法がデフォルトでブロックされ、攻撃者がカスタムGit設定を悪用してスクリプト制限を回避することを防ぎます
- リモートURLのブロック:公式レジストリではなく外部URLやHTTPS tarballから直接パッケージを取得する方法が、明示的に許可されない限りデフォルトで禁止されます
この移行に備えるため、開発者は現時点でnpmバージョン11.16.0以降にアップグレードすることで、任意の警告を受け取ることができます。また、新しいnpm approve-scrippsコマンドを使って依存関係を監査し、ブロックされたスクリプトを特定した上で、package.jsonファイルにローカルポリシーの許可リストを直接作成することも可能です。
一つの扉を閉めれば別の扉が開く——セキュリティ専門家が警告
SemgrepのファウンダーでありCEOのIsaac Evansはこの転換を支持し、ソフトウェアサプライチェーン攻撃の経済的現実を踏まえると、個々の開発者があらゆる脅威を捕捉することに頼るのではなく、構造的な防御策が必要だと述べました。
「サプライチェーン攻撃の経済性が変化したことは明らかです。Miasmaのようなワームは完璧な成功率を必要としません。改変コストが低く、再実行も容易で、攻撃の手口の一部が露呈した今、拡張もしやすくなっています」と同氏は語りました。
「インストールスクリプトや非レジストリ依存関係に関するデフォルト設定を強化することは、意味のある一歩です。」
また同氏は、全体的な対応が、すべての開発者にすべての不正パッケージを適時に検知することを求めるのではなく、構造的な安全柵の整備へと移行しつつあるとも指摘しました。
しかしEvansは、公開パッケージマネージャーがこれらの経路を閉鎖すれば、攻撃者はArtifactoryやNexusといったプライベートな企業リポジトリへと矛先を向けるだろうと警告しました。「npmやPyPIが容易な経路を塞げば、攻撃者は次の信頼されたレイヤーを狙いに行くでしょう」と語っています。
脆弱性研究者のPaul McCarty氏(ハンドルネーム:6mile)はより慎重な見方を示し、今回の更新が長年の欠陥に対処するものである一方で、開発者の作業を妨げるようであれば「セキュリティの見せかけ」に陥りかねないと警告しました。
6月10日に自身のウェブサイト「Open Source Malware」で公開した分析記事の中で、McCarty氏はGitHubがこれら3つの脆弱なデフォルト設定を廃止したことを評価しつつも、広く普及するまでのタイムラインについては依然として懸念が残ると述べました。
さらに同氏は、ビルドの完了が開発者の最優先目標である以上、多くの開発者が警告を回避するためにブロックされたスクリプトを無条件に承認してしまうのではないかという懸念も示しました。
「『これはビルドできる』か『これはマルウェアに感染しにくい』かという選択になれば、前者が常に勝ります」とMcCarty氏は警告しました。
氏はさらに、セキュリティ研究者にとっての意図せぬ副作用についても指摘しました。悪意のないパッケージメンテナーが新たなブロックを回避するため、不審に見える回避策を取るようになる可能性があるというものです。
「無害なものと悪意あるものが、同じ不審に見えるパターンに収束してしまいます。結果として、本当に問題のあるパッケージを探し出すために、奇妙だけど問題ない大量のパッケージをトリアージし続けることになります。正当な振る舞いの多くが同じように見えるようになるからこそ、悪意あるものはより巧みに隠れられるようになるのです」と氏は警告しました。
翻訳元: https://www.infosecurity-magazine.com/news/github-update-npm-supply-chain/