ช่องโหว่ในโปรเซสเซอร์ Intel นำไปสู่การรั่วไหลของข้อมูลผ่านช่องทางของบุคคลที่สาม

กลุ่มนักวิจัยจากมหาวิทยาลัยในจีนและอเมริกาได้ระบุช่องโหว่ใหม่ในโปรเซสเซอร์ Intel ซึ่งนำไปสู่การรั่วไหลของข้อมูลเกี่ยวกับผลลัพธ์ของการดำเนินการเก็งกำไรผ่านช่องทางของบุคคลที่สาม ซึ่งสามารถใช้เช่น เพื่อจัดระเบียบช่องทางการสื่อสารที่ซ่อนอยู่ ระหว่างกระบวนการหรือตรวจจับการรั่วไหลระหว่างการโจมตี Meltdown

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

ช่องโหว่ในโปรเซสเซอร์ Intel นำไปสู่การรั่วไหลของข้อมูลผ่านช่องทางของบุคคลที่สาม

ซึ่งแตกต่างจากการโจมตีอื่นๆ ที่คล้ายกันผ่านช่องทางของบุคคลที่สาม วิธีการใหม่นี้ไม่ได้วิเคราะห์การเปลี่ยนแปลงของเวลาในการเข้าถึงข้อมูลที่แคชและไม่ได้แคช และไม่ต้องการขั้นตอนการรีเซ็ตการลงทะเบียน EFLAGS เป็นสถานะเริ่มต้น ซึ่งทำให้ยากต่อการ ตรวจจับและสกัดกั้นการโจมตี เพื่อเป็นการสาธิต นักวิจัยได้ใช้รูปแบบหนึ่งของการโจมตี Meltdown โดยใช้วิธีการใหม่ในการโจมตีเพื่อรับข้อมูลเกี่ยวกับผลลัพธ์ของปฏิบัติการคาดเดา การดำเนินการของวิธีการจัดการการรั่วไหลของข้อมูลระหว่างการโจมตี Meltdown ได้รับการสาธิตเรียบร้อยแล้วบนระบบที่มีซีพียู Intel Core i7-6700 และ i7-7700 ในสภาพแวดล้อมที่มีเคอร์เนล Ubuntu 22.04 และ Linux 5.15 บนระบบที่ใช้ CPU Intel i9-10980XE การโจมตีสำเร็จเพียงบางส่วนเท่านั้น

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

ใน Meltdown เวอร์ชันคลาสสิค เนื่องจากแคชเดียวกันนี้ถูกใช้สำหรับการดำเนินการเชิงคาดเดาเช่นเดียวกับคำสั่งที่ดำเนินการตามปกติ จึงเป็นไปได้ในระหว่างการดำเนินการเชิงคาดเดาเพื่อตั้งค่าเครื่องหมายในแคชที่สะท้อนถึงเนื้อหาของแต่ละบิตในพื้นที่หน่วยความจำแบบปิด จากนั้น ในรหัสที่ดำเนินการตามปกติเพื่อกำหนดความหมายผ่านการวิเคราะห์เวลาเข้าถึงข้อมูลที่แคชและไม่ได้แคช ตัวแปรใหม่ใช้การเปลี่ยนแปลงในการลงทะเบียน EFLAGS เป็นเครื่องหมายสำหรับการรั่วไหล ในการสาธิต Covert Channel กระบวนการหนึ่งมอดูเลตข้อมูลที่ถูกส่งเพื่อเปลี่ยนเนื้อหาของรีจิสเตอร์ EFLAGS และอีกกระบวนการแยกวิเคราะห์การเปลี่ยนแปลงในการดำเนินการคำสั่ง JCC เพื่อสร้างข้อมูลที่ส่งโดยกระบวนการแรก

ที่มา: opennet.ru

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