
C++-Experimente zur Zuverlässigkeit von Exploits für eine FreeBSD-Kernel-Schwachstelle der PlayStation 5, mit VM-Kernel-Builds und GDB-Remote-Debugging-Setup.
Der Bug wurde Anfang Dezember 2020 gefunden, nicht von mir, sondern von einem Genie, das 15 Minuten auf fbsd geschaut und ihn sofort entdeckt hat 🙇♂️. Diese C++-Implementierung entstand beim Experimentieren mit der Erhöhung der Exploit-Zuverlässigkeit, nachdem der PS5-Kernel einige Heap-Randomisierungsfunktionen hinzugefügt hatte.
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
in der VM: adduser, sshd_enable="YES" zu /etc/rc.conf hinzufügen, /etc/rc.d/sshd start
auf der VM bauen, weil das FreeBSD-Build-System inkompatibel mit Nicht-FreeBSD-Systemen ist (sie haben Kompatibilität etwa ab fbsd 12/13 eingebaut, aber wir brauchen 11...)
siehe https://docs.freebsd.org/en/books/handbook/kernelconfig/ oder einfach:
cd /usr/src/sys/amd64/conf
cp GENERIC /root/CONFIG
ln -s /root/CONFIG
CONFIG bearbeiten, um options DDB zu entfernen und options GDB hinzuzufügen
bauen und installieren:
cd /src/src
make buildkernel KERNCONF=CONFIG
make installkernel KERNCONF=CONFIG
reboot
/usr/obj/usr/src/sys/CONFIG/kernel.debug aus der VM kopieren, um es mit gdb zu verwenden.
git clone -b releng/11.0 https://github.com/freebsd/freebsd.git
die neueste Version von https://ftp.gnu.org/gnu/gdb/ holen und entpacken
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
in der VM:
sysctl debug.kdb.enter=1