はじめに
2020年のSolarWinds事件、2021年のLog4Shell、2024年のXZ Utils改ざん事件——
これらに共通するのは「ターゲットを直接攻撃するのではなく、その手前にある信頼されたソフトウェアの流通経路を汚染した」という点です。
サプライチェーン攻撃は、もはや「大企業だけの話」ではありません。Kubernetesを使う組織なら、誰もが攻撃対象になりえます。
この記事では、サプライチェーン攻撃の本質を理解したうえで、Sysdigがどのようなアプローチで防御を実現するかを、Build → Ship → Run の3段階にわたって解説します。
サプライチェーン攻撃とは何か
攻撃の本質:「信頼されたルート」を汚染する
サプライチェーン攻撃は、直接ターゲットを攻撃するのではなく、ターゲットが信頼して使っている何かを汚染することで侵入します。
代表的な攻撃パターン
| 攻撃種別 | 具体例 | 影響範囲 |
|---|---|---|
| 悪意あるパッケージ混入 |
event-stream(npm)、solarwinds-orion
|
依存するすべてのアプリ |
| 正規イメージの改ざん | Docker Hub上の公式風イメージへのバックドア | イメージを使うすべてのコンテナ |
| CI/CD資格情報の漏洩 | GitHub Actionsシークレットの盗難 | デプロイ先の本番環境すべて |
| IaCバックドア | Terraform moduleへの悪意ある変更 | インフラ全体 |
| ビルドシステムの侵害 | SolarWinds Orionのビルドサーバー汚染 | 顧客1万8,000組織 |
なぜ今、サプライチェーン攻撃が急増しているのか
核心的な問題:従来のセキュリティは「外からの侵入を防ぐ」設計でした。しかしサプライチェーン攻撃では、ファイアウォールの内側にすでに「敵」が入り込んだ状態でアプリケーションがデプロイされます。
Sysdigの基本思想:3レイヤー防御
Sysdigはサプライチェーン攻撃に対して、ソフトウェアのライフサイクル全体(Build → Ship → Run)をカバーする防御戦略を持っています。
① Build段階の防御:「危険なものを作らない」
イメージスキャン(CVE・マルウェア・シークレット)
Sysdig Secure(およびsysdig-cli-scanner)は、コンテナイメージを多角的にスキャンします。
CI/CD組み込みの例(GitHub Actions)
name: Sysdig Image Scan
on: [push]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Build Image
run: docker build -t myapp:${{ github.sha }} .
- name: Sysdig Image Scan
uses: sysdiglabs/scan-action@v5
with:
image-tag: myapp:${{ github.sha }}
sysdig-secure-token: ${{ secrets.SYSDIG_SECURE_TOKEN }}
sysdig-secure-url: ${{ secrets.SYSDIG_URL }}
stop-on-failed-policy-eval: true # ポリシー違反でCI停止
severity-at-least: high # HIGH以上でブロック
SBOMによる完全な依存関係の可視化
なぜSBOMが重要か:Log4Shellのとき、多くの組織が「自分のシステムにLog4jが入っているか」すら分からなかった。SBOMがあれば、新たなCVEが発表された瞬間に影響範囲が特定できます。
② Ship段階の防御:「危険なものを通さない」
イメージ署名・検証(Supply Chain Integrity)
Admission Controllerによるポリシー適用
Sysdig Secureは、Kubernetes Admission Webhookと連携してデプロイ時にポリシーを適用します。
③ Run段階の防御:「動いた攻撃を止める」★最重要
ここがSysdigの最大の強みです。
サプライチェーン攻撃の最終形態は「実行」です。
どれだけBuildとShipで防御しても、ゼロデイ、未知のマルウェア、ソーシャルエンジニアリング経由の侵入は避けられません。最終的に攻撃者はコードを動かします。そこを捕まえるのがRuntime検知です。
Falcoベースのランタイム検知
サプライチェーン攻撃で実際に発火するFalcoルール例
パターン1:バックドアによる外部C2通信
- rule: Unexpected outbound connection to internet
desc: >
サプライチェーン経由で混入したバックドアが
C2サーバーへ接続しようとしている
condition: >
outbound and not proc.name in (allowed_outbound_processes)
and not fd.sip in (internal_subnets)
output: >
Unexpected outbound connection
(user=%user.name command=%proc.cmdline
connection=%fd.name container=%container.name)
priority: CRITICAL
パターン2:/tmpからの実行(典型的なドロッパー)
- rule: Run executables from /tmp or similar dirs
desc: >
攻撃者がコンテナ内に後からダウンロードした
マルウェアを/tmpから実行
condition: >
spawned_process
and (proc.cwd startswith /tmp
or proc.cwd startswith /dev/shm
or proc.cwd startswith /var/tmp)
and not container.image.repository in (trusted_images)
output: >
Process spawned in suspicious directory
(user=%user.name dir=%proc.cwd cmd=%proc.cmdline
image=%container.image.repository)
priority: CRITICAL
パターン3:curl | bash(最典型的な攻撃)
- rule: Curl piped to shell
desc: サプライチェーン経由で仕込まれた典型的な悪意スクリプト実行
condition: >
spawned_process
and proc.name in (shell_binaries)
and proc.args contains "curl"
and proc.args contains "|"
output: >
Curl piped to shell detected
(user=%user.name cmd=%proc.cmdline
container=%container.name image=%container.image.repository)
priority: CRITICAL
Drift検知:「イメージから変化したものを捕まえる」
Drift検知はSysdigが提供する非常に強力な機能です。
概念:コンテナ起動時のイメージと実行時の状態を継続的に比較する。
Drift検知が捕まえる具体的なシナリオ
AIエージェント監視:新世代のサプライチェーンリスク
2024〜2025年にかけて急浮上しているリスクが、AIコーディングエージェント経由のサプライチェーン攻撃です。
実運用的な守り方:3段階の成熟モデル
Lv.1:まず見える化(今日から始められる)
-
sysdig-cli-scannerをCIに組み込む - Falcoをクラスターにデプロイ(Helm)
- Critical/High CVEのレポートを週次で確認
- Sysdig Secure のダッシュボードをセットアップ
コスト:エンジニア1人・1週間程度
Lv.2:止める+検知する(実践レベル)
Lv.3:サプライチェーン全体を一貫して守る(成熟レベル)
WizとSysdigの比較
| 観点 | Wiz | Sysdig |
|---|---|---|
| 強み | クラウドインフラ全体の可視化・リスクグラフ | Runtime検知・Drift検知・実行時の攻撃封じ込め |
| スキャン | エージェントレスで広範囲 | イメージ単位・SBOM連携 |
| Runtime | 限定的(主に設定・ポリシー) | Falco ベース・リアルタイム |
| Drift検知 | ❌ | ✅ |
| K8s深度 | 標準的 | 深い(syscallレベル) |
| インシデント対応 | 可視化まで | 自動隔離・Kill可能 |
| 向いてる組織 | クラウド全体のリスク管理をしたい | K8s Runtime を守りたい |
Wizだけ → 「脅威が見える」「侵入後は追えない」
Sysdig → 「侵入後も動いた瞬間に捕まえられる」
理想 → Wiz(事前リスク管理)+ Sysdig(Runtime防御)の組み合わせ
まとめ
サプライチェーン攻撃に対するセキュリティは、「どこか1点を強化すれば終わり」という時代ではありません。
Build → Ship → Run の全フェーズにわたる多層防御が必要であり、最終的に攻撃が「動く」フェーズであるRuntimeを守ることが最も重要です。
Sysdigは、その最後の砦を守るための実践的なツールセットを提供しています。