Kubernetesの脅威モデル
クラスターが攻撃される場所を学びます。
「Kubernetesの脅威モデル」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
Kubernetesが標的になる理由
Kubernetesは、多数のノードにまたがるコンテナをオーケストレーションします。秘密情報、ネットワーク、コンピューティングを一元管理するため、クラスターを侵害すると、そこで実行されるすべてのワークロードを侵害することになりかねません。
- 1つのAPIサーバーがクラスター全体を制御します。
- ノード上では、多数のテナントのワークロードが並行して実行されます。
- コアのCVEよりも設定ミスのほうがはるかに一般的です。
クラスターアーキテクチャの復習
脅威モデルを作成するには、コンポーネントを把握しておく必要があります。
- コントロールプレーン:APIサーバー、etcd、scheduler、controller-manager。
- ノード:kubelet、コンテナランタイム、kube-proxy、Pod。
- etcdは、クラスターの状態と秘密情報をすべて保存します。
APIサーバーは単一のエントリポイントであり、etcdはデータ上の最重要資産です。
攻撃対象領域マップ
攻撃は、それぞれ異なる層を標的にします。
- 外部:公開されたAPIサーバー、ダッシュボード、Ingress。
- ワークロード:Pod内で侵害されたアプリケーション。
- アイデンティティ:サービスアカウントトークンとRBAC。
- ノード:kubelet API、コンテナからホストへのエスケープ。
- サプライチェーン:悪意のあるイメージと依存関係。
公開されたコントロールプレーン
インターネットから到達可能なAPIサーバーや、認証が弱いkubeletは、クラスターを乗っ取る直接的な経路になります。
- APIサーバーで匿名アクセスが有効になっている。
- kubeletの読み取り/書き込みAPI(ポート10250)が公開されている。
- 管理者バインディングを持つKubernetesダッシュボードが公開されている。
# Probe an exposed kubelet for running pods
curl -sk https://NODE_IP:10250/pods
# Test anonymous API access
kubectl --insecure-skip-tls-verify --server https://API:6443 get podsPod内の足がかり
最も一般的な開始点は、Pod内で実行されているアプリケーションのRCEです。Podの内部から、攻撃者は次のものを探します。
/var/run/secrets/...にマウントされたサービスアカウントトークン。- 到達可能な内部サービス(ネットワークポリシーなし)。
- 多くの場合、
kubernetes.defaultとして名前解決できるAPIサーバー。
# From inside a pod: read the mounted SA token
cat /var/run/secrets/kubernetes.io/serviceaccount/token
# Use it against the API
curl -sk -H "Authorization: Bearer $(cat .../token)" https://kubernetes.default/api/v1/namespaces/default/podsコンテナエスケープ
コンテナからノードへ脱出すると、そのホスト上のすべてのワークロードにアクセスできるようになります。
- 特権付きコンテナは、ホストデバイスにアクセスして脱出できます。
- hostPID/hostNetwork/hostPathのマウントによって、影響範囲が拡大します。
- マウントされたDockerソケットを使うと、特権付きコンテナを起動できます。
- 危険なケイパビリティ(
SYS_ADMIN)によってエスケープが可能になります。
# A privileged pod can mount the host filesystem and chroot to it
mount /dev/sda1 /mnt && chroot /mnt shetcd:秘密情報ストア
etcdは、Secretsを含むクラスターの状態全体を保持します。Secretsはデフォルトではbase64でエンコードされているだけです。直接etcdにアクセスできると(設定ミスのあるクラスターでは認証されていないこともあります)、すべての秘密情報が漏えいします。
# Read all secrets from an exposed etcd
etcdctl --endpoints=https://NODE:2379 get / --prefix --keys-onlyクラスター内のラテラルムーブメント
内部に侵入すると、攻撃者はクラスターのアイデンティティとネットワークを使って別の場所へ移動します。
- 権限の広いサービスアカウントがあれば、特権付きPodを作成できます。
- フラットなPodネットワーク(NetworkPolicyなし)では、あらゆるサービスに到達できます。
- 標的のノードにPodをスケジュールすると、ノードを侵害できます。
Podからのクラウドメタデータ
マネージドクラスター(EKS/GKE/AKS)では、Podがノードのクラウドメタデータサービスに到達し、ノードのIAM/ロール認証情報を窃取できる場合があります。これにより、クラスターの侵害がクラウドアカウントの侵害へとつながります。
防御策には、IMDSv2、ネットワーク層でのメタデータへのアクセス遮断、ノードロールの代わりにワークロードアイデンティティを使用することなどがあります。
ツールによるマッピング
ツールを使うと、クラスターの脅威評価を自動化できます。
- kube-hunterは、公開されたコンポーネントを調査します。
- kube-benchは、CISベンチマークへの準拠状況を確認します。
- Peirates / kubeletctlは、クラスター内部の攻撃経路を検証します。
# Assess attack surface
kube-hunter --remote API_IP
# CIS benchmark check on a node
kube-bench run --targets node防御の優先事項
脅威モデルから、明確な防御の優先事項が見えてきます。APIサーバーをロックダウンし、RBACを制限し、Podを分離し、ノードを強化して、サプライチェーンを保護します。次のレッスンでは、それぞれを詳しく扱います。
テスト時は、許可を得たクラスターのみを対象に攻撃し、本番ワークロードの安定性を損なわないようにしてください。
クイックチェック
Kubernetesの脅威モデルに関する基礎知識を確認します。
まとめ
Kubernetesクラスターがどこから攻撃されるかをマッピングしました。
- APIサーバーとetcdは、中心的で価値の最も高い標的です。
- Pod内の足がかりは、マウントされたSAトークンとフラットなネットワークを悪用します。
- 特権付きPodやhostPath Podによって、コンテナからノードへエスケープできます。
- マネージドクラスターでは、メタデータを利用したクラウドへのピボットが起こるリスクがあります。
次はRBACとサービスアカウントです。
AI チューターと学ぶ Cyber Security Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 76
- レッスン
- 303
よくある質問
「Kubernetesの脅威モデル」レッスンは無料ですか?
はい。「Kubernetesの脅威モデル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「Kubernetesの脅威モデル」で何を学びますか?
クラスターが攻撃される場所を学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Kubernetesの脅威モデル」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Kubernetesの脅威モデル
- RBACとサービスアカウント
- Podセキュリティとネットワークポリシー
- サプライチェーンとシークレットの保護