開発者を狙う攻撃:モダンな依存関係文化がサプライチェーンの脅威地図をどう変えたか

1. エグゼクティブサマリー

現代のソフトウェアは「書かれる」ものではなく「組み立てられる」ものです。一つのアプリケーションが数百のサードパーティコンポーネントを日常的に取り込み、通常のプロセスの一環として継続的に更新を重ねています。この利便性は、従来の境界防御やエンドポイント防御をすり抜ける、確実な初期侵入経路へと静かに姿を変えてきました。攻撃者は堅牢化された本番環境の境界を直接突破するのではなく、開発者本人やメンテナーアカウント、ビルドパイプライン、パッケージレジストリを侵害し、あとは信頼された自動化の仕組みに自分たちのコードを運ばせるケースが増えています。

その規模はもはや理論上の話ではなく、データで裏付けられています。Sonatypeの報告によれば、新たに公開された悪意あるオープンソースパッケージは前年比156%増加し、年間で50万件以上が記録されました。その背景には推定6.6兆件に達するオープンソースのダウンロード数があります[1][2]。政府機関も一般的な注意喚起から、名指しでのアラート発出へと踏み込んでいます。2025年9月、CISAは500を超えるパッケージを侵害した自己複製型のnpmワームに関するガイダンスを発表しました[3]。このパターンはあらゆる主要エコシステム、あらゆる種類の攻撃者に及んでいます。

2018年、単独の悪意あるメンテナーによる孤立した行為として始まったこの問題は、いまや産業化しています。手口は少数の反復可能なメカニズムへと収斂する一方、攻撃者の顔ぶれは日和見的な犯罪者から、工場のような運用モデルでキャンペーンを回す忍耐強い国家関与のオペレーターへと広がりました。近年で特に重要な展開が自己増殖です。開発者の認証情報を窃取し、被害者が管理する他のパッケージへと自らを再公開するワームが登場しています。

この問題に単一の対策で答えを出すことはできません。防御可能な対応とは、開発ライフサイクルにおける厳格な統制と、この速く移り変わる、エコシステム横断的な脅威を読み解けるインテリジェンスを組み合わせることです。それによって、散在する注意喚起を追跡可能なキャンペーンへ、追跡可能なキャンペーンを実際のアクションへと転換できます。本レポートでは、その手口と証拠、そして構造化された脅威インテリジェンスが果たすべき役割を示します。

本レポートが扱う内容

  • 広がり——開発者の依存関係文化が悪用される主な手口を、実際に文書化された事案とともに提示
  • データ——規模を示す主要な数値と、それが防御側にもたらす構造的な意味。ベンダーの主張については出典を明記
  • 軌跡——2018年から2026年にかけて脅威がどう進化してきたか。自己増殖型ワームや国家主導キャンペーンへの移行を含む
  • インテリジェンス——脅威インテリジェンスプラットフォームが対応のどこに位置づけられるか、そして率直に言ってどこには位置づけられないか

2. 状況整理:論理が逆転した

この10年の大半、防御側は境界とエンドポイントに力を注いできました。サプライチェーン攻撃は、その論理を逆転させました。潤沢なリソースを持つ標的を直接攻撃するのはコストが高く、成功も不確実です。それに対し、標的がすでに信頼している上流のコンポーネントを一つ侵害すれば、その信頼をそのままアクセス権に変換できます。悪意あるコードは事前承認済みの体で届き、一度に数千の下流の被害者に到達します。2020年のSolarWinds事件は、この論理を如実に示しました。トロイの木馬化された一つのソフトウェアアップデートが、およそ1万8,000の組織に届いたのです[4]。もっとも、同社が後にSECへ提出した独自分析では、実際に侵害されたのは100未満と推定されており[5]、この違いは報道でしばしば見落とされます。攻撃者が狙うのは到達範囲であり、脆弱性の正体は信頼そのものなのです。

