นักพัฒนาของทีม Google Cloud ได้ระบุช่องโหว่ (CVE-2019-9836) ในการนำเทคโนโลยี AMD SEV (การจำลองเสมือนที่เข้ารหัสอย่างปลอดภัย) ซึ่งสามารถทำลายข้อมูลที่ได้รับการปกป้องด้วยเทคโนโลยีนี้
AMD SEV ในระดับฮาร์ดแวร์e ให้การเข้ารหัสหน่วยความจำแบบโปร่งใสของเครื่องเสมือน โดยที่ระบบเกสต์ในปัจจุบันเท่านั้นที่สามารถเข้าถึงข้อมูลที่ถอดรหัสได้ในขณะที่เครื่องเสมือนและไฮเปอร์ไวเซอร์ที่เหลือจะได้รับชุดข้อมูลที่เข้ารหัสเมื่อเข้าถึงหน่วยความจำนี้
ปัญหาที่ระบุช่วยให้สามารถกู้คืนเนื้อหาของคีย์ส่วนตัว PDH ได้อย่างสมบูรณ์ ซึ่งได้รับการประมวลผลในระดับของโปรเซสเซอร์ PSP (AMD Security Processor) ที่ได้รับการป้องกันเพียงตัวเดียวซึ่งไม่มีให้สำหรับระบบปฏิบัติการหลัก
เมื่อมีคีย์ PDH ผู้โจมตีสามารถกู้คืนคีย์เซสชันและลำดับความลับได้ ระบุเมื่อสร้างเครื่องเสมือนและเข้าถึงข้อมูลที่เข้ารหัส
ช่องโหว่นี้เกิดจากข้อบกพร่องในการนำเส้นโค้งรูปไข่มาใช้ (ECC) ใช้สำหรับการเข้ารหัสซึ่งอนุญาตให้โจมตีเพื่อเรียกคืนพารามิเตอร์ของเส้นโค้ง
ในระหว่างการดำเนินการคำสั่งเริ่มต้นของเครื่องเสมือนที่ได้รับการป้องกันผู้โจมตีสามารถส่งพารามิเตอร์เส้นโค้งที่ไม่ตรงกับพารามิเตอร์ที่ NIST แนะนำซึ่งจะนำไปสู่การใช้ค่าจุดลำดับต่ำในการดำเนินการคูณกับข้อมูลจากส่วนตัว สำคัญ.
การใช้ Elliptical Curve (ECC) ของ SEV พบว่าเสี่ยงต่อการโจมตีเส้นโค้งที่ไม่ถูกต้อง ที่คำสั่ง boot start ผู้โจมตีสามารถส่ง
จุด ECC คำสั่งขนาดเล็กไม่ได้อยู่ในเส้นโค้ง NIST อย่างเป็นทางการและบังคับให้เฟิร์มแวร์ SEV คูณจุดสั่งซื้อเล็ก ๆ โดย DH ส่วนตัวของเฟิร์มแวร์สเกลาร์
ผู้โจมตีสามารถกู้คืนคีย์ส่วนตัว PDH ที่สมบูรณ์ได้ด้วยการรวบรวมของเสียแบบแยกส่วนได้เพียงพอ ด้วย PDH ผู้โจมตีสามารถกู้คืนรหัสเซสชันและเปิดความลับของเครื่องเสมือนได้ ซึ่งเป็นการทำลายการรับประกันการรักษาความลับที่ SEV นำเสนอ
ความปลอดภัยของโปรโตคอล ECDH ขึ้นอยู่กับลำดับของจุดเริ่มต้นที่สร้างขึ้นโดยตรง ของเส้นโค้งซึ่งลอการิทึมแบบไม่ต่อเนื่องเป็นงานที่ซับซ้อนมาก
ในขั้นตอนหนึ่งในการเริ่มต้นสภาพแวดล้อม AMD SEV พารามิเตอร์ที่ได้รับจากผู้ใช้จะถูกใช้ในการคำนวณด้วยคีย์ส่วนตัว
โดยพื้นฐานแล้วการดำเนินการคูณสองจุดจะดำเนินการซึ่งหนึ่งในนั้นสอดคล้องกับคีย์ส่วนตัว
หากจุดที่สองอ้างถึงจำนวนเฉพาะลำดับต่ำผู้โจมตีสามารถกำหนดพารามิเตอร์ของจุดแรก (บิตของโมดูโลที่ใช้ในการดำเนินการโมดูโลการยกกำลัง) โดยแสดงรายการค่าที่เป็นไปได้ทั้งหมด สามารถรวมส่วนของจำนวนเฉพาะที่เลือกไว้เพื่อกำหนดคีย์ส่วนตัวโดยใช้ทฤษฎีบทภาษาจีนเกี่ยวกับเศษเหลือ
การโจมตีเส้นโค้งที่ไม่ถูกต้องคือการคูณจุด ECDH บนเส้นโค้งที่แตกต่างกัน - พารามิเตอร์ที่แตกต่างกัน (a, b) สิ่งนี้เกิดขึ้นได้ในฟังก์ชันผลรวมคะแนน Weierstrass แบบสั้นเนื่องจากไม่ได้ใช้พารามิเตอร์ "b"
บนเส้นโค้งนี้จุดจะมีลำดับหลักเล็ก ๆ เมื่อลองใช้ค่าที่เป็นไปได้ทั้งหมดสำหรับจุดสั่งซื้อขนาดเล็กผู้โจมตีสามารถดึงบิตสเกลาร์ส่วนตัว (ปรับเปลี่ยนลำดับ)
แพลตฟอร์มเซิร์ฟเวอร์ AMD EPYC ที่ใช้เฟิร์มแวร์ SEV จนถึงเวอร์ชัน 0.17 build 11 เป็นปัญหา
AMD ได้ออกอัพเดตเฟิร์มแวร์แล้วซึ่งได้เพิ่มการล็อคการใช้จุดที่ไม่ตรงกับเส้นโค้ง NIST
ในขณะเดียวกันใบรับรองที่สร้างขึ้นก่อนหน้านี้สำหรับคีย์ PDH ยังคงถูกต้องทำให้ผู้โจมตีสามารถโจมตีการย้ายเครื่องเสมือนจากสภาพแวดล้อมที่ได้รับการป้องกันจากช่องโหว่ของผู้ที่อาจเกิดปัญหา
นอกจากนี้ยังมีการกล่าวถึงความเป็นไปได้ในการโจมตีย้อนกลับในเวอร์ชันเฟิร์มแวร์ของเวอร์ชันที่มีช่องโหว่ก่อนหน้านี้ด้วย แต่คุณสมบัตินี้ยังไม่ได้รับการยืนยัน
Fuente: https://seclists.org/