ทุกคนมันโพสอะไรไม่ต้องไปสนใจ ปล่อยให้มันคุยคนเดียวไป
Announcement
Collapse
No announcement yet.
พบช่องโหว่ใหม่ RIDL ร้ายแรงกว่า Intel ว่า การปิด Hyper-Threading ไม่ได้ช่วยแต่อย่างใด
Collapse
X
-
Originally posted by Botvinnik View Post9590 เทพสุดครับไม่โดน Ryzenfall
จากการการโจมตีแบบ FLUSH+RELOAD อันนี้โดนได้ทุกตัว intel amd arm
เพราะทุกตัวคำสั่ง clflush ที่มีไว้เครียคำสั่ง process ใน L1L2L3 ทิ้ง
ปกติการโหลดข้อมูลจาก ram มันจะเป็นแบบ ลบ ->รอ ->โหลดใหม่-จับเวลาที่ใช้
จะทำให้เราทราบว่าตัวprocessที่กำลังทำงานอยู่ใช้อะไรร่วมกับเราบน Cache L1L2L3 บ้าง ด้วย “การจับเวลา” หรือ speculative execution
แต่มันอาศัยช่องโหว่ ข้ามการ ตรวจสอบขอบเขตหน่วยความจำ ทำให้สามารถอ่านหน่วยความจำข้อมูลส่วนอื่นในcpuได้วิธีหลอกใช้งานก็เช่น
(ตัวอย่าง code ง่ายๆ)
if (x < your_limit) y = A2[A1[x] * 1024];
สมมุติว่า เป้าหมายคือ A1[] และค่าของ your_limit ไม่อยู่ใน cache
ตามปกติเวลาเทียบ x <your_limit ต้องfetch your_limit จาก memory เสร็จก่อนถึงจะรู้ว่าต้องทำใน if ไหม
ระหว่างรอระบบ speculation(จับเวลา) จะทำการ predict ว่ามันน่าจะ true หรือ false
ถ้า predictเดาว่า true ก็จะเริ่ม fetch memory ของ A1[x] ทันที
หาก A1[x] นั้นอยู่ใน cache ก็เป็นไปได้สูงที่ในส่วน speculation จะได้ค่า A1[x] ก่อน your_limit
และเริ่มทำ A[x] * 1024 ซึ่งไม่ต้องยุ่งกับ memory ก็จะทำเร็ว
ดังนั้นก็จะทำต่อ และเริ่ม fetch memory ลงมาใน Cache ของ A2[A1[x] * 1024] ทั้งๆที่การ compare x กับ your_limit ยังไม่เสร็จ
สรุปคือ speculative เมื่อเจอ branch condition ก็ predict เอาถ้าถูก ก็ commit ผลลัพธ์ โดยไม่ต้อง execute แล้ว
ผมถึงบอก cpu ตัวไหนมี cache มีการprocess โดนหมดครับ
Comment
Comment