
CVE-2023-5178 के लिए एक्सप्लॉइट
इसके लिए एक्सप्लॉइट
CVE-2023-5178: NVMe-oF-TCP कमजोरी, जो NVMe-oF-TCP ड्राइवर में दूषित Initialize Connection Request को संभालने के दौरान एक तार्किक त्रुटि है। यह racy double-free in kmalloc-96 की ओर ले जाता है, जिसका उपयोग LPE प्राप्त करने के लिए किया जा सकता है (नीचे डेमो देखें)।
एक्सप्लॉइट Ubuntu 23.10 और 6.5.0-9-generic कर्नेल (नवीनतम प्रभावित कर्नेल संस्करण) को लक्षित करता है।
v6 कर्नेल में आसानी से बैकपोर्ट किया जा सकता है।v5 में बैकपोर्ट करने के लिए कुछ मामूली संशोधनों की आवश्यकता होती है, जिन पर मैं राइटअप में चर्चा करूंगा। कर्नेल v5 में शोषण करना आसान है (मैं इस पर राइटअप में चर्चा करूंगा) और अधिक विश्वसनीय है।बग की खोज Alon Zahavi ने की। उन्होंने इस openwall लेख में कमजोरी का अच्छा विवरण पोस्ट किया।
वीडियो यहाँ देखें।

nvmet, nvmet-tcp मॉड्यूल होने चाहिए।libfuse3-dev है (यह Ubuntu पर डिफ़ॉल्ट रूप से है, लेकिन फिर भी)। यदि आपके पास नहीं है, तो सबसे अच्छा विचार github से रिलीज़ डाउनलोड और संकलित करना है। मैंने 3.14.0 का उपयोग किया, लेकिन यह अन्य संस्करणों के साथ भी काम करना चाहिए।SLUB कैसे काम करता है, लेकिन रेस कंडीशन चीजों को थोड़ा मुश्किल बना देती है। किसी भी तरह, मैं राइटअप में वर्णन करूंगा कि मल्टी-सीपीयू मशीनों को संभालने के लिए इसे कैसे बेहतर बनाया जा सकता है।git clone https://github.com/rockrid3r/CVE-2023-5178
cd CVE-2023-5178
make
./build/xpl # run the exploit
libfuse3-dev नहीं है, तो आपको संकलित libfuse को मैन्युअल रूप से लिंक करना चाहिए। कैसे संकलित करें, इसके लिए Makefile देखें। -lfuse3 को -l:path-to-libfuse.so से बदलें। -I /path/to/libfuse-headers/ के साथ हेडर पथ जोड़ना न भूलें। एक्सप्लॉइट को इस प्रकार चलाएँ:LD_PRELOAD_PATH=/path/to/libfuse.so ./build/exploit
उन लोगों के लिए जो यह जांचना चाहते हैं कि उनके सिस्टम पर कमजोरी मौजूद है या नहीं, src/poc.c फ़ाइल है जो बस बग को ट्रिगर करती है।
यह आपके सिस्टम पर NVMe-oF-TCP के लिए ip/पोर्ट के मानक विन्यास को मानता है।
यदि आपके गैर-डिफ़ॉल्ट हैं तो आपको उन्हें समायोजित करना चाहिए:
#define NVME_SERVER_IP "0.0.0.0" // ip of vulnerable host in LAN (localhost here).
#define NVME_SERVER_PORT 4420 // port on which NVMe-oF-TCP is set up on vulnerable host
इसे संकलित करें और चलाएँ:
make build/poc
./build/poc
आपको इसे चलाना चाहिए (शायद कई बार) और फिर थोड़ी देर प्रतीक्षा करें। यदि कमजोरी मौजूद है, तो यह सिस्टम को क्रैश कर देगा।
पूरा राइटअप यहाँ देखें