Cyber Security Academy · レッスン

Kubernetesの脅威モデル

クラスターが攻撃される場所を学びます。

レッスン 1/413 ステップ

「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 pods

Pod内の足がかり

最も一般的な開始点は、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 sh

etcd:秘密情報ストア

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Kubernetesの脅威モデル
  2. RBACとサービスアカウント
  3. Podセキュリティとネットワークポリシー
  4. サプライチェーンとシークレットの保護
← Cyber Security Academyに戻る