
Exploit pour CVE-2021-3156 (dépassement de tampon basé sur le tas dans sudo) permettant une élévation locale de privilèges vers root, avec un environnement de test reproductible basé sur QEMU pour les systèmes Linux RISC-V.
sudo : 1.8.31
glibc : 2.31
Linux : 4.18 ou 5.10.167-gee203559bc0b-dirty
Par commodité, lors de la compilation de Linux, il ne faut pas utiliser le mode initramfs ; utilisez plutôt le rootfs.img fourni dans ce dépôt comme répertoire racine de démarrage. Il contient les fichiers de configuration nécessaires au bon fonctionnement des services sudo et nss, et constitue une distribution extrêmement simple.
Utilisez le qemu fourni par DASICS_QEMU pour démarrer bbl avec rootfs.img comme répertoire racine. Vous pouvez également utiliser OpenSBI pour démarrer linux. Exemple de commande :
#!/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
Une fois dans l'interface en ligne de commande busybox, exécutez les commandes suivantes :
$ su wanghan
$ cd
$ whoami
$ ./expolit
$ whoami
Étant donné que le système dispose des privilèges root dès l'entrée dans l'interface en ligne de commande, vous pouvez utiliser passwd pour modifier facilement le mot de passe.
On constate que expolit permet d'élever les privilèges et que l'exploitation est reproductible de manière stable.