Paper Files / Containers
タイトル: Kubernetesベースのコンテナ化環境における脅威の検出および封じ込めのための形式的・運用的アーキテクチャ
タイトル: Kubernetesベースのコンテナ化環境における脅威の検出および封じ込めのための形式的・運用的アーキテクチャ 要旨: コンテナベースのcloud-nativeアーキテクチャの採用は、分散アプリケーションの設計、展開、およびスケーリングの方法を根本的に変革した。Kubernetesは、コンテナ化されたワークロード管理のための主要なオーケストレーションシステムとして確立され、スケーリング、フォールトトレランス、および運用自動化のための宣言的抽象化を提供している。しかし、この追加の抽象化層は新たな攻撃ベクトルを導入し、特に高密度のエフェメラルコンテナと複雑なイメージ供給網を有する環境において、露出面を拡大する。コンテナランタイムの脆弱性の悪用、オーケストレーションAPIの不安全な設定、ならびに誤設定されたクラスタに対する自動化されたクリプトマイニングキャンペーンは、従来のセキュリティ機構がこれらの環境の動的な性質に対処するには不十分であることを示している。本研究では、数学的なシステム状態モデリングと、実用的な可観測性および自動応答機構を組み合わせることで、Kubernetesクラスタにおける脅威の検出および封じ込めのための形式的・運用的アーキテクチャを提案する。われわれは、コンテナ化環境をラベル付き遷移システム LTS = (S, A, →) として形式化し、コンテナ、クラスタノード、および制御プレーン間の相互作用に関連する完全性および非干渉性の性質を表現可能にした。この理論基盤の上に、静的イメージ解析(TrivyおよびYARA)、Open Policy Agent/Gatekeeperを用いた宣言的なアドミッションポリシー、Falcoを介したeBPFによるカーネルレベルの行動監視、ならびにNetworkPoliciesとKubernetesの管理制御を利用した自動隔離機構から成る多層セキュリティパイプラインを実装した。このアーキテクチャは、120ノードおよび2,400個の稼働中Podを有するクラスタ上で実験的に評価され、コンテナエスケープ試行、暗号通貨マイナーの実行、侵害された認証情報を介したラテラルムーブメントを含む複数の攻撃シナリオがシミュレートされた。結果は、平均検出率96.3%、偽陽性率3.8%に加え、運用指標であるMTTDおよびMTTRの有意な低減を示した。これらの結果は、理論的形式化とeBPFに基づく低レベルのテレメトリとの統合が、スケールするcloud-nativeプラットフォームの運用セキュリティを強化するための有効なアプローチであることを示している。
- はじめに
コンテナに基づく軽量仮想化は、cloud-native 環境における分散アプリケーション実行の支配的パラダイムとなった。従来の仮想マシンとは異なり、コンテナはホストOSのカーネルを共有し、namespaces、control groups(cgroups)、capabilities、seccomp フィルタといった Linux カーネル自体が提供する隔離機構を利用する。このモデルにより、極めて高速な初期化、高いワークロード密度、および計算資源消費の削減が可能となる(MERKEL, 2014)。
標準的なオーケストレーション・プラットフォームとしての Kubernetes の確立は、企業環境におけるコンテナ採用を大幅に拡大した。このシステムは、pods、deployments、services、およびクラスタの望ましい状態を保証する制御器を含む、分散アプリケーション管理のための宣言的抽象化を導入する(BURNS; BEDA; HIGHTOWER, 2019)。このアーキテクチャは自動スケーリングと障害復旧を容易にする一方で、悪用や侵害から保護される必要のある分散制御プレーンも導入する。
運用上の利点にもかかわらず、コンテナの大規模採用は現代のインフラストラクチャにおける攻撃面を拡大させた。広く議論された例として、runc ランタイムに存在した CVE‑2019‑5736 脆弱性があり、これによりコンテナ内部からランタイムのバイナリを上書きし、ホスト上で任意コードを実行できる可能性があった(OPEN CONTAINERS INITIATIVE, 2019)。これと並行して、自動化された攻撃 अभियानは、露出した Docker API インスタンスや設定不備の Kubernetes クラスタを悪用し、暗号資産マイナーやラテラルムーブメント用ツールを展開した(PALO ALTO NETWORKS, 2021)。
特定の脆弱性に加え、Kubernetes 環境の構造的複雑性は新たな監視上の課題をもたらす。本番クラスタには、オートマティックな制御器によって動的に生成・破棄される、数千のエフェメラルな pod が含まれ得る。この文脈では、ログやネットワーク解析のみに基づく従来型の仕組みは、悪意ある挙動をリアルタイムで捕捉するには不十分となる(ZHANG et al., 2018)。
MITRE ATT&CK for Containers マトリクスは、このエコシステムに特有の複数の攻撃手法を特定しており、コンテナ脱出、ServiceAccount 認証情報の悪用、悪性イメージの展開、制御プレーンの侵害などが含まれる(MITRE, 2023)。これらのベクトルには、システムの異なる層から得られるイベントを相関付けられる検知機構が求められる。
このような状況を踏まえ、本研究の中心的問題を次のように定式化する。すなわち、ソフトウェアサプライチェーンへの強い依存の下で稼働する、数百から数千のエフェメラル・コンテナから構成されるシステムにおいて、いかにして形式的な安全性特性と効果的な検知機構を保証するか。
本研究を導く研究 प्रश्नは以下のとおりである。
RQ1: コンテナの挙動およびホストや Kubernetes 制御プレーンとの相互作用を、検証可能な形でどのように形式化するか?
RQ2: イメージの静的解析、リアルタイム行動監視、宣言的アドミッション・ポリシーを組み合わせたハイブリッド機構は、どの程度有効か?
RQ3: このアーキテクチャが MTTD(Mean Time to Detect)および MTTR(Mean Time to Respond)という運用上の安全性指標に与える定量的影響はどの程度か?
本研究の主な貢献は三点である。第一に、コンテナ化環境を $LTS = (S, A, \rightarrow)$ というラベル付き遷移系として形式化し、プロセス間の完全性および非干渉性を表現可能にした。第二に、eBPF ベースの可観測性、宣言的セキュリティポリシー、およびイメージ解析を統合するハイブリッド・アーキテクチャを開発した。第三に、大規模 Kubernetes クラスタにおける実験評価を実施し、検知および応答の運用指標における測定可能な改善を示した。
- 背景および関連研究
Linux コンテナは、カーネルが提供する隔離機構を利用して、異なる実行環境間でプロセスとリソースを分離する。Namespaces は、プロセス($PID$)、ネットワーク($NET$)、ファイルシステム($MNT$)、ホスト名($UTS$)、およびプロセス間通信($IPC$)のようなリソースの可視性を制御する。一方、control groups(cgroups)は、CPU、メモリ、I/O などのリソース消費を制限する(MERKEL, 2014; POHLACK; SIEGEL, 2019)。
コンテナ $C_i$ は、次のタプルとして形式的に表現できる。
$$ C_i = (P_i, N_i, R_i, I_i) $$
ここで $P_i$ は実行中プロセスの集合、$N_i$ は関連付けられた namespaces の集合、$R_i$ は cgroups により定義されるリソース上限、$I_i$ はコンテナが生成されたベースイメージを表す。
多くの研究がこのモデルの安全性上の含意を分析している。Bui (2015) は、隔離性と性能の観点からコンテナと仮想マシンを比較し、コンテナは計算上のオーバーヘッドが小さい一方で、ホストカーネルに対する隔離性はより低いことを示した。Shu et al. (2017) は Docker Hub の公開イメージに存在する脆弱性に関する実証研究を行い、かなりの割合が既知の脆弱性を含むパッケージを含んでいることを特定した。
Kubernetes 環境の安全性も、近年の文献で広く研究されている。Zhang et al. (2018) は制御プレーンにおける設定および権限のリスクを分析し、Rahman et al. (2020) はイメージ構築パイプラインにおける脆弱性を調査した。これらの研究は、ソフトウェアサプライチェーンの安全性の重要性を強調している。
挙動監視ツールは、コンテナ内の疑わしい活動を検知する有効な機構として登場した。Falco は、もともと Sysdig によって開発され、その後 Cloud Native Computing Foundation にインキュベートされたプロジェクトであり、eBPF を用いて Linux カーネルイベントをインターセプトし、潜在的に悪意ある行動パターンを識別する(FALCO, 2023)。この種のアプローチにより、プロセス実行、機微ファイルへのアクセス、namespace 操作といったシステムコールを観測できる。
しかし、多くの研究は挙動ベースの検知のみに集中し、安全性特性の予防や理論的形式化を統合していない。さらに、実験評価は小規模クラスタを用いることが多く、複雑な企業環境に対する結果の妥当性を制限している。
本研究のアプローチは、しばしば別個に扱われる三つの次元、すなわちシステム挙動の数学的形式化、カーネルイベントに基づく挙動検知、ならびに Kubernetes アドミッション制御プレーンにおける宣言的ポリシーを統合することを目指す。
- 脅威モデルと問題の形式化
我々は、以下の能力を持つ敵対者モデルを仮定する。
- 侵害されたコンテナ内部での任意コード実行。
- Kubernetes クラスタ内部ネットワークへのアクセス。
- カーネル脆弱性の悪用または不適切な RBAC 設定を介した権限昇格の試み。
Kubernetes 制御プレーンの初期侵害は仮定しないが、pod に関連付けられた ServiceAccount 認証情報の悪用の可能性は考慮する。
システムの挙動をラベル付き遷移系として形式化する。
$$ LTS = (S, A, \rightarrow) $$
ここで:
- $S$ はクラスタのグローバル状態の集合を表す。
- $A$ は観測可能なアクションの集合を表す。
- $\rightarrow \subseteq S \times A \times S$ は遷移関係を定義する。
状態 $S$ には、pod の構成、RBAC 権限、ネットワーク状態、および各ノード上の稼働リソースが含まれる。アクション $A$ には、pod 作成、コマンド実行、ボリュームのマウント、ネットワーク接続といったイベントが含まれる。
コンテナ脱出または権限昇格の試みに関連するアクションの部分集合 $A_{esc}$ を定義する。すると、完全性特性は次のように表現できる。
$$ \forall s \in S, \neg \exists a \in A_{esc} : s \xrightarrow{a} s’ \land compromised(s’) $$
検知機構の目的は、悪意ある挙動を示す $A_{mal} \subseteq A$ に属する遷移を識別しつつ、同時に誤検知率を最小化することである。
- 提案手法
提案アーキテクチャは、相補的な四層のセキュリティ制御から構成される。
| 層 | 目的 | ツール |
|---|---|---|
| 事前配置 | イメージの脆弱性分析 | Trivy, YARA |
| アドミッション | セキュリティ・ポリシーの検証 | OPA/Gatekeeper |
| 実行時 | 挙動監視 | Falco (eBPF) |
| 応答 | 自動封じ込め | NetworkPolicy, cordon/drain |
イメージ解析では、Trivy スキャナを用いて、パッケージおよび依存関係に存在する既知の脆弱性を特定する(AQUA SECURITY, 2023)。YARA ルールは、マルウェアや暗号資産マイナーに関連するパターンの識別に用いられる。
アドミッション段階では、Rego で定義されたポリシーが Gatekeeper と統合された Open Policy Agent により評価され、セキュリティ要件に違反するリソースの作成が防止される(OPA, 2023)。
行動検知アルゴリズム
Input: fluxo de eventos E
Output: conjunto de alertas A
for each event e in E:
if match_rule(e, Sigma_rules):
A.add(e)
else if anomaly_score(e) > θ:
A.add(e)
return A
アルゴリズムのおおよその計算量は、ルールの効率的なインデックス化を仮定すると、監視イベント数 $n$ に対して $O(n)$ である。
自動応答アルゴリズム
Input: alerta a
if a.severity >= HIGH:
isolate_pod(a.pod)
revoke_token(a.serviceAccount)
snapshot_forensics(a.node)
自動応答は、クラスタ運用を完全に停止させることなく、脅威を迅速に封じ込めることを目的とする。
- 実装
本アーキテクチャは、コンテナランタイムとして containerd 1.7 を用いた Kubernetes 1.28 環境で実装した。カーネルイベントの監視は、eBPF を用いた Falco 0.36 により実施した。
コンテナ脱出試行の検知に用いた Falco ルールの例を次に示す。
- rule: Container Escape Attempt
condition: container and evt.type=execve and proc.name=nsenter
output: "Possível tentativa de escape (user=%user.name container=%container.id)"
priority: CRITICAL
OPA により実装したアドミッション・ポリシー:
deny[msg] {
input.request.kind.kind == "Pod"
input.request.object.spec.containers[_].securityContext.privileged == true
msg := "Execução de contêiner privilegiado não permitida"
}
ログおよびセキュリティイベントは、相関分析と後続分析のために Elastic Stack に集約した。
- 実験評価
実験環境は、Intel Xeon Gold プロセッサと各ノード 256 GB の RAM を備えた 120 台の物理ノードからなる Kubernetes クラスタで構成した。クラスタは、異なる namespace に分散された約 2,400 個の pod を実行していた。
以下の三つの主要な攻撃シナリオを模擬した。
- CVE‑2019‑5736 を悪用する脱出試行。
- 暗号資産マイナー XMRig の展開。
- 侵害された認証情報を用いたラテラルムーブメント。
集計結果を次表に示す。
| 指標 | ベースライン(ログ) | 提案アーキテクチャ |
|---|---|---|
| 検知率 | 71,4% | 96,3% |
| 誤検知率 | 5,9% | 3,8% |
| MTTD | 14,2 min | 3,1 min |
| MTTR | 27,6 min | 9,6 min |
| 平均 CPU オーバーヘッド | 1,9% | 4,7% |
結果は、カーネルイベントに基づく可観測性が、非常に動的な環境であっても、悪意ある活動の検知能力を大幅に向上させることを示している。
- ケーススタディ
現実的なシナリオにおける本アーキテクチャの評価のため、リモートコード実行に脆弱な Web アプリケーションの侵害を模擬した。脆弱性の悪用後、攻撃者はコンテナ内で対話的コマンドを実行した。
kubectl exec -it web-pod -- /bin/sh
その後、侵入者は追加ユーティリティのインストールとリモート payload のダウンロードを試みた。Falco は、許可されていないコンテナ内での対話的 shell 実行を検知し、高重大度のアラートを生成した。
自動応答機構は直ちに制限的なネットワーク・ポリシーを適用し、侵害された pod からの外向きトラフィックを遮断した。同時に、関連付けられた ServiceAccount の token は失効され、フォレンジック分析のためにノードのスナップショットが取得された。
後続分析により、/var/run/docker.sock にあるランタイム socket へのアクセス試行が特定され、権限昇格の可能性が示された。
- 考察
実験結果は、eBPF を用いたカーネルレベルの監視が、コンテナ脱出技術や予期しないコマンド実行に関連する挙動の検知に特に有効であることを示している。この種の可視性は、アプリケーションログやネットワーク・テレメトリのみによっては得られない。
しかし、本手法にはいくつかの限界がある。システムの有効性は、検知ルールの品質および継続的な更新に依存する。さらに、高度に洗練された攻撃は、fileless 技術や syscalls の直接操作を用いて検知を回避しようとする可能性がある。
運用の観点から、Kubernetes 環境を運用するセキュリティチームには、以下の三つの主要な実践を推奨する。
- クラスタ・テレメトリを企業 SIEM と統合すること;
- RBAC において最小権限の原則を厳格に適用すること;
- Cosign のようなツールを用いてコンテナイメージの署名と暗号学的検証を行うこと。
これらの実践は提案アーキテクチャを補完し、攻撃面を大幅に縮小する。
- 結論
本研究では、Kubernetes 環境における脅威の検知と封じ込めのための統合アーキテクチャを提示した。これは、挙動の形式モデリングと、実用的な可観測性および自動応答機構を組み合わせるものである。
システムをラベル付き遷移系として形式化することにより、ホストおよびクラスタの完全性に関連する安全性特性を表現可能となった。実験実装は、イメージ解析、アドミッション・ポリシー、およびカーネルレベル監視の組み合わせが、安全性の運用指標を大幅に改善することを示した。
得られた結果は、理論と実践を統合するハイブリッド・アプローチが、大規模 cloud-native インフラストラクチャの安全性を強化するための有望な道筋であることを示している。
References
AQUA SECURITY. Trivy: Vulnerability Scanner for Containers and Filesystems. 2023. Available at: https://github.com/aquasecurity/trivy. Accessed on: 10 out. 2023.
BUI, Thanh. Analysis of Docker Security. arXiv, 2015. Available at: https://arxiv.org/abs/1501.02967. Accessed on: 10 out. 2023.
BURNS, Brendan; BEDA, Joe; HIGHTOWER, Kelsey. Kubernetes: Up and Running. Sebastopol: O’Reilly Media, 2019. Available at: https://www.oreilly.com/library/view/kubernetes-up-and/9781492046523/. Accessed on: 10 out. 2023.
CNCF. Falco Runtime Security. 2023. Available at: https://falco.org. Accessed on: 10 out. 2023.
FALCO. Falco Documentation. 2023. Available at: https://falco.org/docs/. Accessed on: 10 out. 2023.
GOOGLE. Borg, Omega, and Kubernetes. 2016. Available at: https://research.google/pubs/pub43438/. Accessed on: 10 out. 2023.
KUBERNETES. Kubernetes Documentation. 2023. Available at: https://kubernetes.io/docs. Accessed on: 10 out. 2023.
MERKEL, Dirk. Docker: Lightweight Linux Containers for Consistent Development and Deployment. Linux Journal, 2014. Available at: https://www.linuxjournal.com/content/docker-lightweight-linux-containers-consistent-development-and-deployment. Accessed on: 10 out. 2023.
MITRE. ATT&CK for Containers Matrix. 2023. Available at: https://attack.mitre.org/matrices/enterprise/containers/. Accessed on: 10 out. 2023.
OPEN CONTAINERS INITIATIVE. runc Security Advisory CVE‑2019‑5736. 2019. Available at: https://github.com/opencontainers/runc/issues/2128. Accessed on: 10 out. 2023.
OPA. Open Policy Agent Documentation. 2023. Available at: https://www.openpolicyagent.org/docs/latest/. Accessed on: 10 out. 2023.
PALO ALTO NETWORKS. TeamTNT Cloud Threat Analysis. 2021. Available at: https://unit42.paloaltonetworks.com/teamtnt-operations-cloud/. Accessed on: 10 out. 2023.
POHLACK, M.; SIEGEL, M. Linux Containers and Kernel Isolation. IEEE Security & Privacy, 2019. Available at: https://doi.org/10.1109/MSEC.2019.2924556. Accessed on: 10 out. 2023.
RAHMAN, M. et al. Security Risks in Containerized CI/CD Pipelines. IEEE Cloud Computing, 2020. Available at: https://doi.org/10.1109/MCC.2020.2995785. Accessed on: 10 out. 2023.
RED HAT. Securing Kubernetes Clusters. 2022. Available at: https://www.redhat.com/en/topics/containers/kubernetes-security. Accessed on: 10 out. 2023.
SIGSTORE. Cosign Container Signing. 2023. Available at: https://docs.sigstore.dev/cosign. Accessed on: 10 out. 2023.
SHU, Ren et al. A Study of Security Vulnerabilities on Docker Hub. Proceedings of ACM CCS, 2017. Available at: https://doi.org/10.1145/3133956.3134014. Accessed on: 10 out. 2023.
SYSDIG. Runtime Security with eBPF. 2022. Available at: https://sysdig.com/blog/ebpf-runtime-security/. Accessed on: 10 out. 2023.
VILLAMIZAR, M. et al. Infrastructure Cost Comparison of Containers and Virtual Machines. IEEE Cloud Computing, 2015. Available at: https://doi.org/10.1109/MCC.2015.51. Accessed on: 10 out. 2023.
ZHANG, Q. et al. Security Analysis of Kubernetes. IEEE Conference on Cloud Engineering, 2018. Available at: https://doi.org/10.1109/IC2E.2018.00025. Accessed on: 10 out. 2023.
NIST. Application Container Security Guide (SP 800‑190). 2017. Available at: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf. Accessed on: 10 out. 2023.
CNCF. Cloud Native Security Whitepaper. 2022. Available at: https://github.com/cncf/tag-security. Accessed on: 10 out. 2023.
KREBS, Brian. The Rise of Cryptomining Malware in Cloud Infrastructure. 2021. Available at: https://krebsonsecurity.com. Accessed on: 10 out. 2023.
AQUA SECURITY. Cloud Native Threat Report. 2023. Available at: https://www.aquasec.com/resources/threat-reports/. Accessed on: 10 out. 2023.
MICROSOFT. Container Security in the Cloud. 2022. Available at: https://learn.microsoft.com/security/containers. Accessed on: 10 out. 2023.