ssecutils
Security / Browser-native guide

ソフトウェアサプライチェーン攻撃2026 - npm/PyPIの6類型と防御

著者 aki公開 11

現代のソフトウェアは、自分が書いたコードより取り込んだ依存パッケージの方が圧倒的に多いのが当たり前です。npm install 一発で何百もの第三者コードが自分の環境とCIで実行される——その信頼を逆手に取るのがソフトウェアサプライチェーン攻撃です。Sonatype は累計120万件超の悪性パッケージを追跡しており、2025年9月の自己増殖ワーム Shai-Hulud 以降、攻撃の頻度と技術的な深さは「いたずらの時代」から「高被害の時代」へと一段上がりました。

本記事は、個別事件の速報ではなく、npm/PyPIを狙う攻撃を6つの類型に整理し、2026年の実例とともに「どこを守ればよいか」を体系立てて解説します。攻撃の入口は違っても、防御の勘所は共通しています。

なぜ依存パッケージが狙われるのか

理由は単純で、費用対効果が圧倒的だからです。人気パッケージを1つ汚染できれば、それを使う何千ものプロジェクトとCI環境に一気に到達できます。しかもパッケージのインストールは、多くの場合スクリプトの自動実行を伴います。

  • npmpreinstall / postinstall などのライフサイクルスクリプトが、依存の検証より前・インストール時に自動実行される。
  • Python(PyPI)setup.py の実行や、import した瞬間のコード実行が悪用される。

つまり「インストールしただけ」「import しただけ」で、開発者のトークン・環境変数・クラウド認証情報が抜かれ得ます。狙われるのは最終的にCIのシークレットとクラウドの鍵です。

サプライチェーン攻撃の6類型

まず全体像を早見表で押さえます。入口(どこを突くか)は異なりますが、後述するとおり防御の勘所は共通です。

類型入口(突くポイント)代表例主な防御
タイポスクワッティング名前の打ち間違いboto3 等の1文字違い許可リスト・名前の確認
依存関係混同社内名と公開名の衝突高バージョンで公開側を優先スコープ付きレジストリ・社内名の秘匿
slopsquattingAI の幻覚パッケージ名AI 提案名を先回り登録実在確認・許可リスト
メンテナ乗っ取り公開アカウントの奪取TanStack / Mistral 等の汚染フィッシング耐性 MFA・Trusted Publishing
悪意あるスクリプトinstall / import 時の自動実行preinstall 窃取・TrapDoor--ignore-scripts・環境分離
自己増殖ワーム盗んだ公開トークンで連鎖Shai-Hulud 系短命トークン・即 rotate

1. タイポスクワッティング(typosquatting)

人気パッケージと1文字違いの名前で悪性パッケージを公開し、打ち間違いを待つ手口。2026年初頭には PyPI で boto3requestsnumpy 等の1文字違いを狙うキャンペーンがあり、import 時にリバースシェルを張り、環境変数を窃取しました。データサイエンス/ML チームが標的でした。

2. 依存関係混同(dependency confusion)

社内のプライベートパッケージと同名のパッケージを公開レジストリに、より高いバージョン番号で公開する手口。ビルドツールが「新しい方」を優先して公開側を取り込んでしまう設定の隙を突きます。社内名がソースやログから漏れていると刺さります。

3. slopsquatting(AIの幻覚を悪用)

2026年ならではの新類型です。AIコーディングツールは、実在しないパッケージ名を「もっともらしく」提案(ハルシネーション)することがあります。攻撃者はAIがよく幻覚する名前を先回りして登録し、開発者がAIの提案を鵜呑みに install するのを待ちます。「AIが言ったから存在するはず」という思い込みが穴になります。

4. メンテナアカウント乗っ取り

正規パッケージの作者アカウントを乗っ取り、本物のパッケージに悪性コードを仕込む手口。フィッシングや トークン窃取 で公開権限を奪います。2026年には TanStack・Mistral AI・UiPath・OpenSearch など実在の有名パッケージ群がまとめて汚染され、累計5.18億ダウンロード規模に影響しました。利用者からは「いつもの信頼できるパッケージ」に見えるため発見が遅れます。

5. 悪意あるインストール/ライフサイクルスクリプト

前述の preinstall / postinstall や import 時実行を悪用するもの。2026年4月の SAP関連npmパッケージ侵害では、preinstall スクリプトが検証や多くのセキュリティツールが走る前に実行され、認証情報を窃取しました。TrapDoor キャンペーン(2026年5月〜)は npm・PyPI・crates.io にまたがり、34超のパッケージ・384超のバージョンを、暗号通貨・AIツール・セキュリティ関連を装った名前で配布しています。

