Kasper เครื่องสแกนสำหรับปัญหาการเรียกใช้โค้ดเก็งกำไรในเคอร์เนล Linux พร้อมใช้งานแล้ว

ทีมนักวิจัยจาก Free University of Amsterdam ได้เผยแพร่ชุดเครื่องมือ Kasper ที่ออกแบบมาเพื่อระบุโค้ดขนาดสั้นในเคอร์เนล Linux ที่สามารถใช้เพื่อใช้ประโยชน์จากช่องโหว่ระดับ Spectre ที่เกิดจากการเรียกใช้โค้ดแบบเก็งกำไรบนโปรเซสเซอร์ ซอร์สโค้ดสำหรับชุดเครื่องมือนี้เผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0

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

เครื่องมือที่มีอยู่ก่อนหน้านี้สำหรับการสแกนอุปกรณ์เพื่อหาช่องโหว่ Spectre โดยอิงจากการค้นหารูปแบบทั่วไป แสดงให้เห็นระดับผลบวกลวงที่สูงมาก ในขณะที่ยังขาดอุปกรณ์จริงจำนวนมาก (การทดลองแสดงให้เห็นว่า 99% ของอุปกรณ์ที่ระบุโดยเครื่องมือดังกล่าวไม่สามารถใช้สำหรับการโจมตีได้ และ 33% ของอุปกรณ์ทำงานที่อาจนำไปสู่การโจมตีไม่ได้ถูกสังเกตเห็น)

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

Kasper เครื่องสแกนสำหรับปัญหาการเรียกใช้โค้ดเก็งกำไรในเคอร์เนล Linux พร้อมใช้งานแล้ว

เมื่อทำการทดสอบ เคอร์เนลจะเชื่อมโยงกับไลบรารีรันไทม์ของ Kasper และการตรวจสอบการทำงานที่ระดับ LLVM กระบวนการตรวจสอบจะจำลองการเรียกใช้โค้ดแบบเก็งกำไร ซึ่งใช้งานโดยใช้กลไกการคืนค่าจุดตรวจสอบ ซึ่งดำเนินการเฉพาะสาขาโค้ดที่คาดการณ์ไม่ถูกต้อง จากนั้นย้อนกลับไปสู่สถานะดั้งเดิมก่อนที่แบรนช์จะเริ่มต้น Kasper ยังพยายามจำลองช่องโหว่ของซอฟต์แวร์และฮาร์ดแวร์ต่างๆ วิเคราะห์ผลกระทบของผลกระทบทางสถาปัตยกรรมและสถาปัตยกรรมขนาดเล็ก และทำการทดสอบแบบคลุมเครือเกี่ยวกับการกระทำของผู้โจมตีที่เป็นไปได้ ในการวิเคราะห์โฟลว์การดำเนินการ จะมีการใช้พอร์ต DataFlowSanitizer สำหรับเคอร์เนล Linux และสำหรับการทดสอบแบบคลุมเครือ จะใช้แพ็คเกจ syzkaller เวอร์ชันแก้ไข

Kasper เครื่องสแกนสำหรับปัญหาการเรียกใช้โค้ดเก็งกำไรในเคอร์เนล Linux พร้อมใช้งานแล้ว

การสแกนเคอร์เนล Linux โดยใช้ Kasper ระบุอุปกรณ์ที่ไม่รู้จักก่อนหน้านี้จำนวน 1379 ชิ้นที่อาจนำไปสู่การรั่วไหลของข้อมูลระหว่างการดำเนินการตามคำสั่งแบบคาดเดา มีข้อสังเกตว่าบางทีอาจมีเพียงบางส่วนเท่านั้นที่อาจก่อให้เกิดปัญหาที่แท้จริง แต่เพื่อแสดงให้เห็นว่ามีอันตรายที่แท้จริง และไม่ใช่แค่ในทางทฤษฎีเท่านั้น ต้นแบบการทำงานของการหาประโยชน์ได้รับการพัฒนาสำหรับหนึ่งในแฟรกเมนต์โค้ดที่มีปัญหา ซึ่งนำไปสู่ข้อมูล การรั่วไหลจากหน่วยความจำเคอร์เนล

ที่มา: opennet.ru

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