
Exploit PoC für CVE-2022-29968 von Joseph Ravichandran und Michael Wang
Proof-of-Concept-Exploit für CVE-2022-29968 (nicht initialisierter Speicher) im Linux-Kernel, insbesondere das io_uring-System.
Der Absturz wurde mit Syzkaller gefunden. Der Absturz wurde von Joseph Ravichandran und Michael Wang analysiert. Der Exploit wurde von Joseph Ravichandran geschrieben.
Wir haben diesen Fehler im Rahmen des Abschlussprojekts für 6.858 am MIT, Frühjahr 2022 gefunden und gemeldet.
Jeder Kernel nach 3e08773c3841 ("block: switch polling to be bio based") und vor 32452a3eb8b6 ("io_uring: fix uninitialized field in rw io_kiocb") sollte dafür anfällig sein.
Der von uns für das 6.858-Abschlussprojekt eingereichte Bericht
/dev/sr0 muss für einen unprivilegierten Benutzer lesbar seinGetestet in einer Busybox-Installation (ohne KVM) mit 128 MB RAM:
$QEMU -m 128M -kernel $KERNEL -initrd $INITRD -nographic -append "console=ttyS0 nokaslr no_hash_pointers ftrace_dump_on_oops"
initramfs init:
#!/bin/sh
/bin/busybox --install -s
# Mount required file systems (very useful if you are using ftrace/ debug features)
mount -t proc none /proc
mount -t sysfs sysfs /sys
mount -t tracefs nodev /sys/kernel/tracing
mount -t debugfs none /sys/kernel/debug
mkdir -p /tmp && mount -t tmpfs tmpfs /tmp
mount -t devtmpfs none /dev
# Setup permissions for sr0
chmod -R 0777 /dev/sr0
# Create a temp file (used by the old userfaultfd approach)
# Not needed for the public exploit
touch /tmp/test
# Switch to non-root user
su attacker
# Run shell
exec sh
# Run shell (except ^C now works)
#exec setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1'
Unser etc/passwd hat einen Nicht-Root-Benutzer (attacker) und einen Root-Benutzer (root):
attacker:x:1000:1000:Linux User,,,:/home/attacker:/bin/sh
root:x:0:0:root:/tmp:/bin/sh
Der Kernel wurde mit make defconfig für x86_64 mit einigen zusätzlichen Tracing-/Debugging-Funktionen kompiliert.
make kompilieren./spray./exploit