オープンソースのエコシステムは、この問題をさらに増幅させます。Sonatypeの2024年の分析によれば、オープンソースの消費量は年間推定6.6兆件のダウンロードに達し、修正パッチが存在してもアプリケーション依存関係の80%が1年以上アップグレードされないまま放置されている一方で、新たに公開される悪意あるパッケージは前年比156%増加しています(Sonatypeのテレメトリデータより)[1]。つまり防御側は、ほとんどの組織が棚卸しも監視もしていない、巨大かつ急速に動く攻撃対象領域に直面していることになります。学術的な測定も、これと同じ結論に何年も前から達していました。2019年のnpmに関する研究では、ごく少数のメンテナーアカウントが侵害されるだけで、エコシステム全体の相当な部分に影響が及びうることが示されています[6]

Threat research  (7 x 2.5 in) (2)

3. 攻撃の手口

これまでに文書化された事案は、少数の繰り返し現れる手口へと集約されます。以下ではそれぞれについて、実名の関係者と具体的かつ出典付きの結果を挙げて解説し、その手口を好んで用いる攻撃者についても注記します。誰が攻撃の背後にいるかを知ることは有用な文脈になりますが、防御にとって最も重要なのは手口そのものです。

アカウント乗っ取り——盗まれた一つの認証情報から数百万インストールへの最短経路

最も再現性の高い手口には脆弱性すら必要ありません。メンテナーの認証情報を盗み、信頼された自動化の仕組みが取り込む悪意あるバージョンを公開するだけです。2021年10月、攻撃者は当時週間約800万ダウンロードを集めていたnpmライブラリua-parser-jsを乗っ取り、短期間クリプトマイナーと資格情報窃取ツールを配布しました[7]。その数週間後には、合わせて週間2,000万ダウンロードを超える二つのパッケージ、coaとrcが同じ手口の被害に遭いました[8]。これらはコモディティ化した金銭目的の犯罪行為であり、迅速かつ経済的動機に基づくものです。バージョン範囲の固定漏れや自動更新の仕組みが、防御側が対応する前にペイロードを拡散させてしまうため、成功を収めています。

この手口はその後、自律的に拡散する能力を獲得しました。2025年9月、CISAは、公にはShai-Huludとして追跡されている自己複製型npmワームについて名指しでアラートを発出しました。このワームは500を超えるパッケージを侵害し、開発者およびCIの認証情報を窃取して、被害者が管理する他のパッケージへと自らを再公開しました[3]。手動のアカウント乗っ取りからワームへの転換は、この攻撃カテゴリーにおける段階的な質の変化を示しています。もはやペイロードを拡散させるのは攻撃者ではなく、エコシステム自体なのです。

3

依存関係の混同——パッケージマネージャーの標準設定が間違ったソースを信頼してしまう問題

2021年2月、研究者のAlex Birsan氏は、多くのビルドシステムがパッケージ名を解決する際の欠陥を明らかにしました。同じ名前がプライベートレジストリとパブリックレジストリの両方に存在する場合、たとえパブリック側を参照することになろうとも、より高いバージョン番号を持つ方を採用してしまうというものです。同氏は大手企業の内部パッケージ名と一致するパブリックパッケージを公開することで、Apple、Shopify、PayPalのネットワーク内でコード実行を達成しました。本人の説明によれば、Microsoftを含む35以上の組織から合計13万ドル以上のバグ報奨金を獲得したといいます[9]。フィッシングもマルウェア配布もなく、あるのは設計上の既定値と名前解決に対する盲目的な信頼だけでした。

根本原因が個別のバグではなく設定にあるため、この手口は情報開示後も悪用が止まりませんでした。特定企業を狙った模倣パッケージは数週間のうちに現れ、内部パッケージ名がパブリックなコードやエラーメッセージ、ビルド成果物を通じて日常的に漏えいすることから、この手口はレッドチーム活動と犯罪活動の双方における定番となっています。これは特定の攻撃者ではなく、エコシステムの設計そのものに起因する手口です。

321

信頼された内部者——手口としての忍耐

最も危険な侵害の中には、盗まれたアカウントではなく、正式に与えられたアカウントを悪用するものがあります。2018年、広く使われているevent-streamパッケージのメンテナーは、正当な貢献を通じて信頼を築いてきたボランティアに管理権限を委ねました。そのボランティアは難読化されたペイロードを持つ依存関係を追加し、それは特定のBitcoinウォレットのビルド内でのみ起動する仕組みで、高額資産を持つアカウントを狙うものでした。この悪意あるコードは数百万ダウンロードに達した後、ある開発者が偶然気づくまで発見されませんでした[10][11]

