npmを狙った侵入の急増は、攻撃者が場当たり的なタイポスクワッティングから、体系的で認証情報主導のサプライチェーン侵害へと移行したことを示している――CIシステム、メンテナー、そして現代のDevOpsパイプラインに潜む深刻な弱点を悪用して。
過去1年でnpmエコシステムへの攻撃が急増したことは、ソフトウェア・サプライチェーンの脅威環境が大きく変化したことを浮き彫りにしている。
かつては杜撰なタイポスクワッティングの試みに過ぎなかったものが、メンテナー、CIパイプライン、そして現代の開発を支える信頼された自動化を標的とする、連携された認証情報主導の侵入へと進化した。
セキュリティ責任者にとって、これはもはや開発者の些細なミスではない――本番システム、クラウド基盤、そして数百万の下流アプリケーションへ直結する侵入口だ。
狙いは個々の開発者をだますことではなく、静かにその権限を引き継ぐことだ。そして、それに伴う配布の到達範囲も。
「NPMは、世界最大のJavaScriptパッケージリポジトリであり、ソフトウェア配布の重要な制御点であるため、魅力的な標的です」と、Enterprise Security Groupのサイバーセキュリティ実務ディレクター、Melinda Marks氏は述べた。「セキュリティチームは依存関係を把握し、定期的に監査してリスクを軽減する方法を理解する必要があります。」
npmインフラにおける構造的な弱点
ほぼすべての企業が、直接的または間接的にnpmに依存している。IDCによれば、組織の93%がオープンソースソフトウェアを利用しており、npmはJavaScriptエコシステムで最大のパッケージレジストリであり続けている。「人気の高いパッケージを1つ侵害するだけで、直ちに数百万の下流ユーザーやアプリケーションに到達し得ます」と、IDCのリサーチマネージャー(DevSecOps)であるKatie Norton氏は述べ、盗まれた1つの認証情報が、配布のための「マスターキー」になり得ると説明した。
しかし、その規模はリスクの一部にすぎない。
現代の開発パイプラインがどのように保護されているかに内在する構造的弱点によって、露出は増幅されるとNorton氏は指摘した。「個々のオープンソースメンテナーは、企業チームが頼るようなセキュリティ資源を欠いていることが多く、ソーシャルエンジニアリングに弱いのです」と彼女は述べた。「CI/CDランナーや開発者マシンは、環境変数や設定ファイルに保存された長期的なシークレットを日常的に処理しており、マルウェアに容易に収集されます。」
「ビルドシステムもまた、セキュリティの可視性より速度と信頼性を優先しがちで、その結果、監視が限定され、初期アクセスを得た攻撃者の滞留時間が長くなります」とNorton氏は付け加えた。
セキュリティ責任者がこれをパッチで解決することはできないが、露出を減らすことはできる。専門家が一貫して挙げる優先事項は同じだ。CIランナーを本番資産として扱うこと、公開トークンを積極的にローテーションしスコープを絞ること、必要がない限りライフサイクルスクリプトを無効化すること、そして依存関係を不変のバージョンに固定すること。
「これらのnpm攻撃はソフトウェア依存関係のインストール前フェーズを標的にしているため、コードスキャンといった一般的なソフトウェア・サプライチェーン・セキュリティ手法では対処できません」とMarks氏は述べた。検知には、シグネチャベースのツールではなく、実行時分析と異常検知が必要だ。
タイプミスの罠から正規のバックドアへ
長年にわたり、タイポスクワッティングがnpmの脅威モデルを規定してきた。攻撃者は「lodsash」「expres」「reacts」のように人気ライブラリに十分似た名前のパッケージを公開し、自動化や人為的ミスが引き起こすのを待った。影響は通常限定的で、対処も容易だった。
このモデルは2025年に崩れ始めた。
人気パッケージを偽装する代わりに、攻撃者は実在するパッケージそのものを侵害するケースが増えた。npm自体を装ったフィッシングキャンペーンがメンテナーの認証情報を収集した。盗まれたトークンは、その後、下流のあらゆる利用者にとって正規に見えるトロイの木馬化した更新を公開するために使われた。Shai-Huludキャンペーンは問題の規模を示し、数万のリポジトリに影響を与え、侵害された認証情報を利用してエコシステム全体に自己増殖した。
「npmエコシステムは現代開発のクラウンジュエルになりました」と、Socket.devのサイバーセキュリティ研究者Kush Pandya氏は述べた。「1人の多作なメンテナーが侵害されると、爆発半径は数百の下流プロジェクトに及びます。」
結果として、静かだが強力な変化が起きた。攻撃者はもはや説得力のある偽物を作る必要がない。信頼されたチャネルを通じて、通常の更新と同様に署名され、バージョン付けされた形でマルウェアを配布できるようになったのだ。
開発者のノートPCより開発者環境
現代のnpm攻撃は、開発者のノートPC上ではなく、CI/CD環境内で発火するケースが増えている。無害なセットアップ補助と長らく見なされてきたインストール後スクリプトが、GitHub ActionsやGitLab CI内で自動的に実行され得る実行ベクターとなった。ランナー内に入り込むと、悪意あるパッケージは環境変数を読み取り、公開トークンを盗み、ビルド成果物を改ざんし、さらには被害者の身元で追加の悪意あるリリースをプッシュすることさえできる。
「開発者環境とCIランナーは、いまやエンドユーザーマシンより価値があります」とPandya氏は指摘した。「通常、より広い権限、シークレットへのアクセス、そして本番へコードを押し込む能力を持っているからです。」
2025年半ばに観測された複数のキャンペーンは、明確にCIを認識しており、自動化されたビルド環境を検出した場合にのみトリガーされた。中には遅延実行や自己失効するペイロードを含むものもあり、認証情報窃取を最大化しつつ、フォレンジック上の可視性を最小化していた。
企業にとって、これは根本的なリスクの転換を意味する。CIシステムはしばしば個々のユーザーより高い権限で動作するにもかかわらず、監視ははるかに厳密ではない。「弱いデフォルトで保護されていることが多いのです。長期生存の公開トークン、過度に許可されたCIシークレット、ライフサイクルスクリプトとパッケージメタデータへの暗黙の信頼、そしてビルド間の隔離の乏しさ」とPandya氏は述べた。
IDC Researchによれば、組織がサプライチェーン・セキュリティに割り当てるAppSec予算は約14%にとどまり、CI/CDパイプラインのセキュリティを最重要リスクとして挙げているのは12%にすぎない。
回避は第一級の機能
防御側が不審なパッケージの発見能力を高めるにつれ、攻撃者も適応した。
最近のnpmキャンペーンでは、不可視のUnicode文字を使って依存関係を隠蔽したり、環境チェック後にのみ実際のペイロードを取得する多段ローダーを用いたり、テイクダウンを回避するために設計されたブロックチェーン上にホストされた コマンド&コントロール(C2)参照を使ったりしている。別のものはワームのような振る舞いを展開し、盗んだ認証情報を使って追加の悪意あるパッケージを大規模に公開した。
このレベルの手口に対して、手動レビューはほぼ無力になっている。「index.jsをざっと見て悪意あるeval()を見つけられた時代は終わりました」とPandya氏は述べた。
「現代のパッケージは、エンコーディング、遅延実行、環境フィンガープリンティングの層の背後に悪意あるロジックを隠します。」Norton氏も懸念に同調し、これらの攻撃は静的スキャンでは不十分な行動レベルで動作すると指摘した。「難読化技術により、悪意あるロジックは大規模なJavaScriptプロジェクトにおける正当な複雑さと区別しにくくなります」と彼女は述べた。「CIを認識するペイロードやインストール後スクリプトは、特定の環境条件下でのみ顕在化する挙動を持ち込みます。」