ช่องโหว่ในการใช้งานซ็อกเก็ต AF_PACKET ของเคอร์เนล Linux

สามปีหลังจากคลื่นแห่งความเปราะบาง (1, 2, 3, 4, 5) ในระบบย่อย AF_PACKET ของเคอร์เนล Linux ระบุ อีกหนึ่งปัญหา (CVE-2020-14386) อนุญาตให้ผู้ใช้ที่ไม่มีสิทธิพิเศษในพื้นที่สามารถรันโค้ดในฐานะรูทหรือออกจากคอนเทนเนอร์ที่แยกได้ หากพวกเขามีสิทธิ์การเข้าถึงรูท

การสร้างซ็อกเก็ต AF_PACKET และการหาช่องโหว่ต้องใช้สิทธิ์ CAP_NET_RAW อย่างไรก็ตาม ผู้ใช้ที่ไม่มีสิทธิ์สามารถรับสิทธิ์ที่ระบุได้ในคอนเทนเนอร์ที่สร้างขึ้นบนระบบที่เปิดใช้งานการรองรับเนมสเปซของผู้ใช้ ตัวอย่างเช่น เนมสเปซของผู้ใช้จะเปิดใช้งานตามค่าเริ่มต้นบน Ubuntu และ Fedora แต่ไม่ได้เปิดใช้งานบน Debian และ RHEL บน Android กระบวนการมีเดียเซิร์ฟเวอร์มีสิทธิ์สร้างซ็อกเก็ต AF_PACKET ซึ่งสามารถใช้ประโยชน์จากช่องโหว่ได้

ช่องโหว่นี้มีอยู่ในฟังก์ชัน tpacket_rcv และเกิดจากข้อผิดพลาดในการคำนวณตัวแปร netoff ผู้โจมตีสามารถสร้างเงื่อนไขที่ตัวแปร netoff ถูกเขียนเป็นค่าน้อยกว่าตัวแปร maclen ซึ่งจะทำให้เกิดการโอเวอร์โฟลว์เมื่อคำนวณ "macoff = netoff - maclen" และต่อมาตั้งค่าตัวชี้ไปยังบัฟเฟอร์สำหรับข้อมูลขาเข้าอย่างไม่ถูกต้อง เป็นผลให้ผู้โจมตีสามารถเริ่มต้นการเขียนจาก 1 ถึง 10 ไบต์ไปยังพื้นที่นอกขอบเขตของบัฟเฟอร์ที่จัดสรร มีข้อสังเกตว่ามีการพัฒนาช่องโหว่ที่ช่วยให้คุณได้รับสิทธิ์รูทในระบบ

ปัญหาเกิดขึ้นในเคอร์เนลตั้งแต่เดือนกรกฎาคม 2008 เช่น ปรากฏอยู่ในนิวเคลียสที่แท้จริงทั้งหมด ขณะนี้การแก้ไขพร้อมใช้งานเป็น ปะ. คุณสามารถติดตามความพร้อมใช้งานของการอัพเดตแพ็คเกจในการแจกจ่ายในหน้าต่อไปนี้: อูบุนตู, Fedora, SUSE, debian, RHEL, โค้ง.

ที่มา: opennet.ru

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