มีการเปิดเผยเทคนิคการใช้ประโยชน์จากช่องโหว่ในระบบย่อย tty ของเคอร์เนล Linux

นักวิจัยจากทีม Google Project Zero ได้เผยแพร่วิธีการใช้ประโยชน์จากช่องโหว่ (CVE-2020-29661) ในการใช้งาน TIOCSPGRP ioctl handler จากระบบย่อย tty ของเคอร์เนล Linux และยังตรวจสอบรายละเอียดเกี่ยวกับกลไกการป้องกันที่สามารถบล็อกดังกล่าวได้ ช่องโหว่

ข้อบกพร่องที่ทำให้เกิดปัญหาได้รับการแก้ไขในเคอร์เนลของ Linux ตั้งแต่วันที่ 3 ธันวาคมปีที่แล้ว ปัญหาปรากฏในเคอร์เนลจนถึงเวอร์ชัน 5.9.13 แต่การแจกจ่ายส่วนใหญ่แก้ไขปัญหาในการอัปเดตแพ็คเกจเคอร์เนลที่เสนอเมื่อปีที่แล้ว (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch) พบช่องโหว่ที่คล้ายกัน (CVE-2020-29660) พร้อมกันในการเรียกใช้ TIOCGSID ioctl แต่ก็ได้รับการแก้ไขทุกที่เช่นกัน

ปัญหาเกิดจากข้อผิดพลาดในการล็อกซึ่งทำให้เกิดสภาวะการแข่งขันในโค้ดไดรเวอร์/tty/tty_jobctrl.c ซึ่งสามารถใช้เพื่อสร้างเงื่อนไขการเข้าถึงหน่วยความจำหลังจากใช้งานฟรีโดยใช้ประโยชน์จากพื้นที่ผู้ใช้ผ่าน ioct-calling TIOCSPGRP มีการสาธิตช่องโหว่ที่ใช้งานได้สำหรับการเพิ่มสิทธิ์ใน Debian 10 ด้วยเคอร์เนล 4.19.0-13-amd64

ในเวลาเดียวกัน ในบทความที่ตีพิมพ์ ไม่ได้เน้นที่เทคนิคในการสร้างการหาประโยชน์จากการทำงานมากนัก แต่อยู่ที่เครื่องมือที่มีอยู่ในเคอร์เนลเพื่อป้องกันช่องโหว่ดังกล่าว ข้อสรุปไม่ได้รับการสนับสนุน วิธีการต่างๆ เช่น การแบ่งส่วนหน่วยความจำในฮีปและการควบคุมการเข้าถึงหน่วยความจำหลังจากปล่อยให้เป็นอิสระจะไม่ถูกนำมาใช้ในทางปฏิบัติ เนื่องจากจะทำให้ประสิทธิภาพการทำงานลดลง และการป้องกันตาม CFI (Control Flow Integrity) การปิดกั้นการหาประโยชน์ ในระยะหลังของการโจมตี จำเป็นต้องได้รับการปรับปรุง

เมื่อพิจารณาถึงสิ่งที่สามารถสร้างความแตกต่างได้ในระยะยาว การใช้เครื่องวิเคราะห์สแตติกขั้นสูงหรือการใช้ภาษาที่ปลอดภัยต่อหน่วยความจำ เช่น ภาษารัสต์และภาษาซีที่มีคำอธิบายประกอบที่หลากหลาย (เช่น ภาษาซี) ในขั้นตอนการสร้างตัวตรวจสอบสถานะ โดดเด่น ล็อค วัตถุ และพอยน์เตอร์ ในบรรดาวิธีการป้องกันนั้น มีการกล่าวถึงการเปิดใช้งานโหมด panic_on_oops การถ่ายโอนโครงสร้างเคอร์เนลไปยังโหมดอ่านอย่างเดียว และการจำกัดการเข้าถึงการเรียกระบบโดยใช้กลไกเช่น seccomp

ที่มา: opennet.ru

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