ล่าสุดมีข่าวออกมาว่าe มีการระบุช่องโหว่สองช่องโหว่ในเคอร์เนลของ Linux (จัดรายการไว้แล้วภายใต้ CVE-2022-42896) ซึ่งอาจเป็นไปได้ สามารถใช้เพื่อควบคุมการเรียกใช้โค้ดจากระยะไกล ที่ระดับเคอร์เนลโดยการส่งแพ็กเก็ต L2CAP ที่สร้างขึ้นเป็นพิเศษผ่าน Bluetooth
เป็นที่กล่าวขวัญกันว่า ช่องโหว่แรก (CVE-2022-42896) เกิดขึ้นเมื่อเข้าถึงพื้นที่หน่วยความจำที่ว่างอยู่แล้ว (ใช้หลังฟรี) ในการดำเนินการของฟังก์ชัน l2cap_connect และ l2cap_le_connect_req
ความล้มเหลว ใช้ประโยชน์จากหลังจากสร้างช่อง ผ่านการโทรกลับ โทร ใหม่_การเชื่อมต่อซึ่งไม่ได้ปิดกั้นการตั้งค่า แต่ตั้งเวลา (__set_chan_timer) หลังจากหมดเวลา ให้เรียกใช้ฟังก์ชัน l2cap_chan_หมดเวลา และทำความสะอาดช่องโดยไม่ตรวจสอบความเรียบร้อยของงานกับช่องในฟังก์ชั่น l2cap_le_connect*.
การหมดเวลาเริ่มต้นคือ 40 วินาที และสันนิษฐานว่าสภาวะการแข่งขันไม่สามารถเกิดขึ้นได้ด้วยความล่าช้ามากขนาดนั้น แต่กลายเป็นว่าเนื่องจากข้อบกพร่องอื่นในไดรเวอร์ SMP จึงเป็นไปได้ที่จะเรียกตัวจับเวลาทันทีและไปถึงสภาพการแข่งขัน
ปัญหาใน l2cap_le_connect_req อาจทำให้หน่วยความจำเคอร์เนลรั่ว และใน l2cap_connect คุณสามารถเขียนทับเนื้อหาในหน่วยความจำและเรียกใช้โค้ดของคุณได้ การโจมตีรูปแบบแรกสามารถทำได้โดยใช้ Bluetooth LE 4.0 (ตั้งแต่ปี 2009) ส่วนครั้งที่สองใช้ Bluetooth BR/EDR 5.2 (ตั้งแต่ปี 2020)
มีช่องโหว่หลังเผยแพร่ในฟังก์ชันเคอร์เนลของลินุกซ์ l2cap_connect และ l2cap_le_connect_req net/bluetooth/l2cap_core.c ที่อาจทำให้โค้ดเรียกใช้และหน่วยความจำเคอร์เนลรั่วไหล (ตามลำดับ) จากระยะไกลผ่านบลูทูธ ผู้โจมตีจากระยะไกลสามารถรันโค้ดที่ทำให้หน่วยความจำเคอร์เนลรั่วไหลผ่านบลูทูธ หากอยู่ใกล้กับเหยื่อ เราขอแนะนำให้อัปเดตการคอมมิตที่ผ่านมา https://www.google.com/url https://github.com/torvalds/linux/commit/711f8c3fb3db61897080468586b970c87c61d9e4
ช่องโหว่ที่สอง ที่ตรวจพบ (จัดรายการแล้วภายใต้ CVE-2022-42895) คือ เกิดจากการรั่วไหลของหน่วยความจำที่เหลือในฟังก์ชัน l2cap_parse_conf_req ซึ่งสามารถใช้เพื่อรับข้อมูลเกี่ยวกับตัวชี้ไปยังโครงสร้างเคอร์เนลจากระยะไกลโดยส่งคำขอกำหนดค่าที่สร้างขึ้นเป็นพิเศษ
กล่าวถึงช่องโหว่นี้ว่า ในฟังก์ชัน l2cap_parse_conf_req จะใช้โครงสร้าง l2cap_conf_efs ซึ่งหน่วยความจำที่จัดสรรไม่ได้ถูกเตรียมใช้งานไว้ก่อนหน้านี้ และผ่านการปรุงแต่ง ด้วยแฟล็ก FLAG_EFS_ENABLE เป็นไปได้ที่จะรวมข้อมูลเก่าเข้าด้วยกัน ของแบตเตอรี่ในบรรจุภัณฑ์
แฟล็กช่อง FLAG_EFS_ENABLE แทนตัวแปร remote_efs เป็น ตัดสินใจว่าควรใช้โครงสร้าง l2cap_conf_efsefs หรือไม่ และ เป็นไปได้ที่จะตั้งค่าสถานะ FLAG_EFS_ENABLE โดยไม่ต้องส่งข้อมูลการกำหนดค่า EFS และในกรณีนี้ โครงสร้าง l2cap_conf_efs ที่ไม่ได้กำหนดค่าเริ่มต้น จะถูกส่งกลับไปยังรีโมตไคลเอ็นต์ ทำให้ข้อมูลรั่วไหล เนื้อหาของหน่วยความจำเคอร์เนล รวมถึงตัวชี้เคอร์เนล
ปัญหาจะเกิดขึ้นเฉพาะกับระบบที่เคอร์เนล มันถูกสร้างด้วยตัวเลือก CONFIG_BT_HS (ปิดใช้งานตามค่าเริ่มต้น แต่เปิดใช้งานในการกระจายบางอย่างเช่น Ubuntu) การโจมตีที่ประสบความสำเร็จจำเป็นต้องตั้งค่าพารามิเตอร์ HCI_HS_ENABLED ผ่านอินเทอร์เฟซการจัดการให้เป็น True (ไม่ได้ถูกใช้โดยค่าเริ่มต้น)
ในข้อบกพร่องทั้งสองที่ค้นพบนี้ ต้นแบบการแสวงหาประโยชน์ที่ทำงานบน Ubuntu 22.04 ได้รับการเผยแพร่แล้วเพื่อแสดงให้เห็นถึงความเป็นไปได้ของการโจมตีจากระยะไกล
ในการดำเนินการโจมตี ผู้โจมตีจะต้องอยู่ในระยะสัญญาณบลูทูธ ไม่จำเป็นต้องจับคู่ก่อน แต่ต้องเปิดใช้งาน Bluetooth บนคอมพิวเตอร์ สำหรับการโจมตี การรู้ที่อยู่ MAC ของอุปกรณ์ของเหยื่อก็เพียงพอแล้ว ซึ่งสามารถระบุได้โดยการดมกลิ่นหรือคำนวณตามที่อยู่ MAC ของ Wi-Fi บนอุปกรณ์บางประเภท
สุดท้ายเป็นมูลค่าการกล่าวขวัญว่า พบปัญหาอื่นที่คล้ายกัน (CVE-2022-42895) ในคอนโทรลเลอร์ L2CAP ซึ่งอาจทำให้เนื้อหาหน่วยความจำเคอร์เนลรั่วไหลในแพ็กเก็ตข้อมูลการกำหนดค่าได้ ช่องโหว่แรกปรากฏขึ้นตั้งแต่เดือนสิงหาคม 2014 (เคอร์เนล 3.16) และช่องโหว่ที่สองตั้งแต่เดือนตุลาคม 2011 (เคอร์เนล 3.0)
สำหรับผู้ที่สนใจติดตามการแก้ไขในการแจกแจงสามารถทำได้ในหน้าต่อไปนี้: debian, อูบุนตู, Gentoo, RHEL, SUSE, Fedora y โค้ง .