
إثبات المفهوم لاستغلال CVE-2022-29968 من قبل Joseph Ravichandran و Michael Wang
إثبات المفهوم لـ CVE-2022-29968 (ذاكرة غير مهيأة) في نواة لينكس، وتحديداً نظام io_uring.
تم العثور على الانهيار باستخدام Syzkaller. تم تحليل الانهيار بواسطة Joseph Ravichandran و Michael Wang. تم كتابة الإكسبلويت بواسطة Joseph Ravichandran.
وجدنا هذا الخطأ وأبلغناه كجزء من المشروع النهائي لـ 6.858 في MIT، ربيع 2022.
أي نواة بعد 3e08773c3841 ("block: switch polling to be bio based") وقبل 32452a3eb8b6 ("io_uring: fix uninitialized field in rw io_kiocb") يجب أن تكون عرضة لهذا.
الوثيقة التي قدمناها للمشروع النهائي 6.858
/dev/sr0 قابلاً للقراءة بواسطة مستخدم غير مميزتم الاختبار في تثبيت Busybox (بدون KVM) بذاكرة 128M:
$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
# تركيب أنظمة الملفات المطلوبة (مفيد جداً إذا كنت تستخدم ميزات ftrace / التصحيح)
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
# إعداد الصلاحيات لـ sr0
chmod -R 0777 /dev/sr0
# إنشاء ملف مؤقت (مستخدم في نهج userfaultfd القديم)
# غير مطلوب للإكسبلويت العام
touch /tmp/test
# التبديل إلى مستخدم غير جذر
su attacker
# تشغيل الشل
exec sh
# تشغيل الشل (باستثناء أن ^C يعمل الآن)
#exec setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1'
ملف etc/passwd الخاص بنا يحتوي على مستخدم غير جذر (attacker) ومستخدم جذر (root):
attacker:x:1000:1000:Linux User,,,:/home/attacker:/bin/sh
root:x:0:0:root:/tmp:/bin/sh
تم تجميع النواة باستخدام make defconfig لـ x86_64 مع بعض ميزات التتبع / التصحيح الإضافية المفعلة.
make./spray./exploit