これと同じパターンを、はるかに長い忍耐をもって実行した結果生まれたのが、2024年3月に公表されたxz-utilsのバックドア(CVE-2024-3094、CVSSスコア10.0)です。「Jia Tan」という名前を使う攻撃者は、およそ2年をかけて信頼を築きました。過重な負担を抱えた単独のメンテナーにソックパペットアカウントで圧力をかけたことも一助となりました。リリース権限を獲得した後、この攻撃者は、多くのLinuxディストリビューションに含まれる圧縮ライブラリのリリースtarballにリモートコード実行のバックドアを仕込みました。発覚したのは、半秒のSSH遅延がきっかけという、ほぼ偶然によるものでした[12][13]。特定の国家が正式に名指しされたことはなく、この忍耐強さと巧妙さは国家関与のアクターと整合的だと広く評価されていますが、この点についてはあくまで見立てであり、確定した事実ではありません。

32-1

ビルドパイプライン——製品ではなく工場そのものを侵害する

ソフトウェアを組み立て署名するパイプラインは、その成果物が定義上信頼されるがゆえに、高い価値を持つ標的となります。SolarWinds事件(2020年)は今なおその典型例です。ビルド環境への侵入により、署名済みのOrionアップデートにバックドアが仕込まれました。このトロイの木馬化されたビルドは、およそ1万8,000の組織にダウンロードされましたが[5]、実際にスパイ活動に悪用されたのは、そのごく一部にとどまります。Mandiantはこの活動を、後にAPT29へと統合されたグループの犯行だと特定し[4]、西側諸国政府はこれをロシアのSVR(対外情報庁)によるものと断定しました。署名が信頼されていたからこそ、マルウェアもその信頼を引き継いだのです。

同じ論理は、いまオープンソースのビルドエコシステムにも当てはまります。2025年3月、広く使われているGitHub Actionであるtj-actions/changed-filesが侵害されました(CVE-2025-30066)[14]。盗まれたトークンにより、攻撃者はこのアクションを改変し、バージョンタグを遡って悪意あるコミットへ再ポイントさせることができました。これにより、2万3,000を超えるリポジトリでCIのシークレットがビルドログに流出しました[15]。この攻撃に対抗できたのは、タグ固定ではなくコミットハッシュ固定のみでした。調査担当者は、窃取されたシークレットが攻撃者のサーバーへ流出した形跡は見つからなかったとしており、被害が最も大きかったのはパブリックリポジトリでした[15]。いずれにせよ、教訓は明白です。変更可能なタグや参照は、攻撃者によっても変更されうるということです。

2

攻撃対象としてのレジストリ——産業化された国家によるパッケージ公開

最も組織立った活動は、パブリックレジストリを配信チャネルとして扱います。北朝鮮の「Contagious Interview」作戦は、偽の採用担当者を装って開発者に接触し、コーディング課題を装って、その依存関係を通じて資格情報やウォレットを窃取するマルウェアを配布します。このキャンペーンは複数のベンダーによって追跡されており、MITRE ATT&CKにも記録されています[16]。Socketの脅威リサーチャーは、2025年半ばのある一時期だけで、合計5万ダウンロードを超える338以上の悪意あるnpmパッケージを確認し、この作戦を日和見的な犯罪行為ではなく、工場方式のサプライチェーン脅威と位置づけています[17]

これは国家が関与するアクターが、コモディティ化した手口を工業的なペースで運用している例であり、削除された後も継続的に再アップロードを繰り返しています。タイポスクワッティングによるパッケージ名、インストール時実行スクリプト、難読化された多段階ローダーといった具合です。攻撃者が単独の犯罪者であろうと国家であろうと、手口そのものは同じです。だからこそ、防御は「誰が」ではなく「どう動くか」を軸に組み立てるべきなのです。

2 (1)

開発者のツールチェーン——IDEが新たなエンドポイントになる

