ช่องโหว่ในเคอร์เนล Linux 6.2 ที่อาจเลี่ยงผ่านการป้องกันการโจมตี Spectre v2

มีการระบุช่องโหว่ในเคอร์เนล Linux 6.2 (CVE-2023-1998) ที่ปิดใช้งานการป้องกันการโจมตี Spectre v2 ที่อนุญาตให้เข้าถึงหน่วยความจำของกระบวนการอื่นที่ทำงานบนเธรด SMT หรือ Hyper Threading ที่แตกต่างกัน แต่อยู่บนแกนประมวลผลทางกายภาพเดียวกัน ช่องโหว่นี้สามารถใช้เพื่อจัดการการรั่วไหลของข้อมูลระหว่างเครื่องเสมือนในระบบคลาวด์ ปัญหานี้มีผลกับเคอร์เนล Linux 6.2 เท่านั้น และเกิดจากการใช้การปรับให้เหมาะสมที่ไม่ถูกต้องซึ่งออกแบบมาเพื่อลดโอเวอร์เฮดที่สำคัญเมื่อใช้การป้องกัน Spectre v2 ช่องโหว่ได้รับการแก้ไขในสาขาทดลองของเคอร์เนล Linux 6.3

ในพื้นที่ผู้ใช้ เพื่อป้องกันการโจมตีของ Spectre กระบวนการสามารถเลือกปิดใช้งานการดำเนินการคำสั่งเชิงคาดเดาด้วย prctl PR_SET_SPECULATION_CTRL หรือใช้การกรองการเรียกระบบตาม seccomp ตามที่นักวิจัยระบุปัญหา การเพิ่มประสิทธิภาพที่ไม่ถูกต้องในเคอร์เนล 6.2 ทำให้เครื่องเสมือนของผู้ให้บริการคลาวด์ขนาดใหญ่อย่างน้อยหนึ่งรายไม่มีการป้องกันที่เหมาะสม แม้ว่าจะมีการรวมโหมดป้องกันการโจมตี spectre-BTI ผ่าน prctl ก็ตาม ช่องโหว่นี้ยังปรากฏบนเซิร์ฟเวอร์ปกติด้วยเคอร์เนล 6.2 ซึ่งบูตโดยใช้การตั้งค่า “spectre_v2=ibrs”

สาระสำคัญของช่องโหว่คือเมื่อเลือกโหมดการป้องกัน IBRS หรือ eIBRS การเพิ่มประสิทธิภาพทำให้ปิดการใช้งานกลไก STIBP (Single Thread Indirect Branch Predictors) ซึ่งจำเป็นต่อการป้องกันการรั่วไหลเมื่อใช้เทคโนโลยีมัลติเธรดพร้อมกัน (SMT หรือ Hyper-Threading ). ในเวลาเดียวกัน เฉพาะโหมด eIBRS ให้การป้องกันการรั่วไหลระหว่างเธรด แต่ไม่ใช่โหมด IBRS เนื่องจากด้วยโหมดนี้ บิต IBRS ซึ่งให้การป้องกันการรั่วไหลระหว่างคอร์แบบลอจิคัล จึงถูกล้างด้วยเหตุผลด้านประสิทธิภาพเมื่อการควบคุมกลับสู่พื้นที่ผู้ใช้ ซึ่งทำให้เธรดพื้นที่ผู้ใช้ไม่ได้รับการป้องกันจากการโจมตีของคลาส Spectre v2

ที่มา: opennet.ru

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