
Experimentação de confiabilidade de exploits em C++ para uma vulnerabilidade do kernel FreeBSD do PlayStation 5, com builds de kernel em VM e configuração de depuração remota com GDB.
O bug foi encontrado no início de dezembro de 2020, não por mim, mas por um gênio que olhou por 15 minutos para o fbsd e imediatamente o encontrou 🙇♂️. Esta implementação em C++ foi feita ao experimentar o aumento da confiabilidade do exploit depois que o kernel do ps5 adicionou alguns recursos de randomização de 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
na vm: adduser, adicione sshd_enable="YES" ao /etc/rc.conf, /etc/rc.d/sshd start
compile NA VM porque o sistema de build do freebsd é incompatível com sistemas não-freebsd (eles habilitaram compatibilidade por volta do fbsd 12/13, mas precisamos do 11...)
veja https://docs.freebsd.org/en/books/handbook/kernelconfig/ ou apenas:
cd /usr/src/sys/amd64/conf
cp GENERIC /root/CONFIG
ln -s /root/CONFIG
edite o CONFIG para remover options DDB e adicionar options GDB
compile e instale:
cd /src/src
make buildkernel KERNCONF=CONFIG
make installkernel KERNCONF=CONFIG
reboot
copie /usr/obj/usr/src/sys/CONFIG/kernel.debug para fora da vm para usar com o gdb.
git clone -b releng/11.0 https://github.com/freebsd/freebsd.git
baixe o mais recente de https://ftp.gnu.org/gnu/gdb/ e descompacte
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
na vm:
sysctl debug.kdb.enter=1