クラウド / コンテナ / Kubernetes セキュリティ
アクション必須(読んだらすぐ実行)
NOW:../field-journal/precedent-pentest.mdを読む — クラウド/K8sテストは書面による許可が必要NOW: case-init + scope;アカウント境界を明確にし、破壊的操作を禁止NOW: クラウドメタデータ/コンテナ/K8s/IAMであることを確認し、通常のWebスキャン(後者はpentest-tools/)ではないことを確認NEXT: tool-index;kubectl/aws/gcloud などは手動インストールが多いACT: 「身元と露出面」から開始し、デフォルトでの全ネットワークスキャンを禁止
適用シナリオ
- クラウドメタデータSSRF(169.254.169.254 / IMDS)
- IAM過剰権限、公開ストレージバケット、誤ったセキュリティグループ
- Docker/containerdエスケープパス評価
- Kubernetes RBAC、Secrets、Admission、サプライチェーンイメージ
- コンテナイメージ脆弱性(
supply-chain-security/と連携可)
ワークフロー
フェーズ1 — 身元と境界
□ 現在の身元:クラウドAK/SK、K8s SA、ノードSSH?
□ 範囲:単一アカウント / 単一クラスター / 単一ネームスペース
□ ネットワーク制限:authorized_target_only
フェーズ2 — クラウドコントロールプレーン
# 例(ベンダーに応じて置き換え;許可されたアカウント内で実行必須)
aws sts get-caller-identity
aws s3 ls
# Azure / GCP 対応の identity コマンド
□ 公開バケット / 誤ったACL
□ メタデータ:IMDSv1 vs v2;SSRFチェーン
□ ロールの引き受け(PassRole)と水平移動
フェーズ3 — コンテナ
□ privileged / hostPath / hostNetwork の有無
□ capabilities(SYS_ADMIN など)
□ 書き込み可能なホストパス → エスケープ候補
□ イメージ履歴と既知のCVE → Trivy
フェーズ4 — Kubernetes
kubectl auth can-i --list
kubectl get pods,secrets,svc -A
kubectl get clusterrolebindings
□ SAトークンのマウントと権限
□ 危険なadmission webhookの欠如
□ etcd / dashboard の露出
□ ネットワークポリシーがデフォルトで許可されているか
ツールチェーン
| ツール | 用途 | セットアップ |
|---|---|---|
| kubectl | クラスターとの対話 | 手動 |
| trivy | イメージ/IaC | bootstrap trivy(利用可能な場合) |
| kube-bench / kubeaudit | CIS/設定 | 手動 |
| pacu / scoutsuite | クラウド監査(許可必須) | 手動 |
| nuclei | 既知のクラウド脆弱性テンプレート | bootstrap nmap/nuclei エコシステム |
参考
references/k8s-cloud-checklist.md- CTF 対照:
../../CTF-Sandbox-Orchestrator/competition-agent-cloud/ ../supply-chain-security/../pentest-tools/
ルーティングコンテキスト
上流: MASTER R23
下流: ノードシェル取得 → attack-chain / windows-ad;イメージ脆弱性 → supply-chain
禁止: 許可されていないパブリッククラウドの他のテナントをスキャン
タスク完了自己チェック
- 許可されたアカウント/クラスターに限定されているか?
- 発見事項に再現手順と影響が含まれているか?
- 破壊的操作を避けているか?
- レポート / journal は作成したか?