6. 自己増殖ワーム

最も新しく、最も厄介な類型。汚染されたパッケージが感染した開発者のトークンを使って、その人の他のパッケージへ自動的に感染を広げる Shai-Hulud がその嚆矢で、2025年12月の Shai-Hulud 2.0、2026年5月の Mini Shai-Hulud(170超のnpm+PyPIパッケージ、404の悪性バージョン、「Shai-Hulud: Here We Go Again」を含む400超のリポジトリ作成)と再来・変異を繰り返しています。人手を介さず連鎖するため、被害が指数関数的に広がります。

代表的な事例(2025–2026)

前述の類型が実際にどう現れたか。いずれも「インストール/取り込みの自動実行」と「CI・公開アカウントの信頼」を突いている点が共通します。

  • GitHub Actions の連鎖汚染(2025):広く使われる tj-actions/changed-files が侵害され(CVE-2025-30066、約2.3万リポジトリに影響)、続いて GhostAction(3,325件のシークレット窃取)・Megalodon(5,500件超のリポジトリ汚染)が発生。タグが可変(同じタグの中身が差し替えられる)ことが連鎖の温床で、対策はアクションをコミットSHAでピン留めし、OIDC・最小権限を徹底すること。
  • TeamPCP(2026年3〜5月):Trivy・KICS・LiteLLM といったDevSecOpsツールに悪性コードを注入し、AWSアクセスキー・Kubernetesトークン・GitHub PAT を自動収集してクラウド環境への二次侵害へ連鎖させた。「セキュリティのために入れるツール」自体が侵入口になり得る皮肉な例。
  • DAEMON Tools 公式サイト汚染(2026年4〜5月):仮想ドライブソフトの公式サイトから、正規の開発者署名付きの悪性インストーラが約1ヶ月配布された(Kaspersky が発見)。署名済み=安全とは限らず、配布元そのものが侵害されると検証をすり抜ける。
  • Red Hat npm パッケージ汚染「Miasma」(2026年6月)@redhat-cloud-services 名前空間で、従業員のGitHubアカウント乗っ取り→CIワークフロー改ざん→OIDCでバックドア入りパッケージを公開し、レビューを丸ごと迂回。32パッケージ・96バージョン(週11.6万DL)が汚染され、preinstall で動く 4.2MB のワームがクラウド鍵・SSH・.env を窃取して自己増殖した。
  • ironworm(2026年6月、JFrog発見):asteroidDAO 関連の37パッケージ経由で広がった Rust 製 npm ワーム。eBPFカーネルルートキットpstop から自身を隠し、Tor 経由でC2通信、OIDCでCIに自己増殖。AWS/Azure/GCP の鍵やAI APIキー、暗号資産ウォレットなど86種の秘密情報を窃取した。Shai-Hulud の「従兄弟」だが完全に別実装。

図解案:汚染がCIのシークレットに届くまで

[攻撃者] 6類型のいずれかで悪性パッケージを公開/汚染
      │
      ▼
[開発者/CI] npm install ・ pip install
      │ postinstall(npm) / import時実行(Python) が自動発火
      ▼
[実行環境] 環境変数・.npmrc・クラウド鍵・CIシークレットを窃取
      │
      ├─▶ クラウド侵害(漏れた鍵で本番へ)
      └─▶ 盗んだ公開トークンで他パッケージへ感染(=ワーム化)

★ 守る要点:①取り込む前に止める ②install時の自動実行を抑える
            ③漏れても被害を限定する(最小権限・環境分離)

防御策

取り込む前に止める(入口)

  • バージョン固定とlockfilepackage-lock.json / poetry.lock で完全性ハッシュ込みに固定。勝手な更新で汚染版を引き込まない。
  • 導入前のクールダウン:公開直後の新バージョンを即採用せず、数日寝かせて事故報告を待つ。ワーム対策に有効。
  • リポジトリファイアウォール/許可リスト:未知・新規・低評価のパッケージをプロキシでブロックし、承認済みのみ通す。タイポスクワッティング/slopsquatting を入口で弾く。
  • 名前を確認する習慣:AIが提案したパッケージ名をそのまま信じず実在と正当性を確認。社内名と公開名の衝突(依存関係混同)にも注意。

インストール時の自動実行を抑える(実行)

  • --ignore-scripts を既定にし、必要なパッケージだけ明示的に許可する。ライフサイクルスクリプト悪用の大半を無効化できる。
  • CIを最小権限・環境分離で:ビルドジョブからクラウド本番鍵を見えなくする。シークレットはジョブ単位でスコープし、短命トークンに。

