
Experimentación de fiabilidad de exploits en C++ para una vulnerabilidad del kernel FreeBSD de PlayStation 5, con compilaciones de kernel en VM y configuración de depuración remota con GDB.
El bug fue encontrado a principios de diciembre de 2020, no por mí, sino por un genio que miró 15 minutos a fbsd e inmediatamente lo detectó 🙇♂️. Esta implementación en C++ se hizo al experimentar con el aumento de la fiabilidad del exploit después de que el kernel de ps5 añadiera algunas funcionalidades de aleatorización del heap.
wget http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/VM-IMAGES/11.0-RELEASE/amd64/Latest/FreeBSD-11.0-RELEASE-amd64.vhd.xz
en la VM: adduser, añade sshd_enable="YES" a /etc/rc.conf, /etc/rc.d/sshd start
compila EN LA VM porque el sistema de compilación de freebsd es incompatible con sistemas que no son freebsd (habilitaron compat alrededor de fbsd 12/13, pero necesitamos 11...)
consulta https://docs.freebsd.org/en/books/handbook/kernelconfig/ o simplemente:
cd /usr/src/sys/amd64/conf
cp GENERIC /root/CONFIG
ln -s /root/CONFIG
edita CONFIG para eliminar options DDB y añadir options GDB
compila e instala:
cd /src/src
make buildkernel KERNCONF=CONFIG
make installkernel KERNCONF=CONFIG
reboot
copia /usr/obj/usr/src/sys/CONFIG/kernel.debug fuera de la VM para usarlo con gdb.
git clone -b releng/11.0 https://github.com/freebsd/freebsd.git
descarga la última versión desde https://ftp.gnu.org/gnu/gdb/ y descomprímela
mkdir build
cd build
../configure --disable-binutils --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprof --target=x86_64-unknown-freebsd
make -j64
set substitute-path /usr/src /home/shawn/freebsd
set disassembly-flavor intel
file kernel.debug
target remote /tmp/fbsd11
#!/bin/sh
GDB_PATH=/home/shawn/gdb-10.1/build/gdb
PATH=$GDB_PATH:$PATH
gdb --data-directory=/home/shawn/gdb-10.1/build/gdb/data-directory
en la VM:
sysctl debug.kdb.enter=1