
CVE-2022-29968 के लिए Exploit PoC, Joseph Ravichandran और Michael Wang द्वारा
Linux कर्नेल में CVE-2022-29968 (अप्रारंभित मेमोरी) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, विशेष रूप से io_uring प्रणाली।
क्रैश Syzkaller के माध्यम से पाया गया था। क्रैश का विश्लेषण Joseph Ravichandran और Michael Wang द्वारा किया गया था। एक्सप्लॉइट Joseph Ravichandran द्वारा लिखा गया था।
हमने इस बग को 6.858, MIT में Spring 2022 के अंतिम प्रोजेक्ट के भाग के रूप में खोजा और रिपोर्ट किया।
3e08773c3841 ("block: switch polling to be bio based") के बाद और 32452a3eb8b6 ("io_uring: fix uninitialized field in rw io_kiocb") से पहले का कोई भी कर्नेल इस भेद्यता के प्रति संवेदनशील होना चाहिए।
6.858 अंतिम प्रोजेक्ट के लिए हमारे द्वारा प्रस्तुत राइटअप
/dev/sr0 को एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता द्वारा पठनीय होना चाहिए128M RAM के साथ Busybox इंस्टॉल (KVM के बिना) में परीक्षण किया गया:
$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'
हमारे etc/passwd में एक गैर-root उपयोगकर्ता (attacker) और एक root उपयोगकर्ता (root) है:
attacker:x:1000:1000:Linux User,,,:/home/attacker:/bin/sh
root:x:0:0:root:/tmp:/bin/sh
कर्नेल को x86_64 के लिए make defconfig के साथ संकलित किया गया था, जिसमें कुछ अतिरिक्त tracing/ debugging सुविधाएँ सक्षम थीं।
make से संकलित करें./spray./exploit