
PlayStation 5 FreeBSD कर्नेल भेद्यता के लिए C++ एक्सप्लॉइट विश्वसनीयता प्रयोग, VM कर्नेल बिल्ड और GDB रिमोट-डीबगिंग सेटअप के साथ।
यह बग दिसंबर 2020 की शुरुआत में पाया गया था, मेरे द्वारा नहीं, बल्कि एक प्रतिभाशाली व्यक्ति द्वारा जिसने fbsd को 15 मिनट देखा और तुरंत उसे पहचान लिया 🙇♂️। यह c++ इम्प्लीमेंटेशन तब बनाया गया था जब ps5 कर्नेल द्वारा कुछ heap randomization सुविधाएँ जोड़ने के बाद exploit विश्वसनीयता बढ़ाने के प्रयोग किए जा रहे थे।
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
वीएम में: adduser, /etc/rc.conf में sshd_enable="YES" जोड़ें, /etc/rc.d/sshd start चलाएँ
कर्नेल को वीएम पर ही बनाएँ क्योंकि freebsd बिल्ड सिस्टम गैर-freebsd सिस्टम के साथ असंगत है (उन्होंने fbsd 12/13 के आसपास compat सक्षम किया लेकिन हमें 11 चाहिए...)
cd /usr/src/sys/amd64/conf
cp GENERIC /root/CONFIG
ln -s /root/CONFIG
CONFIG को संपादित करके options DDB को हटाएँ और options GDB को जोड़ें
बनाएँ और इंस्टॉल करें:
cd /src/src
make buildkernel KERNCONF=CONFIG
make installkernel KERNCONF=CONFIG
reboot
gdb के उपयोग के लिए /usr/obj/usr/src/sys/CONFIG/kernel.debug को वीएम से बाहर कॉपी करें।
git clone -b releng/11.0 https://github.com/freebsd/freebsd.git
https://ftp.gnu.org/gnu/gdb/ से नवीनतम लाएँ और अनपैक करें
mkdir build
cd build
../configure --disable-binutils --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprof --target=x86_64-unknown-freebsd
make -j64
https://github.com/cyrus-and/gdb-dashboard उपयोग करें
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
वीएम में:
sysctl debug.kdb.enter=1