กลุ่มนักวิจัยจากมหาวิทยาลัยเทคนิคแห่งกราซ (ออสเตรีย) และศูนย์ความมั่นคงสารสนเทศเฮล์มโฮลทซ์ (CISPA)
การโจมตี 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