
Exploit para CVE-2021-3156 (estouro de buffer baseado em heap no sudo) que permite escalonamento de privilégios local para root, com um ambiente de teste reproduzível baseado em QEMU para sistemas Linux RISC-V.
sudo: 1.8.31
glibc: 2.31
Linux: 4.18 ou 5.10.167-gee203559bc0b-dirty
Para conveniência, ao compilar o Linux, não use o método initramfs; em vez disso, use o rootfs.img fornecido neste repositório como diretório raiz para inicialização. Ele contém os arquivos de configuração necessários para suportar sudo e o serviço nss funcionarem corretamente, sendo uma distribuição extremamente simples.
Use o qemu fornecido pelo DASICS_QEMU para iniciar o bbl com rootfs.img como diretório raiz. Além disso, também é possível usar OpenSBI para iniciar o linux. Exemplo de comando:
#!/bin/sh
qemu-system-riscv64 -M virt -m 1G \
-cpu rv64 \
-nographic \
-kernel bbl \
-drive file=rootfs.img,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-append "console=ttyS0 rw root=/dev/vda" \
-bios none -s
Após entrar na interface de linha de comando do busybox, execute os seguintes comandos:
$ su wanghan
$ cd
$ whoami
$ ./expolit
$ whoami
Como o sistema inicia diretamente com privilégios de root ao entrar na interface de linha de comando, você pode usar passwd para alterar a senha facilmente.
Pode-se observar que expolit realiza a escalada de privilégios e pode ser reproduzido de forma estável.