ZenHammer - วิธีการโจมตีเพื่อทำให้เนื้อหาหน่วยความจำเสียหายบนแพลตฟอร์ม AMD Zen

นักวิจัยที่ ETH Zurich ได้พัฒนาการโจมตี ZenHammer ซึ่งเป็นรูปแบบการโจมตีประเภท RowHammer เพื่อแก้ไขเนื้อหาของแต่ละบิตของ Dynamic Random Access Memory (DRAM) ซึ่งปรับให้เหมาะกับการใช้งานบนแพลตฟอร์มที่มีโปรเซสเซอร์ AMD การโจมตีของ RowHammer ในอดีตนั้นจำกัดอยู่เฉพาะระบบที่ใช้โปรเซสเซอร์ Intel เท่านั้น แต่การวิจัยพบว่าความเสียหายของหน่วยความจำสามารถทำได้บนแพลตฟอร์มที่มีตัวควบคุมหน่วยความจำ AMD

วิธีการนี้แสดงให้เห็นบนระบบ AMD Zen 2 และ Zen 3 พร้อมหน่วยความจำ DDR4 จากผู้ผลิตชั้นนำสามราย (Samsung, Micron และ SK Hynix) การโจมตีสามารถข้ามกลไก TRR (Target Row Refresh) ที่ใช้ในชิปหน่วยความจำได้สำเร็จ ซึ่งมีวัตถุประสงค์เพื่อป้องกันความเสียหายของเซลล์หน่วยความจำในแถวที่อยู่ติดกัน ตามที่นักวิจัยระบุว่า ระบบที่ใช้ซีพียู AMD Zen 3 มีความเสี่ยงมากกว่าระบบที่ใช้โปรเซสเซอร์ Intel Coffee Lake และโจมตีได้ง่ายกว่าและมีประสิทธิภาพมากกว่า ในระบบ AMD Zen 2 การบิดเบือนเซลล์ทำได้สำเร็จสำหรับชิป DDR7 ที่ทดสอบ 10 จาก 4 ตัว และบนระบบ Zen 3 สำหรับ 6 เต็ม 10 นักวิจัยยังวิเคราะห์ความเป็นไปได้ของการโจมตีระบบ AMD Zen 4 ด้วยหน่วยความจำ DDR5 แต่การโจมตี วิธีการที่พัฒนาขึ้นสำหรับ DDR4 นั้นประสบความสำเร็จในการทำซ้ำบนชิปหน่วยความจำ DDR1 ที่ทดสอบเพียง 10 ใน 5 ชิปเท่านั้น ในขณะที่ความเป็นไปได้ของการโจมตีนั้นไม่ได้รับการยกเว้น แต่ต้องมีการพัฒนารูปแบบการอ่านที่มีประสิทธิภาพมากขึ้นซึ่งเหมาะสมกับอุปกรณ์ DDR5

ในการทำงานกับชิป AMD พวกเขาสามารถปรับเปลี่ยนช่องโหว่ที่พัฒนาก่อนหน้านี้ซึ่งเปลี่ยนเนื้อหาของรายการในตารางหน้าหน่วยความจำ (PTE, รายการตารางหน้า) เพื่อรับสิทธิ์เคอร์เนล ข้ามการตรวจสอบรหัสผ่าน/สิทธิ์โดยการแก้ไขหน่วยความจำของกระบวนการ sudo และสร้างความเสียหายให้กับคีย์สาธารณะ RSA-2048 ที่จัดเก็บไว้ในหน่วยความจำใน OpenSSH เพื่อสร้างคีย์ส่วนตัวขึ้นมาใหม่ การโจมตีหน้าหน่วยความจำทำซ้ำกับชิป DDR7 10 จาก 4 ตัวที่ทดสอบ การโจมตีคีย์ RSA บนชิป 6 ตัว และการโจมตี sudo บนชิป 4 ตัว โดยมีเวลาการโจมตี 164, 267 และ 209 วินาทีตามลำดับ

ZenHammer - วิธีการโจมตีเพื่อทำให้เนื้อหาหน่วยความจำเสียหายบนแพลตฟอร์ม AMD Zen

วิธีการนี้ยังสามารถใช้เพื่อโจมตีระบบผ่านเบราว์เซอร์ ทำการเปลี่ยนแปลงจากเครื่องเสมือน หรือเริ่มการโจมตีผ่านเครือข่าย ซอร์สโค้ดสำหรับชุดเครื่องมือ DARE สำหรับวิศวกรรมย้อนกลับเค้าโครงที่อยู่ในหน่วยความจำ DRAM ถูกโพสต์บน GitHub ภายใต้ใบอนุญาต MIT เช่นเดียวกับชุดยูทิลิตี้สองชุดสำหรับการทดสอบความเสียหายของบิตแบบคลุมเครือในหน่วยความจำ - ddr4_zen2_zen3_pub สำหรับชิป DDR4 (Zen 2 และ Zen 3) และ ddr5_zen4_pub สำหรับชิป DDR5 ( Zen 4) ซึ่งสามารถใช้เพื่อทดสอบระบบของตนว่าอ่อนแอต่อการโจมตีหรือไม่

ZenHammer - วิธีการโจมตีเพื่อทำให้เนื้อหาหน่วยความจำเสียหายบนแพลตฟอร์ม AMD Zen

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

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

AMD ได้ตีพิมพ์รายงานเกี่ยวกับปัญหาที่ระบุว่าโปรเซสเซอร์ AMD ใช้ตัวควบคุมหน่วยความจำที่สอดคล้องกับข้อกำหนด DDR และเนื่องจากความสำเร็จของการโจมตีขึ้นอยู่กับการตั้งค่าระบบและหน่วยความจำ DRAM เป็นหลัก คำถามเกี่ยวกับการแก้ไขปัญหาควรถูกส่งไปยังผู้ผลิตหน่วยความจำโดยตรง และระบบต่างๆ วิธีที่มีอยู่เพื่อทำให้การโจมตีระดับ Rowhammer ยากขึ้น ได้แก่ การใช้หน่วยความจำ ECC การเพิ่มความถี่ของการสร้างหน่วยความจำใหม่ การปิดใช้งานโหมดการสร้างใหม่แบบเลื่อนออกไป และการใช้โปรเซสเซอร์ที่มีตัวควบคุมที่รองรับโหมด MAC (จำนวนการเปิดใช้งานสูงสุด) สำหรับ DDR4 (ที่ 1, 2 และ 3 AMD EPYC รุ่น "Naple", "Rome" และ "Milan") และ RFM (Refresh Management) สำหรับ DDR5 (AMD EPYC รุ่นที่ 4)

ที่มา: opennet.ru

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