การโจมตีสองครั้งในกลไกการทำนายช่องแคชในโปรเซสเซอร์ AMD

กลุ่มนักวิจัยจากมหาวิทยาลัยเทคนิคแห่งกราซ (ออสเตรีย) ซึ่งก่อนหน้านี้เป็นที่รู้จักในด้านการพัฒนาวิธีการโจมตี MDS, เน็ตสเปกตรัม, ค้อนขว้าง и ZombieLoadดำเนินการวิจัยเกี่ยวกับการเพิ่มประสิทธิภาพฮาร์ดแวร์โดยเฉพาะสำหรับโปรเซสเซอร์ AMD และ ได้พัฒนา สองวิธีใหม่ในการโจมตี side-channel ที่จัดการข้อมูลรั่วไหลระหว่างการทำงานของกลไกการทำนายช่องแคช L1 ของโปรเซสเซอร์ AMD เทคนิคนี้สามารถนำไปใช้เพื่อลดประสิทธิภาพของการป้องกัน ASLR กู้คืนคีย์ในการใช้งาน AES ที่มีช่องโหว่ และเพิ่มประสิทธิภาพของการโจมตี Spectre

พบปัญหาในการใช้งานกลไกการทำนายแชนเนล (ตัวทำนายทิศทาง) ในแคชข้อมูลระดับแรกของ CPU (L1D) ซึ่งใช้ในการทำนายว่าแชนเนลแคชใดมีที่อยู่หน่วยความจำที่แน่นอน การเพิ่มประสิทธิภาพที่ใช้ในโปรเซสเซอร์ AMD ขึ้นอยู่กับการตรวจสอบ μ-tags (μTag) μTagคำนวณโดยใช้ฟังก์ชันแฮชเฉพาะกับที่อยู่เสมือน ในระหว่างการดำเนินการ กลไกการทำนายช่องสัญญาณจะใช้ μTag เพื่อกำหนดช่องแคชจากตาราง ดังนั้น μTag ช่วยให้โปรเซสเซอร์จำกัดตัวเองให้เข้าถึงเฉพาะช่องทางเฉพาะ โดยไม่ต้องค้นหาตัวเลือกทั้งหมด ซึ่งจะช่วยลดการใช้พลังงานของ CPU ลงอย่างมาก

การโจมตีสองครั้งในกลไกการทำนายช่องแคชในโปรเซสเซอร์ AMD

ในระหว่างวิศวกรรมย้อนกลับของการใช้งานระบบทำนายช่องสัญญาณในโปรเซสเซอร์ AMD รุ่นต่างๆ ที่เปิดตัวตั้งแต่ปี 2011 ถึง 2019 มีการระบุเทคนิคการโจมตีช่องสัญญาณด้านข้างใหม่สองวิธี:

  • Collide+Probe - อนุญาตให้ผู้โจมตีติดตามการเข้าถึงหน่วยความจำสำหรับกระบวนการที่ทำงานบนคอร์ CPU แบบลอจิคัลเดียวกัน สาระสำคัญของวิธีนี้คือการใช้ที่อยู่เสมือนที่ทำให้เกิดการชนกันในฟังก์ชันแฮชที่ใช้ในการคำนวณ μTag เพื่อติดตามการเข้าถึงหน่วยความจำ ต่างจากการโจมตี Flush+Reload และ Prime+Probe ที่ใช้กับโปรเซสเซอร์ Intel ตรงที่ Collide+Probe ไม่ได้ใช้หน่วยความจำที่ใช้ร่วมกันและทำงานโดยปราศจากความรู้เกี่ยวกับที่อยู่ทางกายภาพ
  • โหลด+โหลดซ้ำ - ช่วยให้คุณกำหนดการติดตามการเข้าถึงหน่วยความจำบนคอร์ CPU ฟิสิคัลเดียวกันได้อย่างแม่นยำมาก วิธีการนี้ขึ้นอยู่กับข้อเท็จจริงที่ว่าเซลล์หน่วยความจำกายภาพสามารถอยู่ในแคช L1D ได้เพียงครั้งเดียวเท่านั้น เหล่านั้น. การเข้าถึงเซลล์หน่วยความจำเดียวกันด้วยที่อยู่เสมือนอื่นจะทำให้เซลล์ถูกขับออกจากแคช L1D ทำให้สามารถติดตามการเข้าถึงหน่วยความจำได้ แม้ว่าการโจมตีจะต้องอาศัยหน่วยความจำที่ใช้ร่วมกัน แต่ก็ไม่ได้ล้างบรรทัดแคช ทำให้สามารถโจมตีแบบซ่อนตัวซึ่งไม่ได้นำข้อมูลจากแคชระดับสุดท้าย

จากเทคนิค Collide+Probe และ Load+Reload นักวิจัยได้สาธิตสถานการณ์การโจมตีช่องทางด้านข้างหลายรูปแบบ:

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

    การโจมตีสองครั้งในกลไกการทำนายช่องแคชในโปรเซสเซอร์ AMD

  • ตามวิธี Collide+Probe การโจมตีได้ถูกนำมาใช้เพื่อกู้คืนคีย์การเข้ารหัสจากการใช้งานที่มีช่องโหว่ (ขึ้นอยู่กับ T-โต๊ะ) การเข้ารหัส AES
  • การใช้วิธี Collide+Probe เป็นช่องทางการรับข้อมูล การโจมตี Spectre จึงสามารถดึงข้อมูลส่วนตัวจากเคอร์เนลได้โดยไม่ต้องใช้หน่วยความจำที่ใช้ร่วมกัน

ช่องโหว่นี้เกิดขึ้นบนโปรเซสเซอร์ AMD ที่ใช้สถาปัตยกรรมไมโคร
Bulldozer, Piledriver, Steamroller, Zen (Ryzen, Epic), Zen+ และ Zen2
AMD ได้รับแจ้งปัญหานี้เมื่อวันที่ 23 สิงหาคม 2019 แต่จนถึงขณะนี้ ไม่ได้ออกรายงาน พร้อมข้อมูลเกี่ยวกับการบล็อกจุดอ่อน ตามที่นักวิจัย ปัญหาสามารถถูกบล็อกได้ที่ระดับการอัปเดตไมโครโค้ดโดยการจัดเตรียมบิต MSR เพื่อปิดใช้งานระบบการทำนายช่องสัญญาณแบบเลือกได้ คล้ายกับที่ Intel ทำเพื่อควบคุมการปิดใช้งานกลไกการทำนายสาขา

การโจมตีสองครั้งในกลไกการทำนายช่องแคชในโปรเซสเซอร์ AMD

ที่มา: opennet.ru

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