
CVE-2022-0847 يُستخدم لتحقيق هروب من الحاوية استغلال CVE-2022-0847 (Dirty Pipe) لتحقيق هروب من الحاوية
تُستخدم CVE-2022-0847 لتحقيق هروب الحاوية (الكتابة فوق أي ملفات للقراءة فقط على المضيف)
الشرائح (باللغة الصينية) متاحة هنا
利用CVE-2022-0847 (Dirty Pipe) 实现容器逃逸(效果为覆写宿主机上任意只读文件)
中文汇报PPT在这里
إذا كانت النواة معرضة لـ CVE-2022-0847، يمكن للمهاجم الكتابة فوق ملفات للقراءة فقط (غير دائم! زر https://dirtypipe.cm4all.com/ لمزيد من التفاصيل). ومع ذلك، يمكن للحاوية فقط الوصول إلى الملفات داخل الحاوية. لحسن الحظ، عند منح CAP_DAC_READ_SEARCH، يمكن للمهاجم الآن الكتابة فوق الملفات على المضيف!
كما يشرح https://dirtypipe.cm4all.com/، لكتابة فوق ملف للقراءة فقط، يجب استخدام splice() لنقله إلى الأنبوب. لاستخدام splice()، يجب أولاً فتح الملف الهدف باستخدام علامة O_RDONLY للحصول على وصف الملف.
وهنا خطر ببالي CAP_DAC_READ_SEARCH. وفقًا لـ دليل لينكس، عند منح CAP_DAC_READ_SEARCH، يمكن للمهاجم داخل الحاوية:
open_by_handle_at(2)مع صلاحية CAP_DAC_READ_SEARCH، يمكننا البحث في نظام ملفات المضيف واستخدام open_by_handle_at(2) لفتح أي ملفات على المضيف للقراءة فقط من الحاوية، والحصول على وصف الملف الخاص بها (زر http://stealth.openwall.net/xSports/shocker.c لمزيد من التفاصيل).
الآن بعد أن حصلنا على وصف الملف للملف الهدف على المضيف، يمكننا بالطبع استخدام splice() لإرسال محتوى الملف الهدف إلى الأنبوب، ثم الكتابة فوقه!
cp /etc/password . # back up /etc/password
gcc dp.c -o dp
docker run --rm -it -v $(pwd):/exp --cap-add=CAP_DAC_READ_SEARCH ubuntu
/exp/dp /etc/passwd 1 ootz: # overwrite /etc/password on host from offset 1
/etc/dp /etc/passwd # dump /etc/passwd on host
أولاً، قم بإنشاء ملف للقراءة فقط /home/vagrant/flag.txt بواسطة المستخدم الجذر على المضيف، محتواه هو hello world:

ثم، ابدأ حاوية بصلاحية CAP_DAC_READ_SEARCH، حاول أولاً تفريغ /home/vagrant/flag.txt على المضيف، نحصل على hello world:

ثم حاول الكتابة فوق الملف الهدف من الإزاحة 1 بمحتوى abcdefghij:

قم بتفريغ الملف الهدف مرة أخرى، الآن المحتوى هو habcdefghij! اخرج من الحاوية وتحقق من /home/vagrant/flag.txt على المضيف، محتواه هو habcdefghij.

نعم، لقد قمنا للتو بالكتابة فوق ملف على المضيف من داخل الحاوية!