
CICD-Goat-Vapt-Writeup — Updated!
OWASP CICD-Goatの完全なVAPTレポート — 9個のCTFdフラグを獲得、4件の重大(Critical)+5件の高(High)レベルの発見事項(CVE-2024-23897を含む)をOWASP Top 10 CI/CDセキュリティリスクにマッピングし、PoC、是正措置、面接対策用の要約を収録。
CICD-Goat VAPT ライトアップ
OWASP CICD-Goat に対する完全な脆弱性評価およびペネトレーションテスト — 意図的に脆弱性を持たせた CI/CD 環境(Jenkins、Gitea、GitLab、CTFd)— OWASP Top 10 CI/CD セキュリティリスクに対してエンドツーエンドでマッピング。
🧭 他のリポジトリとの関係
| リポジトリ | 内容 |
|---|---|
| CICD-Goat-Vapt-Writeup (このリポジトリ) | OWASP CICD-Goat に対する完全な VAPT ライトアップ — CVE-2024-23897 を含む 16 件の検出事項を OWASP Top 10 CI/CD セキュリティリスクにマッピングし、PoC と面接で使える要約を掲載 |
| From-Dev-To-Attacker | 私のフラッグシップとなるフィールドジャーナル — 開発者の視点から書いた脆弱性パターンに関する 67 件のオリジナルライトアップ。所得税、銀行、小売、Eコマース、貨物物流、教育といったエンタープライズ領域への影響を枠組みとして提示 |
| From-Pentester-To-Red-Teamer | Web/API ペネトレーションテストからレッドチーミングへ移行するための、24 か月にわたる構造化ロードマップ — フェーズ、ラボ、資格、そして取り組みながら公開で追跡する進捗 |
| AppSec-From-The-Trenches | ペネトレーションテストツールと手法のリファレンス — Burp Suite、Nmap、Metasploit、Hydra、Hashcat などを実際にどう使うか、さらに私の WAPT 手法 |
| API-From-The-Trenches | API セキュリティの深掘りシリーズ — OWASP API Top 10 のカバレッジ、BOLA、JWT 攻撃、GraphQL テスト、完全な手法 |
| Bug-Bounty-Hunting-Companion | 公開開示された実際のバグバウンティレポートを、再現可能なチェックリストに分解 |
| DarkWeb-From-The-Trenches | 脅威インテリジェンスとダークウェブ OSINT の手法 — 認証情報漏洩の監視、ランサムウェアの追跡、エンゲージメント前の TI |
| .pcap-Arsenal | プロトコル別に整理されたパケットキャプチャ。Web/API/ネットワーク層の分析と学習用 |
| Pentest-Engagement-Playbook | コンサルタント品質のスコーピング、ROE、深刻度の根拠、エグゼクティブレポートのテンプレート — エンゲージメントを支えるクライアント向けの運用プレイブック |
このリポジトリの存在意義
ほとんどの CI/CD セキュリティライトアップは、純粋に理論的なもの(「汚染されたパイプライン実行」を説明するスライド)か、純粋に CTF のフラグを追うもの(「フラグはこれ、次へ」の一行)のどちらかに留まっています。このリポジトリはどちらでもないことを目指しています。以下の各検出事項は、完全に検証され PoC に裏付けられた脆弱性であり、特定の OWASP CI/CD-SEC リスクカテゴリにマッピングされ、面接や実際のクライアントレポートで説明したいと実際に思う形で書かれています — 行き止まりや誤った仮定、そしてそれらがどう修正されたかも含めて。
AppSec/DevSecOps/CI-CDセキュリティの面接対策をしている方、CI/CDツールチェーンが関わるペネトレーションテストの準備をしている方、あるいは「Poisoned Pipeline Execution」や「Insufficient Credential Hygiene」が実際に通信上でどのように見えるのか、具体的で実践的なツアーを求めている方——これはあなたのために書かれています。
対象環境
| 項目 | 値 |
|---|---|
| 対象 | OWASP CICD-Goat — ローカル Docker Compose デプロイメント |
| エンゲージメント種別 | 許可された自己主導型学習ラボ(グレーボックス) |
| 技術スタック | Jenkins 2.332.1、Gitea 1.16.5、GitLab 15.11.13-ee、CTFd、Docker Compose |
| スコープ | localhost:3000(Gitea)、:8080/:50000(Jenkins)、:4000(GitLab)、:8000(CTFd)、:8008(prod-sim) |
| 手法 | フェーズ0〜3(スコープ → フィンガープリンティング → 脆弱性特定 → エクスプロイト) |
エンゲージメントの完全なルール:docs/00-engagement-overview.md。
⚠️ このリポジトリ内のすべてのテストは、テスター自身のローカルで使い捨ての、意図的に脆弱な Docker Compose ラボに対して実施されました。 本番システム、共有インフラ、第三者データは一切関与していません。ご自身で試す前に、公式リポジトリから CICD-Goat のコピーを立ち上げてください。
結果の概要
| ID | タイトル | 深刻度 | OWASP CI/CD マッピング | CTFd フラグ |
|---|---|---|---|---|
| F-010 | Jenkins ビルドコンソールログにおけるシークレット露出 → 認証情報窃取 → 不正なリポジトリ書き込み | CRITICAL | CICD-SEC-6, -4, -2 | flag1, flag2 |
| F-013 | 安全でない自動マージロジックがコードレビューをバイパス(PR全体の単語差分ヒューリスティック) | CRITICAL | CICD-SEC-1, -5 | flag10 |
| F-016 | CVE-2024-23897 — コントローラ上の Jenkins CLI 任意ファイル読み取り | CRITICAL | CICD-SEC-7 | flag8 |
| F-017 | GitLab 共有ランナー登録トークン → インスタンス全体の CI/CD シークレット窃取 | CRITICAL | CICD-SEC-2, -6 | flag11 |
| F-019 | エージェントラベル上書きによる Jenkins コントローラノードのコード実行 | CRITICAL | CICD-SEC-5, -4 | flag5 |
| F-018 | 分離されたパイプラインリポジトリ + ブランチ除外フィルタのバイパス | HIGH | CICD-SEC-4, -6 | flag3 |
| F-020 | 共有エージェントのファイルシステムが FreeStyle ジョブの認証情報を露出 | HIGH | CICD-SEC-6, -5 | flag6 |
| F-021 | Checkov SAST 設定の上書きにより検出されない IaC 設定ミスを可能に | HIGH | CICD-SEC-1, -8 | flag7 |
| F-014 | CI/CD パイプライン変数から導出された Flask セッション秘密鍵 | HIGH | CICD-SEC-6 | flag11(F-017経由) |
さらに、findings/informational/に6件の情報提供/補足的な所見(ポジティブコントロール、RBAC境界の確認、軽微な情報開示)があります。
所見の連鎖
いくつかの所見は独立していません——一方が他方を直接可能にしたり、完成させたりします。これは、単一の所見よりも面接で印象に残りやすい部分です:
11件のCTFdチャレンジのうち9件を解決し、フラグを検証済み — 完全なチャレンジ相互参照を参照してください。これには、継続的な攻撃に対してアクセス制御境界が維持されたことを正直に記録したケース(Dormouse/flag9)も含まれます。
目次
以下のファイルはすべて直接リンクされています — フォルダツリーは整理方法を示しているだけです。