攻撃対象領域は、いまや開発者がローカルで実行するツール群にまで及んでいます。2026年5月、GitHubは、ある従業員がVisual Studio Code用のNx Console拡張機能の改ざん版をインストールしたことをきっかけに、社内リポジトリ約3,800件が流出したことを確認しました。この拡張機能はマーケットプレイスで200万件を超えるインストール数を持ち、検証済み発行元のステータスも得ていました[18]。この拡張機能は起動時に、ひそかに隠されたペイロードを取得するコマンドを実行し、GitHub、npm、各種クラウドサービスのトークンを窃取していました。GitHubはこの侵入を、Mini Shai-Huludワームの背後にいるのと同一のアクターであるTeamPCP(UNC6780として追跡)によるものだと特定しました。改ざんされた拡張機能自体は、別のnpmサプライチェーン侵害に由来しており、一つの攻撃経路が次の攻撃経路を生んだかたちです[19]

このパターンには前例があります。2024年12月、Cyberhavenのある開発者が同意型フィッシングメールに騙され、悪意あるアプリケーションにChromeウェブストアへのアクセス権を与えてしまい、多要素認証も回避されました。攻撃者はその後、同社のブラウザ拡張機能の悪意あるバージョンを公開し、それはユーザーへ自動更新されてセッションクッキーを窃取しました[20]。研究者らは、これを少なくとも35の拡張機能と約260万人のユーザーに影響を及ぼしたより広範なキャンペーンと結び付けています[21]。エディタやブラウザの拡張機能は開発者本人の権限で動作し、自動的に更新され、棚卸しされることもめったにありません。だからこそ、IDEはいまや、それ自体を一つの独立したエンドポイントとして扱うべきなのです。

3 (1)

4. 二次的な影響:メンテナーのパラドックス

こうした手口の根底には、防御側があまり語ろうとしないより深い問題が横たわっています。オープンソースは無償で働くボランティアに支えられています。xz-utilsのバックドアが成功した一因は、疲弊しきったたった一人のメンテナーが、圧力に屈して助けを受け入れてしまったことにありました[12]。一方で、標準的なセキュリティの助言は「速やかにパッチを当てよ」というものですが、上記のほぼすべての事例における攻撃経路は、まさにその信頼された自動更新の仕組みそのものでした。組織は「継続的に更新せよ」と言われる一方で、「その更新こそが侵害の原因になる」とも言われているのです。

データはこの板挟みを裏付けています。Sonatypeによれば、修正パッチが存在していても依存関係の80%が1年以上アップグレードされないままだといい[1]、エコシステムは既知の欠陥へのパッチ適用には遅すぎる一方で、新たに公開された悪意あるバージョンを取り込むには速すぎるという、二重の問題を抱えています。ここから見えてくる解決策は「もっと更新せよ」でも「更新を控えよ」でもなく、「意図を持って更新せよ」というものです。つまり、公開されたばかりの新規リリースの適用は見合わせつつ、検証済みのセキュリティ修正は迅速に取り込み、この構造全体を支える無償の労働を担うメンテナーたちへの支援に力を向けるということです。

Threat research  (7 x 2.5 in) (3)

5. インテリジェンスが果たす役割

このギャップを単独で埋められるツールは存在せず、そう示唆すること自体が誤解を招きます。悪意あるパッケージがビルドに入り込むのを実際に食い止める統制は、開発ライフサイクルの側にあります。レジストリファイアウォール、ソフトウェア構成分析(SCA)、来歴管理、そしてバージョン固定です。構造化された脅威インテリジェンスがその上のレイヤーで付加するのは、どのチームが一人で追うにも速すぎる脅威を読み解く力です。CISA、各ベンダーの調査、学術的な情報源にまたがるアラートの量は、もはや手作業で追跡するには非現実的な規模になっており、同一のキャンペーンが異なる名前、異なるエコシステムのもとで、数週間おきに繰り返し姿を現すことも珍しくありません。

