ช่องโหว่ในสแต็ก IPv6 ของเคอร์เนล Linux ที่ทำให้สามารถเรียกใช้โค้ดจากระยะไกลได้

มีการเปิดเผยข้อมูลเกี่ยวกับช่องโหว่ CVE-2023-6200) ในสแต็กเครือข่ายของเคอร์เนล Linux ซึ่งในบางกรณีจะอนุญาตให้ผู้โจมตีจากเครือข่ายท้องถิ่นสามารถดำเนินการโค้ดของเขาได้โดยการส่งแพ็กเก็ต ICMPv6 ที่ออกแบบมาเป็นพิเศษพร้อมกับ ข้อความ RA (โฆษณาเราเตอร์) มีวัตถุประสงค์เพื่อโฆษณาข้อมูลเกี่ยวกับเราเตอร์

ช่องโหว่นี้สามารถถูกโจมตีจากเครือข่ายท้องถิ่นเท่านั้น และปรากฏบนระบบที่เปิดใช้งานการรองรับ IPv6 และพารามิเตอร์ sysctl “net.ipv6.conf.<network_interface_name>.accept_ra” ทำงานอยู่ (สามารถตรวจสอบได้ด้วยคำสั่ง “sysctl net.ipv6.conf” | grep Accept_ra”) ซึ่งถูกปิดใช้งานโดยค่าเริ่มต้นใน RHEL และ Ubuntu สำหรับอินเทอร์เฟซเครือข่ายภายนอก แต่เปิดใช้งานสำหรับอินเทอร์เฟซแบบย้อนกลับ ซึ่งอนุญาตให้มีการโจมตีจากระบบเดียวกัน

ช่องโหว่นี้เกิดจากสภาวะการแข่งขันเมื่อตัวรวบรวมขยะประมวลผลบันทึก fib6_info เก่า ซึ่งอาจนำไปสู่การเข้าถึงพื้นที่หน่วยความจำที่ว่างอยู่แล้ว (ใช้งานหลังเลิกใช้งาน) เมื่อได้รับแพ็กเก็ต ICMPv6 พร้อมข้อความโฆษณาเราเตอร์ (RA, โฆษณาเราเตอร์) สแต็กเครือข่ายจะเรียกใช้ฟังก์ชัน ndisc_router_discovery() ซึ่งหากข้อความ RA มีข้อมูลเกี่ยวกับอายุการใช้งานของเส้นทาง จะเรียกใช้ฟังก์ชัน fib6_set_expires() และเติม gc_link โครงสร้าง. หากต้องการล้างรายการที่ล้าสมัย ให้ใช้ฟังก์ชัน fib6_clean_expires() ซึ่งจะแยกรายการใน gc_link และล้างหน่วยความจำที่ใช้โดยโครงสร้าง fib6_info ในกรณีนี้ มีช่วงเวลาหนึ่งที่หน่วยความจำสำหรับโครงสร้าง fib6_info ได้รับการปลดปล่อยแล้ว แต่ลิงก์ไปยังหน่วยความจำยังคงอยู่ในโครงสร้าง gc_link

ช่องโหว่ปรากฏขึ้นตั้งแต่สาขา 6.6 และได้รับการแก้ไขในเวอร์ชัน 6.6.9 และ 6.7 สถานะของการแก้ไขช่องโหว่ในการแจกแจงสามารถประเมินได้ในหน้าเหล่านี้: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware ในบรรดาการแจกแจงที่จัดส่งแพ็คเกจด้วยเคอร์เนล 6.6 เราสามารถสังเกต Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva และ Manjaro ได้ ในการแจกแจงอื่น ๆ เป็นไปได้ที่การเปลี่ยนแปลงที่มีข้อผิดพลาดจะถูกส่งกลับไปยังแพ็คเกจที่มีสาขาเคอร์เนลเก่ากว่า (สำหรับ ตัวอย่างเช่นใน Debian มีการกล่าวถึงว่าแพ็คเกจที่มีเคอร์เนล 6.5.13 นั้นมีช่องโหว่ในขณะที่การเปลี่ยนแปลงที่เป็นปัญหาปรากฏในสาขา 6.6) วิธีแก้ปัญหาด้านความปลอดภัย คุณสามารถปิดการใช้งาน IPv6 หรือตั้งค่าพารามิเตอร์ “net.ipv0.conf.*.accept_ra” เป็น 6

ที่มา: opennet.ru

เพิ่มความคิดเห็น