การโจมตีใหม่ต่อโครงสร้างไมโครสถาปัตยกรรมของโปรเซสเซอร์ Intel และ AMD

กลุ่มนักวิจัยจากมหาวิทยาลัยเวอร์จิเนียและมหาวิทยาลัยแคลิฟอร์เนียได้นำเสนอการโจมตีรูปแบบใหม่ต่อโครงสร้างไมโครสถาปัตยกรรมของโปรเซสเซอร์ Intel และ AMD ที่ระบุในระหว่างการวิศวกรรมย้อนกลับสำหรับความสามารถของ CPU ที่ไม่มีเอกสาร วิธีการโจมตีที่นำเสนอเกี่ยวข้องกับการใช้แคช micro-op ระดับกลางในโปรเซสเซอร์ ซึ่งสามารถใช้เพื่อดึงข้อมูลที่สะสมระหว่างการดำเนินการตามคำสั่งแบบเก็งกำไร

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

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

วิธีการนี้ส่งผลต่อโปรเซสเซอร์ Intel และ AMD รุ่นต่างๆ ที่เปิดตัวตั้งแต่ปี 2011 รวมถึงซีรีส์ Intel Skylake และ AMD Zen CPU สมัยใหม่แบ่งคำสั่งโปรเซสเซอร์ที่ซับซ้อนออกเป็นการดำเนินการย่อยที่คล้ายกับ RISC ที่เรียบง่ายกว่า ซึ่งถูกแคชไว้ในแคชแยกต่างหาก แคชนี้มีความแตกต่างโดยพื้นฐานจากแคชระดับที่สูงกว่า ไม่สามารถเข้าถึงได้โดยตรง และทำหน้าที่เป็นบัฟเฟอร์สตรีมสำหรับการเข้าถึงผลลัพธ์ของการถอดรหัสคำสั่ง CISC ลงในคำสั่งย่อย RISC อย่างรวดเร็ว อย่างไรก็ตาม นักวิจัยได้ค้นพบวิธีสร้างเงื่อนไขที่เกิดขึ้นเมื่อการเข้าถึงแคชขัดแย้งกัน และอนุญาตให้ผู้หนึ่งตัดสินเนื้อหาของแคชการดำเนินการขนาดเล็กโดยการวิเคราะห์ความแตกต่างในเวลาดำเนินการของการกระทำบางอย่าง

การโจมตีใหม่ต่อโครงสร้างไมโครสถาปัตยกรรมของโปรเซสเซอร์ Intel และ AMD

แคชการทำงานระดับไมโครในโปรเซสเซอร์ Intel แบ่งส่วนตามเธรดของ CPU (Hyper-Threading) ในขณะที่โปรเซสเซอร์ AMD Zen ใช้แคชที่ใช้ร่วมกัน ซึ่งสร้างเงื่อนไขสำหรับการรั่วไหลของข้อมูลไม่เพียงแต่ภายในเธรดการดำเนินการเดียวเท่านั้น แต่ยังรวมถึงระหว่างเธรดที่แตกต่างกันใน SMT (ข้อมูลอาจรั่วไหลระหว่างโค้ดที่ทำงานบนคอร์ CPU แบบลอจิคัลที่แตกต่างกัน)

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

เมื่อจัดระเบียบการโจมตี Spectre รูปแบบต่างๆ โดยใช้แคชไมโครปฏิบัติการ นักวิจัยสามารถบรรลุประสิทธิภาพ 965.59 Kbps โดยมีอัตราข้อผิดพลาด 0.22% และ 785.56 Kbps เมื่อใช้การแก้ไขข้อผิดพลาด ในกรณีที่จัดระเบียบการรั่วไหลภายในที่อยู่เดียวกัน พื้นที่และระดับสิทธิพิเศษ เนื่องจากมีการรั่วไหลซึ่งครอบคลุมระดับสิทธิ์ที่แตกต่างกัน (ระหว่างเคอร์เนลและพื้นที่ผู้ใช้) ประสิทธิภาพอยู่ที่ 85.2 Kbps พร้อมเพิ่มการแก้ไขข้อผิดพลาด และ 110.96 Kbps พร้อมอัตราข้อผิดพลาด 4% เมื่อโจมตีโปรเซสเซอร์ AMD Zen ซึ่งทำให้เกิดการรั่วไหลระหว่างคอร์ลอจิคัล CPU ที่แตกต่างกัน ประสิทธิภาพอยู่ที่ 250 Kbps โดยมีอัตราข้อผิดพลาด 5.59% และ 168.58 Kbps พร้อมการแก้ไขข้อผิดพลาด เมื่อเทียบกับวิธี Spectre v1 แบบคลาสสิก การโจมตีใหม่เร็วกว่า 2.6 เท่า

คาดว่าการป้องกันการโจมตีแคชแบบ micro-op จะต้องมีการเปลี่ยนแปลงที่จะลดประสิทธิภาพมากกว่าถ้าคุณเปิดใช้งานการป้องกันการโจมตี Spectre เพื่อเป็นการประนีประนอมที่เหมาะสมที่สุด จึงเสนอให้บล็อกการโจมตีดังกล่าว ไม่ใช่โดยการปิดการใช้งานแคช แต่ในระดับของการตรวจสอบความผิดปกติ และการระบุสถานะแคชที่เป็นปกติสำหรับการโจมตี

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

ที่มา: opennet.ru

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