脅威インテリジェンスプラットフォームが果たすべき役割は、こうした散在する報告を単一の正規化された全体像へと集約し、複数の波にわたるキャンペーンを追跡し、MITRE ATT&CKのような共通フレームワークへとマッピングし、誤った確信ではなく明示的な確度をもって帰属判断を保持し、そこから得られた指標を、それを実際に強制する統制へと橋渡しすることにあります。インテリジェンスは逆方向にも流れます。あるセキュリティ統制は、たった一つの検知事例——フラグの立った一つのパッケージ、一致した一つのハッシュ値——しか報告しないかもしれません。単独で見ればそれはありふれたノイズにしか見えません。しかし既知のキャンペーンと突き合わせれば、そのフラグの立ったパッケージがShai-Huludのような活動中の作戦に属していることが判明し、些細なアラートが、深刻な資格情報窃取型侵入の最初の兆候へと転じることがあるのです。

EclecticIQは、まさにこの役割を軸としてIntelligence Centerを構築しており、無数のばらばらな事案を、一貫した使いやすい全体像へと変換します。同時に、どこまでが自らの役割であるかについても明確にしています。実際の強制は開発パイプライン自体で行われなければなりません。インテリジェンスがパッケージそのものをブロックすることはなく、その役割は、組織が脅威とその変化を、行動を起こせるタイミングで確実に把握できるようにすることにあります。

6. 結論

この7年間、あらゆる主要エコシステム、あらゆる種類の攻撃者を通じて、証拠は一貫して同じ方向を指しています。開発者の依存関係文化は、いまや新興の攻撃対象領域ではなく、主要な攻撃対象領域そのものだということです。チームが数千の信頼されたコンポーネントからソフトウェアを組み立てられるようにしているまさにその利便性こそ、攻撃者が悪用しているものであり、彼らはそれを実現するための、少数のよく理解された手口へと収斂させてきました。今後の流れは、さらなる自動化と組織化へ向かうでしょう。自己増殖するワーム、そして工場のように運営される国家主導キャンペーンです。しかし、防御策は謎に包まれたものでも、未知のものでもありません。バージョン固定と来歴管理、フィッシング耐性のある認証、インストール時実行スクリプトの無効化、意図的な更新のペース配分、そして依存関係の棚卸し——これらはすべて、文書化された手口に直接対応するものです。ほとんどの組織にとって足りていないのは、こうした統制の知識ではなく、これまで一度も棚卸ししたことのない攻撃対象領域そのものへの可視性です。

インテリジェンスはこうした統制に取って代わるものではなく、それらを時宜にかなったものにするものです。同じキャンペーンが数日のうちに新しい名前で再登場するような状況において、このリスクを最もうまく管理できる組織とは、脅威を一貫した形で見通し、次の信頼されたアップデートがそれを運び込む前に行動できる組織です。それこそが、本レポートが支えようとしている取り組みです。確実な答えではなく、リスクがどこに存在し、何をすべきかについての、より明瞭な見取り図を示すことです。

