Plundervolt เป็นวิธีการโจมตีแบบใหม่บนโปรเซสเซอร์ Intel ที่ส่งผลต่อเทคโนโลยี SGX

อินเทล ปล่อยออกมา การอัปเดตไมโครโค้ดที่แก้ไข จุดอ่อน (CVE-2019-14607) อนุญาต ผ่านการปรับเปลี่ยนกลไกการควบคุมแรงดันไฟฟ้าและความถี่แบบไดนามิกใน CPU ทำให้เกิดความเสียหายต่อเนื้อหาของเซลล์ข้อมูล รวมถึงในพื้นที่ที่ใช้สำหรับการคำนวณในวงล้อม Intel SGX ที่แยกออกมา การโจมตีนี้เรียกว่า Plundervolt และอาจอนุญาตให้ผู้ใช้ภายในเครื่องเพิ่มระดับสิทธิ์ของตนบนระบบ ทำให้เกิดการปฏิเสธบริการ และเข้าถึงข้อมูลที่ละเอียดอ่อนได้

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

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

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

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

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

โปรเซสเซอร์ Intel รุ่นต่างๆ ได้รับผลกระทบจากปัญหา รวมถึง Intel Core CPU ที่มี 6
รุ่นที่ 10 รวมถึง Xeon E3 รุ่นที่ห้าและหก, Intel Xeon Scalable รุ่นที่หนึ่งและที่สอง, Xeon D,
Xeon W และ Xeon E.

เราขอเตือนคุณว่าเทคโนโลยี SGX (ส่วนขยาย Software Guard) ปรากฏในโปรเซสเซอร์ Intel Core รุ่นที่หก (Skylake) และ ข้อเสนอ ชุดคำสั่งที่อนุญาตให้แอปพลิเคชันระดับผู้ใช้จัดสรรพื้นที่หน่วยความจำแบบปิด - วงล้อม ซึ่งเนื้อหาไม่สามารถอ่านหรือแก้ไขได้แม้โดยเคอร์เนลและโค้ดที่ทำงานในโหมด ring0, SMM และ VMM เป็นไปไม่ได้ที่จะถ่ายโอนการควบคุมไปยังโค้ดในวงล้อมโดยใช้ฟังก์ชันการกระโดดแบบดั้งเดิมและการจัดการกับรีจิสเตอร์และสแต็ก ในการถ่ายโอนการควบคุมไปยังวงล้อมนั้นจะใช้คำสั่งใหม่ที่สร้างขึ้นเป็นพิเศษเพื่อดำเนินการตรวจสอบสิทธิ์ ในกรณีนี้ รหัสที่วางไว้ในวงล้อมสามารถใช้วิธีการเรียกแบบคลาสสิกเพื่อเข้าถึงฟังก์ชันภายในวงล้อมและคำแนะนำพิเศษในการเรียกใช้ฟังก์ชันภายนอก การเข้ารหัสหน่วยความจำ Enclave ใช้เพื่อป้องกันการโจมตีด้วยฮาร์ดแวร์ เช่น การเชื่อมต่อกับโมดูล DRAM

ที่มา: opennet.ru

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