AMD ได้ยืนยันช่องโหว่ที่อาจเกิดขึ้นของซีพียู AMD Zen 3 ต่อการโจมตี Spectre-STL

AMD ได้เผยแพร่รายงานการวิเคราะห์ความปลอดภัยของเทคโนโลยีการปรับให้เหมาะสม PSF (Predictive Store Forwarding) ที่ใช้ในโปรเซสเซอร์ Zen 3 series การศึกษาในทางทฤษฎียืนยันการบังคับใช้วิธีโจมตี Spectre-STL (Spectre-v4) ที่ระบุในเดือนพฤษภาคม 2018 เพื่อ เทคโนโลยี PSF แต่ในทางปฏิบัติ ยังไม่พบเทมเพลตโค้ดที่สามารถนำไปสู่การโจมตีได้ และประเมินอันตรายโดยรวมว่าไม่มีนัยสำคัญ

ให้เราระลึกว่าการโจมตี Spectre-v4 (Speculative Store Bypass) ขึ้นอยู่กับการกู้คืนข้อมูลที่จัดอยู่ในแคชของโปรเซสเซอร์หลังจากละทิ้งผลลัพธ์ของการดำเนินการเชิงคาดเดาเมื่อประมวลผลการดำเนินการเขียนและอ่านสลับกันโดยใช้การกำหนดที่อยู่ทางอ้อม เมื่อการดำเนินการอ่านเป็นไปตามการดำเนินการเขียน (เช่น mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]) อาจทราบออฟเซ็ตของที่อยู่การอ่านอยู่แล้วเนื่องจากมีการดำเนินการที่คล้ายกัน (การดำเนินการอ่านคือ ดำเนินการบ่อยกว่ามากและสามารถอ่านได้จากแคช) และโปรเซสเซอร์สามารถดำเนินการอ่านก่อนเขียนโดยไม่ต้องรอให้คำนวณออฟเซ็ตทางอ้อมของการเขียน

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

เมื่อเพิ่มโปรเซสเซอร์ AMD Zen 3 แล้ว PSF จะเพิ่มประสิทธิภาพ STLF (Store-To-Load-Forwarding) ซึ่งดำเนินการอ่านแบบเก็งกำไรโดยการทำนายความสัมพันธ์ระหว่างการดำเนินการอ่านและเขียน เมื่อใช้ STLF แบบคลาสสิก โปรเซสเซอร์จะดำเนินการ "โหลด" กับข้อมูลที่ส่งต่อโดยตรงจากคำสั่ง "store" ก่อนหน้า โดยไม่ต้องรอให้เขียนผลลัพธ์ลงในหน่วยความจำจริง แต่ต้องแน่ใจว่าที่อยู่ที่ใช้ในการ "โหลด" และคำสั่ง "store" ตรงกัน การเพิ่มประสิทธิภาพ PSF ทำให้การตรวจสอบที่อยู่เป็นการเก็งกำไร และดำเนินการ "โหลด" ก่อนที่จะคำนวณข้อมูลที่อยู่ หากมีการดำเนินการคู่ร้านค้า/โหลดที่จัดการที่อยู่เดียวก่อนหน้านี้ หากการคาดการณ์ล้มเหลว สถานะจะถูกย้อนกลับ แต่ข้อมูลจะยังคงอยู่ในแคช

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

AMD ได้จัดเตรียมวิธีการหลายวิธีสำหรับการปิดใช้งาน PSF โดยสมบูรณ์หรือแบบเลือก แต่เนื่องจากมีความเสี่ยงเล็กน้อยสำหรับแอปพลิเคชันส่วนใหญ่ จึงแนะนำว่าไม่ควรปิดใช้งานการเพิ่มประสิทธิภาพนี้โดยค่าเริ่มต้น ในการเลือกปกป้องกระบวนการที่แยกกระบวนการที่เรียกใช้โค้ดที่ไม่น่าเชื่อถือ ขอแนะนำให้ปิดการใช้งาน PSF โดยการตั้งค่าบิต MSR “SSBD” และ “PSFD” รวมถึงสำหรับแต่ละเธรด มีการจัดเตรียมแพตช์สำหรับเคอร์เนล Linux ด้วยการใช้ตัวเลือกบรรทัดคำสั่ง "psfd" และ "nopsfd" ที่ควบคุมวิธีการเปิดและปิด PSF

ที่มา: opennet.ru

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