7. 参考文献

  1. Sonatype (2024) 10th Annual State of the Software Supply Chain Report — Introduction. Available at: https://www.sonatype.com/state-of-the-software-supply-chain/2024/introduction (Accessed: 8 July 2026).
  2. Sonatype (2024) 10th Annual State of the Software Supply Chain Report Reveals 156% Surge in Open Source Malware (press release). Available at: https://www.sonatype.com/press-releases/sonatypes-10th-annual-state-of-the-software-supply-chain-report (Accessed: 8 July 2026).
  3. Cybersecurity and Infrastructure Security Agency (2025) Widespread Supply Chain Compromise Impacting the npm Ecosystem. Available at: https://www.cisa.gov/news-events/alerts/2025/09/23/widespread-supply-chain-compromise-impacting-npm-ecosystem (Accessed: 8 July 2026).
  4. Mandiant / Google Cloud (2020) Highly Evasive Attacker Leverages SolarWinds Supply Chain to Compromise Multiple Global Victims with SUNBURST Backdoor. Available at: https://cloud.google.com/blog/topics/threat-intelligence/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor (Accessed: 8 July 2026).
  5. SolarWinds Corp. (2021) Form 10-Q, Investigative Update. U.S. Securities and Exchange Commission. Available at: https://www.sec.gov/Archives/edgar/data/1739942/000173994221000080/swi-20210331.htm (Accessed: 8 July 2026).
  6. Zimmermann, M., Staicu, C.-A., Tenny, C. and Pradel, M. (2019) ‘Small World with High Risks: A Study of Security Threats in the npm Ecosystem’, USENIX Security Symposium. Available at: https://arxiv.org/pdf/1902.09217 (Accessed: 8 July 2026).
  7. Cybersecurity and Infrastructure Security Agency (2021) Malware Discovered in Popular npm Package, ua-parser-js. Available at: https://us-cert.cisa.gov/ncas/current-activity/2021/10/22/malware-discovered-popular-npm-package-ua-parser-js (Accessed: 8 July 2026).
  8. BleepingComputer (2021) Popular npm library hijacked to install password-stealers, miners. Available at: https://www.bleepingcomputer.com/news/security/popular-npm-library-hijacked-to-install-password-stealers-miners/ (Accessed: 8 July 2026).
  9. Birsan, A. (2021) ‘Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies’, Medium. Available at: https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610 (Accessed: 8 July 2026).
  10. npm, Inc. (2018) Details about the event-stream incident. Available at: https://blog.npmjs.org/post/180565383195/details-about-the-event-stream-incident (Accessed: 8 July 2026).
  11. Snyk (2018) A post-mortem of the malicious event-stream backdoor. Available at: https://snyk.io/blog/a-post-mortem-of-the-malicious-event-stream-backdoor/ (Accessed: 8 July 2026).
  12. Akamai (2024) XZ Utils Backdoor — Everything You Need to Know, and What You Can Do. Available at: https://www.akamai.com/blog/security-research/critical-linux-backdoor-xz-utils-discovered-what-to-know  (Accessed: 8 July 2026).
  13. Rapid7 (2024) Backdoored XZ Utils (CVE-2024-3094). Available at: https://www.rapid7.com/blog/post/2024/04/01/etr-backdoored-xz-utils-cve-2024-3094/  (Accessed: 8 July 2026).
  14. Cybersecurity and Infrastructure Security Agency (2025) Supply Chain Compromise of Third-Party tj-actions/changed-files (CVE-2025-30066) and reviewdog/action-setup@v1 (CVE-2025-30154). Available at: https://www.cisa.gov/news-events/alerts/2025/03/18/supply-chain-compromise-third-party-tj-actionschanged-files-cve-2025-30066-and-reviewdogaction (Accessed: 8 July 2026).
  15. Wiz (2025) GitHub Action tj-actions/changed-files supply chain attack (CVE-2025-30066). Available at: https://www.wiz.io/blog/github-action-tj-actions-changed-files-supply-chain-attack-cve-2025-30066 (Accessed: 8 July 2026).
  16. MITRE ATT&CK (2025) Contagious Interview (Group G1052). Available at: https://attack.mitre.org/groups/G1052/ (Accessed: 8 July 2026).
  17. Socket (2025) North Korea’s Contagious Interview Campaign Escalates: 338 Malicious npm Packages. Available at: https://socket.dev/blog/north-korea-contagious-interview-campaign-338-malicious-npm-packages  (Accessed: 8 July 2026).
  18. The Hacker News (2026) GitHub Internal Repositories Breached via Malicious Nx Console VS Code Extension. Available at: https://thehackernews.com/2026/05/github-internal-repositories-breached.html  (Accessed: 5 August 2026).
  19. Help Net Security (2026) TeamPCP breached GitHub’s internal codebase via poisoned VS Code extension. Available at: https://www.helpnetsecurity.com/2026/05/20/github-breached-teampcp/  (Accessed: 5 August 2026).
  20. Cyberhaven (2024) Cyberhaven’s Preliminary Analysis of the Recent Malicious Chrome Extension. Available at: https://www.cyberhaven.com/engineering-blog/cyberhavens-preliminary-analysis-of-the-recent-malicious-chrome-extension  (Accessed: 5 August 2026).
  21. The Hacker News (2024) Dozens of Chrome Extensions Hacked, Exposing Millions of Users to Data Theft. Available at: https://thehackernews.com/2024/12/16-chrome-extensions-hacked-exposing.html (Accessed: 5 August 2026).

翻訳元: https://blog.eclecticiq.com/compromising-the-developer

本記事は blog.eclecticiq.com の記事を翻訳・要約したものです。