ลอส นักวิจัยของ Bitdefender ได้ระบุช่องโหว่ใหม่ ในกลไกสำหรับการดำเนินการคำสั่งเชิงคาดเดาในโปรเซสเซอร์สมัยใหม่ ที่ได้รับชื่อ SWAPGS คำสั่งที่เกี่ยวข้องกับชื่อของคำสั่งโปรเซสเซอร์ที่ทำให้เกิดปัญหา
ช่องโหว่ อนุญาตให้ผู้โจมตีที่ไม่มีสิทธิ์ตรวจสอบเนื้อหาของพื้นที่หน่วยความจำเคอร์เนล หรือใช้เครื่องเสมือน ปัญหานี้ได้รับการยืนยันบนโปรเซสเซอร์ Intel (x86_64) และบางส่วนส่งผลกระทบต่อโปรเซสเซอร์ AMD ซึ่งเวกเตอร์การโจมตีหลักไม่ปรากฏขึ้น
วิธีการป้องกันช่องโหว่ Spectre และ Meltdown ที่ใช้ก่อนหน้านี้ไม่ได้ป้องกันการโจมตี SWAPGS โดยใช้โปรเซสเซอร์ Intel แต่มีการเสนอโซลูชันสำหรับ Linux, ChromeOS, Android และ Windows แล้ว
ช่องโหว่นี้เป็นของคลาส Spectre v1 และขึ้นอยู่กับแนวคิดในการดึงข้อมูลจากแคชของตัวประมวลผลที่ยังคงอยู่หลังจากการดำเนินการคำสั่งเชิงคาดเดา
บล็อกการคาดคะเนการแปลงของซีพียูสมัยใหม่ใช้การดำเนินการเชิงรุกของคำสั่งบางคำสั่งซึ่งมีแนวโน้มที่จะดำเนินการมากขึ้นเพื่อปรับปรุงประสิทธิภาพ แต่ไม่ต้องรอการคำนวณปัจจัยทั้งหมดที่กำหนดการดำเนินการ (ตัวอย่างเช่นเมื่อมีคำแนะนำ ยังไม่ได้คำนวณเงื่อนไขการเปลี่ยนแปลงหรือพารามิเตอร์การเข้าถึง)
หากไม่ได้รับการยืนยันการคาดการณ์โปรเซสเซอร์จะละทิ้งผลลัพธ์ของการรันแบบคาดเดา แต่ข้อมูลที่ประมวลผลระหว่างการรันจะถูกแคชโดยโปรเซสเซอร์และสามารถกู้คืนได้โดยใช้วิธีการเพื่อกำหนดเนื้อหาของแคชในแชนเนล จากบุคคลที่สามที่วิเคราะห์การเปลี่ยนแปลงเวลาในการเข้าถึงข้อมูลที่แคชและไม่ได้แคช
เกี่ยวกับ SWAPGS
ความไม่ชอบมาพากลของการโจมตีครั้งใหม่คือการใช้การรั่วไหลที่เกิดขึ้นระหว่างการดำเนินการเชิงคาดเดาของคำสั่ง SWAPGS ซึ่งใช้ในระบบปฏิบัติการเพื่อแทนที่ค่าทะเบียน GS เมื่อการควบคุมถูกโอนจากพื้นที่ผู้ใช้ไปยังเคอร์เนลของระบบปฏิบัติการ (ค่า GS ที่ใช้ในพื้นที่ผู้ใช้จะถูกแทนที่ด้วยค่าที่ใช้ในการดำเนินการเคอร์เนล) .
เคอร์เนล Linux ใน GS เก็บตัวชี้ per_cpuซึ่งใช้เพื่อเข้าถึงข้อมูลเคอร์เนลและ ชี้ไปที่ TLS (Thread Local Storage) ในพื้นที่ผู้ใช้
หากต้องการยกเว้นการเรียกใช้คำสั่ง SWAPGS ซ้ำสองครั้งหลังจากการเข้าถึงเคอร์เนลซ้ำจากพื้นที่เคอร์เนลหรือเมื่อเรียกใช้โค้ดที่ไม่ต้องการการเปลี่ยนทะเบียน GS การตรวจสอบและการเปลี่ยนเงื่อนไขจะดำเนินการก่อนคำสั่ง
กลไกการดำเนินการเก็งกำไรนำหน้าการเรียกใช้รหัสด้วยคำสั่ง SWAPGS โดยไม่ต้องรอผลการตรวจสอบและหากสาขาที่เลือกไม่ได้รับการยืนยันระบบจะยกเลิกผลลัพธ์นั้น
ดังนั้น สถานการณ์อาจเกิดขึ้นเมื่อมีการเลือกสาขาที่ระบุการดำเนินการของ SWAPGS โดยเฉพาะแต่ในระหว่างการดำเนินการแบบเก็งกำไรค่าของ GS register จะถูกเปลี่ยนโดยคำสั่ง SWAPGS และจะใช้ในการดำเนินการที่ขึ้นกับหน่วยความจำที่แคชไว้ใน CPU
นักวิจัยเสนอสถานการณ์การโจมตีสองแบบ ซึ่งมีการเตรียมต้นแบบการใช้ประโยชน์
- สถานการณ์แรกขึ้นอยู่กับสถานการณ์ที่คำสั่ง SWAPGS ไม่ได้ถูกดำเนินการอย่างเจาะจงแม้ว่าจะใช้ในการดำเนินการจริงและสถานการณ์ที่สองนั้นตรงกันข้ามเมื่อคำสั่ง SWAPGS ถูกดำเนินการอย่างเจาะจงแม้ว่าจะไม่ควรทำก็ตาม
- สำหรับแต่ละสถานการณ์มีตัวเลือกการดำเนินการสองทาง: ผู้โจมตีสามารถกำหนดค่าในที่อยู่เฉพาะในพื้นที่แกนกลางและผู้โจมตีสามารถค้นหาค่าเฉพาะในที่อยู่แบบสุ่มในแกนกลางได้
โซลูชันนี้ต้องการการติดตั้งการอัพเดตเคอร์เนลทั้งในสภาพแวดล้อมโฮสต์และเกสต์ตามด้วยการรีบูตระบบ หากต้องการปิดใช้งานการป้องกันใน Linux คุณสามารถใช้ตัวเลือก "nospectre_v1" ซึ่งจะปิดใช้มาตรการเพื่อปิดกั้นช่องโหว่ SWAPGS ด้วย
โซลูชันนี้พร้อมใช้งานเป็นแพตช์สำหรับเคอร์เนล Linuxซึ่งรวมอยู่แล้วในเวอร์ชัน 4.19.65, 5.2.7, 4.14.137, 4.9.188 และ 4.4.188 ในขณะที่การกระจาย Linux ที่แตกต่างกันการแก้ไขที่เกี่ยวข้องจะมาถึงในช่วงเวลานี้และสัปดาห์ถัดไป .