SWAPGS ช่องโหว่การดำเนินการเก็งกำไรใหม่

SWAPGS- ใช้ประโยชน์ -2

ลอส นักวิจัยของ 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 ที่แตกต่างกันการแก้ไขที่เกี่ยวข้องจะมาถึงในช่วงเวลานี้และสัปดาห์ถัดไป .


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา