サプライチェーン攻撃の構造と防御の考え方。ソフト・ハード・サービス経由の侵入をどう減らすか
対象の目安: 開発・運用・調達の実務担当 / 実務レベル

自分たちのシステムをどれだけ堅牢に作っても、そのシステムは数えきれない「他者の成果物」の上に成り立っています。OSやライブラリ、開発ツール、クラウドサービス、運用を委託しているベンダー、ネットワーク機器のファームウェア。これらは普段「信頼できるもの」として疑わずに使っています。サプライチェーン攻撃とは、まさにこの「信頼している入口」を突いてくる攻撃です。標的の本丸が固ければ固いほど、攻撃者は正面からではなく、より守りの薄い供給元を経由して入り込もうとします。
この攻撃が厄介なのは、被害者側の「自社のセキュリティ対策」だけでは防ぎきれない点にあります。正規の配布経路で届いた、正規の署名がついたアップデートが、すでに汚染されていたとしたら、受け取る側に止める手立てはほとんどありません。IPAの「情報セキュリティ10大脅威 2026」でも、組織向けの脅威として「サプライチェーンや委託先を狙った攻撃」が第2位に挙げられており、これは8年連続の選出です。一過性の流行ではなく、構造的・継続的に重視され続けている脅威だと捉える必要があります。
この記事では、サプライチェーン攻撃を「ソフトウェア経由」「ハードウェア経由」「サービス・委託先経由」の3つの経路に分けて構造を分解し、実際に起きた事例をもとに何が起きるのかを確認します。そのうえで、完全には防げないこの攻撃に対して、被害の確率と影響をどう下げていくか、実務での判断基準まで掘り下げます。
サプライチェーン攻撃とは何か。なぜ「信頼」が狙われるのか
通常の攻撃は、標的のシステムに存在する脆弱性や、利用者のミスを直接突きます。これに対してサプライチェーン攻撃は、標的が日常的に信頼して受け入れているもの、つまり「検証せずに通してしまう経路」を汚染します。攻撃者から見れば、堅牢な標的を直接攻めるより、その標的に部品やサービスを供給している、より守りの弱い組織を一つ落とすほうが効率的です。一つの供給元を汚染できれば、そこを使う多数の組織に一度に到達できる、いわば「一対多」の攻撃になります。
ここで鍵になるのが「信頼の連鎖(チェーン)」という言葉です。あなたのシステムはライブラリAを信頼し、ライブラリAはビルドツールBを信頼し、配布サーバーCを信頼している。この鎖のどこか一箇所でも乗っ取られると、最終的な利用者まで汚染が伝播します。そして利用者は、その鎖の途中で何が起きたかを直接は見られません。届いた成果物が「正規のもの」に見えてしまうからです。
注意
サプライチェーン攻撃の本質は「受け取る側の脆弱性」ではなく「供給する側の侵害」にあります。そのため、自社のパッチ適用やWAFといった従来の対策だけでは完結しません。「自分が直接管理していない部分のリスク」をどう扱うかという、視点の転換が必要です。
誤解しやすいのは、これを「他人の問題」と捉えてしまうことです。供給元が侵害された場合でも、最終的に情報漏えいや業務停止という被害を負うのは利用者側です。法的・契約的な責任の所在は別として、事業へのダメージは自社に降りかかります。だからこそ「供給元任せ」にせず、受け取る側でも被害を局所化し、異常を検知できる構えを持つことが重要になります。
3つの侵入経路で構造を分解する
サプライチェーン攻撃は手口が多様で全体像をつかみにくいため、侵入経路で分類すると整理しやすくなります。ここでは代表的な3経路を、何が信頼の対象になっているかとあわせて示します。
| 経路 | 信頼している対象 | 典型的な汚染のされ方 | 主な対策の方向性 |
|---|---|---|---|
| ソフトウェア経由 | OSS・商用ライブラリ・更新配信 | 依存パッケージやアップデートに悪意あるコードが混入 | 依存の把握(SBOM)、更新元の検証、影響の局所化 |
| ハードウェア経由 | 機器・部品・ファームウェア | 製造・流通過程で不正な部品やコードが仕込まれる | 調達元の信頼性評価、ファーム検証、機器の監視 |
| サービス・委託先経由 | MSP・SaaS・運用委託先 | 委託先が侵害され、その権限経由で標的に到達 | 委託先の権限最小化、契約での要求、アクセス監視 |
ソフトウェア経由
開発・運用の現場で特に接点が多く、報告される事例も多いのがこの経路です。現代のアプリケーションは、自分が書いたコードよりはるかに大量の外部ライブラリ(直接依存とその先の間接依存)の上に成り立っています。攻撃者はこの依存の鎖のどこかに悪意あるコードを忍び込ませます。手口は、人気パッケージに似た名前を付けて誤インストールを狙う「タイポスクワッティング」、メンテナの信頼を時間をかけて獲得してから本体に仕込む手口、ビルドや配布の基盤そのものを乗っ取る手口など、多岐にわたります。
ハードウェア経由
サーバー、ネットワーク機器、IoT機器などの製造・流通の過程で、不正な部品や改ざんされたファームウェアが仕込まれる経路です。ソフトウェアに比べると一般企業が遭遇する頻度は低めですが、いったん成立すると、OSより低いレイヤーで動作するため検知が極めて難しくなります。重要インフラや防衛、政府調達の文脈で特に重視されており、調達段階での供給元評価が中心的な対策になります。
サービス・委託先経由
運用やシステム管理を外部に委託している場合、その委託先(MSPやSaaS事業者を含む)が侵害されると、委託先が持つ正規のアクセス権限を経由して、標的のシステムに正面突破されてしまいます。委託先は業務上、標的の内部に強い権限で入れることが多いため、攻撃者にとって価値の高い踏み台になります。テクノロジー企業だけでなく、保守・運用・コンサルティングなど、自社に出入りするすべての取引先がこの経路の起点になり得ます。
実例で見る攻撃の構造
抽象論だけでは実感がわきにくいため、事実が確認できる代表的な事例で構造を確認します。
SolarWinds(SUNBURST): 更新配信の汚染
ネットワーク監視製品SolarWinds Orionのビルド過程に悪意あるコードが注入され、正規のソフトウェア更新として配布された事例です。MITRE ATT&CKはこれをキャンペーンC0024として記録しており、APT29による高度なサプライチェーン作戦と位置づけています。最初の活動は2019年8月にさかのぼり、発覚したのは2020年12月中旬。トロイの木馬化された更新を受け取った顧客は約18,000にのぼるとされ、そのうちの一部に対して追加の侵害活動が行われました。
この事例の恐ろしさは、利用者が「正規ベンダーの正規署名つき更新」を、正しい手順で適用しただけで侵害された点にあります。受け取る側のパッチ運用は何も間違っていません。汚染はビルド工程という、利用者からは見えない上流で起きていました。
XZ Utils(CVE-2024-3094): OSSメンテナ権限の悪用
2024年に発覚した、Linuxで広く使われる圧縮ライブラリxz/liblzmaへのバックドア混入事例です。NVDの記載によれば、xzのバージョン5.6.0以降の配布用tarballに悪意あるコードが含まれ(実際に汚染版として配布されたのは5.6.0と5.6.1)、一連の複雑な難読化を経て、liblzmaのビルド過程で特定の関数が改ざんされる仕組みでした。CVSS基本値は最大の10.0(Critical)です。
技術的な手口もさることながら、より示唆的なのは「人間の信頼」が標的になった点です。攻撃者は長期間にわたってプロジェクトに貢献し、メンテナとしての信頼を獲得したうえで仕込みを行ったとされます。この事例は、広く使われている安定版の更新ですら無条件には信頼できないこと、そして発見が幸運な偶然に依存しうることを示しました。
Log4Shell(CVE-2021-44228)との関係
広く使われるライブラリの欠陥が一斉に影響を及ぼすという意味で、2021年のLog4j2の脆弱性Log4Shell(CVE-2021-44228、CVSS 10.0)もサプライチェーンの問題として語られます。これは悪意ある混入ではなく機能設計上の脆弱性ですが、「自分が直接書いていない、深い依存の奥にあるコンポーネントが攻撃面になる」という構造は共通しています。多くの組織が「自社のどこでLog4jを使っているか」を即答できず、把握そのものに苦労しました。この教訓は あわせて読みたい Log4Shellに学ぶ、依存ライブラリ脆弱性の怖さとSBOM・SCAによる対策
防御の核心は「無条件の信頼」を減らすこと
サプライチェーン攻撃は供給元の侵害に起因するため、利用者側で100%防ぐことはできません。だからこそ防御の発想を「侵入を完全に止める」から「無条件に信頼している部分を減らし、汚染が起きても被害を局所化し、早く気づける状態にする」へと切り替えます。これはゼロトラストの考え方を、社外の供給元にまで広げる発想だと言えます。
NISTはこの領域を「サイバーセキュリティ・サプライチェーンリスク管理(C-SCRM)」として体系化しており、その実務ガイドが SP 800-161 Rev.1(Cybersecurity Supply Chain Risk Management Practices for Systems and Organizations)です。重要なのは、これを技術部門だけの課題にせず、調達・契約・全社のリスク管理に統合する点です。供給元の選定や契約条件そのものが、セキュリティ対策の一部になります。
具体的な打ち手は、次の4層で考えると整理しやすくなります。
- 1
把握する(何を信頼しているかを可視化)
自社が使っているソフトウェア部品を一覧化します。SBOM(ソフトウェア部品表)を整備し、どのライブラリのどのバージョンを、どこで使っているかを即答できる状態にします。Log4Shellで多くの組織がつまずいたのは、まさにこの「自分が何を使っているか分からない」点でした。委託先・利用SaaSの棚卸しも同様に重要です。
- 2
検証する(受け入れ時にチェックを入れる)
依存ライブラリの脆弱性スキャン(SCA)をCIに組み込み、既知の脆弱性や不審なパッケージを取り込み時点で弾きます。更新の取得元を固定し、署名やハッシュを検証します。新規の依存追加は無条件に通さず、レビューの対象にします。
- 3
局所化する(汚染が起きても被害を狭める)
委託先やサービスに与える権限を最小化し、必要な範囲・期間に限定します。ネットワークを分割し、一つの侵害が全体に広がらないようにします。ビルド環境や配布鍵などの重要資産を隔離し、保護します。
- 4
検知・対応に備える(気づいて動ける状態を作る)
供給元由来の異常も検知できるよう、エンドポイントやネットワークの監視・ログを整えます。重要なベンダーが侵害された場合の連絡・遮断・調査の手順を、あらかじめ決めておきます。
ここで現実的な優先順位として最初に効くのは、「把握」の徹底です。何を使っているか分からなければ、脆弱性が公表されたときに自社が影響を受けるかどうかすら判断できません。SBOMの整備とSCAの導入は、地味ですが費用対効果の高い第一歩です。依存ライブラリ管理の具体的な進め方は あわせて読みたい 依存ライブラリ管理とSCA。SBOMで攻撃面を把握する
ヒント
「すべての供給元を完全に検証する」のは現実的ではありません。重要度(その供給元が侵害されたときの影響の大きさ)で優先順位を付け、影響が大きいものから手厚くするのが実務的です。すべてに同じ労力をかけようとすると、結局どれも中途半端になります。
委託先・取引先リスクの実務的な扱い
技術的な対策と並んで重要なのが、契約と運用の面です。委託先経由の侵入は、技術だけでは閉じられません。委託先に求めるセキュリティ要件を契約に明記する、インシデント発生時の報告義務とタイムラインを取り決める、再委託(委託先がさらに別へ委託すること)の範囲を把握する、といった調達・契約レベルの取り組みが効いてきます。
運用面では、委託先に渡すアクセス権限の最小化が最大の防御線です。「常時・広範囲」のアクセスを与えていると、その委託先が侵害された瞬間に自社が丸ごと露出します。必要なときに、必要な範囲だけ、期限付きで権限を付与し、使われ方を監視する。これは委託先を疑うという話ではなく、どこか一箇所の事故が連鎖しない構造を作るという話です。
取引先のセキュリティ評価をやろうとすると、チェックシートを送って回収するだけで力尽きてしまいがちです。形式的な確認に終わらせず、自社にとって影響の大きい委託先はどこか、その委託先にどんな権限を渡しているかを先に洗い出すと、限られた工数を本当に重要な相手に集中させられます。
ここでの判断基準は「その取引先が侵害されたら、自社にどんな被害が及ぶか」です。機微な情報を預けている、自社システムに強い権限で入れている、業務が止まると事業に直結する。こうした条件に当てはまる相手ほど、評価と権限管理を手厚くします。逆に影響が限定的な相手にまで重い手続きを課すと、形骸化を招きます。
よくある誤解と判断の指針
実務でつまずきやすいのは、「対策の効果には限界がある」という前提を受け入れられないケースです。サプライチェーン攻撃は供給元の侵害に起因する以上、利用者側の努力だけでゼロにはできません。これは諦めではなく、だからこそ「侵入されても被害を小さくする」「早く気づく」側に投資する、という合理的な判断につながります。完璧な予防に固執して検知・対応を後回しにするのは、優先順位を誤っています。
もう一つの誤解は、署名やハッシュの検証があれば安全だという思い込みです。SolarWindsやXZ Utilsが示したのは、署名が正規であっても、署名される前の段階(ビルドや本体への混入)で汚染されていれば意味をなさないということです。署名検証は配布経路での改ざん検知には有効ですが、上流が侵害されたケースは別の手段(行動の監視、依存の精査、最小権限)で補う必要があります。
メモ
本記事で扱った攻撃手法の解説は、自社や許可された環境のリスクを理解し、防御に役立てることを目的としています。攻撃手法の検証は、自分が管理する環境または明示的な許可を得た対象に限って行ってください。許可のないシステムへのアクセスや検証は、不正アクセス禁止法等に抵触するおそれがあります。
よくある質問
中小規模の組織でも、ここまで対策する必要がありますか?
署名やハッシュを検証していれば防げますか?
SBOMを作ればサプライチェーン攻撃を防げますか?
委託先のセキュリティはどこまで自社の責任ですか?
まとめ
サプライチェーン攻撃に備えるための確認
- 自社が使うソフトウェア部品をSBOMで把握し、即座に追跡できる状態にしているか
- 依存ライブラリの脆弱性スキャン(SCA)をCIに組み込んでいるか
- 更新の取得元を固定し、署名・ハッシュを検証しているか
- 影響の大きい委託先・サービスを棚卸しし、優先順位を付けているか
- 委託先・サービスに与える権限を最小化し、期間や範囲を限定しているか
- 供給元由来の異常も検知できる監視・ログ体制があるか
- 重要ベンダー侵害時の連絡・遮断・調査の手順を事前に決めているか
サプライチェーン攻撃は、自社のシステムが堅牢かどうかとは別の軸で迫ってくる脅威です。完全な予防は望めない以上、防御の重心を「無条件の信頼を減らし、被害を局所化し、早く気づく」側に置くことが現実的な答えになります。まずは「自分たちが何を信頼して使っているのか」を可視化するところから始めてください。広く使われるコンポーネントが一斉に攻撃面になる構造については あわせて読みたい Log4Shellに学ぶ、依存ライブラリ脆弱性の怖さとSBOM・SCAによる対策 あわせて読みたい 依存ライブラリ管理とSCA。SBOMで攻撃面を把握する
出典・参考
関連する記事
Log4Shellに学ぶ、依存ライブラリ脆弱性の怖さとSBOM・SCAによる対策
Apache Log4jのCVE-2021-44228(Log4Shell)を題材に、依存ライブラリの脆弱性がなぜ広範な被害を生むのかを原理から解説し、SBOMとSCAを軸にしたサプライチェーンの脆弱性管理を実務目線で整理します。
依存ライブラリ管理とSCA。SBOMで攻撃面を把握する
自作コードより外部ライブラリのほうが多い時代に、何を使っているかを台帳化するSBOMと、既知の脆弱性を突き合わせるSCAの基本を解説。SPDX/CycloneDXの違い、Dependabot/Renovateによる更新自動化、CI組み込みの判断基準まで実務目線でまとめます。
MITRE ATT&CKで攻撃を体系的に理解する。戦術と技術のマトリクスを検知・防御にどう活かすか
攻撃者の行動を戦術と技術のマトリクスで整理するMITRE ATT&CKを、原理から実務での使い方まで解説します。検知ルールの評価やレッドチーム演習、脅威インテリジェンスへの活用の勘所を具体的に示します。