供給側・組織の信頼を固める

  • Trusted Publishing(OIDC):長命な公開トークンを廃し、CIからの署名付き短命認証で公開する。メンテナアカウント乗っ取りの被害を縮小。
  • メンテナ認証の強化:公開アカウントにフィッシング耐性のあるMFA(Passkey/FIDO2)を必須化。
  • 署名・来歴(provenance):npm provenance や Sigstore で「どのソース・どのCIから来たか」を検証可能にする。

漏れても被害を限定する(可視化と対応)

  • SBOM(ソフトウェア部品表)と継続スキャン:「いま何のどのバージョンが入っているか」を即答できる状態に。既知の悪性パッケージとの照合を自動化する。
  • 侵害時はトークン即rotate:漏れた可能性のある認証情報・公開トークンを直ちに失効・再発行。ワームの連鎖を断つ。

導入チェックリスト

  • ☐ lockfile(package-lock.json / poetry.lock 等)を完全性ハッシュ込みでコミットしている
  • ☐ 公開直後の新バージョンを即採用せず、クールダウン期間を設けている
  • ☐ CI / ローカルで --ignore-scripts を既定にし、必要な物だけ許可している
  • ☐ CI のシークレットはジョブ単位スコープ+短命トークンで、本番クラウド鍵がビルドから見えない
  • ☐ 公開アカウントにフィッシング耐性 MFA、可能なら Trusted Publishing(OIDC) を使用
  • ☐ SBOM を管理し、既知の悪性パッケージとの照合を自動化している
  • ☐ 侵害時にトークンを即 rotate する手順が用意されている
  • ☐ AI が提案したパッケージ名を、そのまま install せず実在・正当性を確認している

まとめ

サプライチェーン攻撃は、「開発の土台になっている信頼」そのものを武器化します。6類型(タイポスクワッティング/依存関係混同/slopsquatting/メンテナ乗っ取り/悪意あるスクリプト/自己増殖ワーム)は入口こそ違え、ゴールは共通——install/import の自動実行を足がかりに、CIのシークレットとクラウドの鍵を奪うことです。

守りも共通します。取り込む前に止める(固定・クールダウン・許可リスト)、install時の自動実行を抑える(--ignore-scripts・環境分離)、漏れても限定する(最小権限・SBOM・即rotate)。AIエージェント基盤に固有のサプライチェーンは MCPのセキュリティ も合わせてご覧ください。

※ 本記事のキャンペーン名・統計値・パッケージ名は、Sonatype/Unit 42/Microsoft/各セキュリティベンダーの公表内容および報道に基づきます。状況は急速に更新されるため、対応時は最新の公式情報をご確認ください。

参考(一次情報)

この記事を書いた人
akiサイバーセキュリティ実務者 / エンジニア

サイバーセキュリティ業界で実務に携わるエンジニア。脆弱性・認証・暗号・ネットワークなど、現場で必要になる知識を開発者・運用担当者向けにかみ砕いて解説しています。

運営者・編集方針について

本記事は一般的な情報提供を目的とした解説であり、特定環境での動作・安全性・成果を保証するものではありません。実際の対策の適用は、各自の環境と責任において判断してください。

Related reading

関連記事

Security22
日本国内の主要セキュリティインシデント事例(2020–2025)国内の主要なセキュリティインシデント12件を一覧で俯瞰し、VPN未更新・委託先/グループ経由・弱い認証という繰り返し現れる侵入経路と失敗パターン、日本企業が今すぐ確認すべき対策チェックリストを事例研究として整理します。
Security12
ノートン vs ウイルスバスター 比較2026 - どちらを選ぶべきかNorton 360とウイルスバスタークラウドを料金・機能・サポート・動作の軽さで比較。VPN・バックアップ内蔵のオールインワンか、Pay Guard・24時間日本語電話サポートの国内安心感か。用途別の選び方を解説します。
Security10
ウイルスバスター クラウド レビュー - 機能・料金・特徴を解説トレンドマイクロのウイルスバスタークラウドの機能・料金プランを解説。AI検知・ランサムウェア対策(フォルダシールド)・Pay Guard・フィッシング対策など、国内シェアNo.1セキュリティソフトの全体像をまとめます。
Security10
ノートン 360 レビュー - 機能・料金・特徴を解説【世界No.1】世界販売台数No.1のノートン(Norton 360)の機能・料金プランを解説。リアルタイム保護・VPN・パスワードマネージャー・クラウドバックアップ・ダークウェブモニタリングなど、オールインワンセキュリティの全体像をまとめます。