การโจมตีแบบ Cross-cache รูปแบบใหม่ใน Linux Kernel ที่ชื่อว่า SLUBStick ประสบความสำเร็จถึง 99% ในการแปลงช่องโหว่ของ heap memory ให้เป็นความสามารถในการอ่าน และเขียน memory ได้ตามที่ต้องการ ซึ่งทำให้นักวิจัยสามารถเพิ่มสิทธิ์ หรือ escape containers ได้
การค้นพบนี้มาจากทีมวิจัยจากมหาวิทยาลัยเทคโนโลยีเกรซ (Graz University of Technology) ที่แสดงให้เห็นการโจมตีบนเวอร์ชันของ Linux Kernel 5.9 และ 6.2 (ล่าสุด) โดยใช้ CVE ที่มีอยู่ 9 ตัวในทั้งระบบ 32-bit และ 64-bit
นอกจากนี้ การโจมตีนี้ยังส่งผลกระทบกับการป้องกันของ Kernel แบบใหม่ทั้งหมด เช่น Supervisor Mode Execution Prevention (SMEP), Supervisor Mode Access Prevention (SMAP) และ Kernel Address Space Layout Randomization (KASLR) ที่เปิดใช้งานอยู่
SLUBStick จะถูกนำเสนอโดยละเอียดในการประชุม Usenix Security Symposium ที่จะจัดขึ้นในเดือนนี้ โดยนักวิจัยจะสาธิตการเพิ่มสิทธิ์ และการ escape containers ใน Linux รุ่นล่าสุด และมีการเปิดใช้งานการป้องกันล่าสุดเช่นกัน
ในระหว่างนี้ เอกสารทางเทคนิคที่เผยแพร่จะมีรายละเอียดทั้งหมดเกี่ยวกับการโจมตี และสถานการณ์การใช้ประโยชน์จากช่องโหว่ที่เป็นไปได้
รายละเอียดของ SLUBStick
วิธีหนึ่งที่ Linux Kernel จัดการกับหน่วยความจำอย่างมีประสิทธิภาพ และปลอดภัย คือการจัดสรร และยกเลิกการจัดสรรหน่วยความจำที่เรียกว่า "slabs" สำหรับโครงสร้างข้อมูลที่แตกต่างกัน
ช่องโหว่ในกระบวนการจัดการหน่วยความจำนี้ อาจทำให้ผู้โจมตีสามารถสร้างความเสียหาย หรือจัดการโครงสร้างข้อมูลได้ ซึ่งเรียกว่า "cross-cache attacks" อย่างไรก็ตามการโจมตีเหล่านี้มีประสิทธิภาพประมาณ 40% และมักจะทำให้ระบบล่มในที่สุด
SLUBStick ใช้ประโยชน์จากช่องโหว่ของ heap memory เช่น การจัดสรรหน่วยความจำแบบ Double-free, user-after-free หรือ out-of-bounds write เพื่อควบคุมกระบวนการจัดสรรหน่วยความจำ
CVEs ที่ถูกนำมาใช้ในการทดลองของนักวิจัย
จากนั้นจะมีการใช้ timing side channel เพื่อกำหนดช่วงเวลาที่แน่นอนของการจัดสรร/ยกเลิกการจัดสรรหน่วยความจำ ซึ่งช่วยให้ผู้โจมตีสามารถคาดการณ์ และควบคุมการใช้หน่วยความจำใหม่ได้
การใช้ข้อมูลด้านเวลาเหล่านี้ เพิ่มความสำเร็จในการใช้ประโยชน์จากช่องโหว่สูงถึง 99% ทำให้ SLUBStick เป็นเครื่องมือที่ใช้ในการโจมตีได้จริง
อัตราความสำเร็จที่วัดได้
การแปลงช่องโหว่ของ heap เป็นพฤติกรรมการอ่าน และเขียนหน่วยความจำ ทำได้ในสามขั้นตอน:
ยกเลิกการจัดสรรหน่วยความจำเฉพาะ และรอให้ Kernel นำกลับมาใช้ใหม่
จัดสรรหน่วยความจำเหล่านี้ใหม่ในลักษณะที่ควบคุมได้ เพื่อให้แน่ใจว่ามันถูกนำไปใช้ใหม่สำหรับโครงสร้างข้อมูลที่สำคัญ เช่น page table
เมื่อเรียกคืนได้แล้ว ผู้โจมตีจะเขียนทับรายการ page table ทำให้สามารถอ่าน และเขียนตำแหน่งหน่วยความจำใด ๆ ได้
ภาพรวมของ SLUBStick
ผลกระทบที่เกิดขึ้น
เช่นเดียวกับการโจมตีที่เกี่ยวข้องกับ Side Channel ส่วนใหญ่ SLUBStick ต้องการการเข้าถึงภายในเครื่องเป้าหมายที่มีความสามารถในการ Run Code นอกจากนี้การโจมตียังต้องการช่องโหว่ของ Heap ใน Linux Kernel ซึ่งจะถูกใช้เพื่อให้สามารถเข้าถึงการอ่าน และเขียนหน่วยความจำได้
แม้ว่าอาจทำให้การโจมตีดูทำได้ค่อนข้างยาก แต่ก็มีประโยชน์บางอย่างสำหรับผู้โจมตี
สำหรับผู้โจมตีที่มีความสามารถในการ Run Code ได้ SLUBStick ยังให้ความสามารถในการเพิ่มสิทธิ์, การข้ามการป้องกันของ Kernel, container escape หรือใช้มันเป็นส่วนหนึ่งของการโจมตีที่ซับซ้อนอื่น ๆ ได้
การเพิ่มสิทธิ์สามารถใช้เพื่อเพิ่มสิทธิ์เป็น root อนุญาตให้ดำเนินการได้อย่างไม่จำกัด ในขณะที่การ escape container สามารถใช้เพื่อ break ระบบในลักษณะ sandboxed และเข้าถึงโฮสต์ได้
นอกจากนี้ ในระยะหลังการใช้ประโยชน์ในลักษณะ SLUBStick อาจเปลี่ยนแปลงโครงสร้างของ Kernel เพื่อแฝงตัวอยู่บนระบบ ทำให้การตรวจจับมัลแวร์ทำได้ยากขึ้น
การดัดแปลงข้อมูล '/etc/passwd'
ผู้ที่ต้องการศึกษาเพิ่มเติมเกี่ยวกับ SLUBStick และทดลองใช้การโจมตีที่ใช้โดยนักวิจัยจากมหาวิทยาลัยเกรซสามารถค้นหาได้ในที่ GitHub ของนักวิจัย
ที่มา : bleepingcomputer