รูปแบบการโจมตี Foreshadow ใหม่ที่ส่งผลต่อโปรเซสเซอร์ Intel, AMD, ARM และ IBM

กลุ่มนักวิจัยจากมหาวิทยาลัยเทคนิคแห่งกราซ (ออสเตรีย) และศูนย์ความมั่นคงสารสนเทศเฮล์มโฮลทซ์ (CISPA) เปิดเผย (รูปแบบไฟล์ PDF) เวกเตอร์ใหม่สำหรับการใช้การโจมตีช่องทางด้านข้าง ลางบอกเหตุ (L1TF) ซึ่งช่วยให้คุณสามารถดึงข้อมูลจากหน่วยความจำของ Intel SGX enclaves, SMM (โหมดการจัดการระบบ), พื้นที่หน่วยความจำของเคอร์เนล OS และเครื่องเสมือนในระบบเวอร์ชวลไลเซชัน ต่างจากการโจมตีเดิมที่เสนอในปี 2018 ลางบอกเหตุ ตัวแปรใหม่ไม่ได้เฉพาะเจาะจงกับโปรเซสเซอร์ Intel และส่งผลต่อ CPU จากผู้ผลิตรายอื่น เช่น ARM, IBM และ AMD นอกจากนี้ เวอร์ชันใหม่ไม่ต้องการประสิทธิภาพสูง และการโจมตีสามารถทำได้แม้จะใช้งาน JavaScript และ WebAssembly ในเว็บเบราว์เซอร์ก็ตาม

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

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

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

คุณลักษณะที่ระบุยังเปิดความเป็นไปได้ในการสร้างการโจมตีใหม่ที่มุ่งเป้าไปที่กระบวนการแปลที่อยู่เสมือนเป็นที่อยู่ทางกายภาพในสภาพแวดล้อมที่แยกจากกัน และระบุที่อยู่และข้อมูลที่จัดเก็บไว้ในการลงทะเบียน CPU ในการสาธิต นักวิจัยได้แสดงให้เห็นถึงความเป็นไปได้ในการใช้เอฟเฟกต์ที่ระบุเพื่อดึงข้อมูลจากกระบวนการหนึ่งไปยังอีกกระบวนการหนึ่งด้วยประสิทธิภาพประมาณ 10 บิตต่อวินาทีบนระบบที่ใช้ CPU Intel Core i7-6500U ความเป็นไปได้ที่จะรั่วไหลเนื้อหาการลงทะเบียนจากวงล้อม Intel SGX ก็แสดงให้เห็นเช่นกัน (ใช้เวลา 32 นาทีในการกำหนดค่า 64 บิตที่เขียนไปยังการลงทะเบียน 15 บิต) การโจมตีบางประเภทปรากฏว่าเป็นไปได้ที่จะนำไปใช้ใน JavaScript และ WebAssembly ตัวอย่างเช่น สามารถระบุที่อยู่ทางกายภาพของตัวแปร JavaScript และเติมรีจิสเตอร์ 64 บิตด้วยค่าที่ควบคุมโดยผู้โจมตี

หากต้องการบล็อกการโจมตี Foreshadow ผ่านแคช L3 วิธีการป้องกัน Spectre-BTB (Branch Target Buffer) ที่นำมาใช้ในชุดแพทช์ retpoline นั้นมีประสิทธิภาพ ดังนั้น นักวิจัยจึงเชื่อว่ามีความจำเป็นที่จะต้องปล่อยให้ retpoline เปิดใช้งานได้แม้ในระบบที่มี CPU ใหม่ซึ่งมีการป้องกันช่องโหว่ที่ทราบอยู่แล้วในกลไกการดำเนินการเก็งกำไรของ CPU ในเวลาเดียวกันตัวแทนของ Intel ระบุว่าพวกเขาไม่ได้วางแผนที่จะเพิ่มมาตรการป้องกันเพิ่มเติมสำหรับ Foreshadow ให้กับโปรเซสเซอร์และพิจารณาว่าเพียงพอที่จะรวมการป้องกันการโจมตี Spectre V2 และ L1TF (Foreshadow)

ที่มา: opennet.ru

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