ช่องโหว่ใหม่สองช่องโหว่ใน eBPF อนุญาตให้มีการป้องกันการเลี่ยงผ่าน Spectre 4

โลโก้ Spectre

ล่าสุดมีข่าวดังกล่าว พบช่องโหว่ XNUMX จุด ในเคอร์เนล linux that อนุญาตให้ใช้ ระบบย่อย eBPF เพื่อเลี่ยงการป้องกันการโจมตี Spectre 4 (SSB, บายพาสร้านค้าเก็งกำไร). มันถูกกล่าวว่าโดยใช้โปรแกรม BPF ที่ไม่มีสิทธิพิเศษ ผู้โจมตีสามารถสร้างเงื่อนไขสำหรับการดำเนินการเชิงคาดเดาของการดำเนินการบางอย่างและกำหนดเนื้อหาของพื้นที่โดยพลการของหน่วยความจำเคอร์เนล

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

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

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

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

โปรดทราบว่าแต่ละหัวข้อสามารถใช้ในทางที่ผิดโดยอิสระขึ้นอยู่กับ ในข้อผิดพลาดที่ไม่ทับซ้อนกัน

มีการแบ่งปัน PoC แบบส่วนตัวกับผู้ดูแลระบบย่อย BPF ถึง ช่วยในการพัฒนาการจัด

ช่องโหว่แรก CVE-2021-35477: เกิดจากข้อบกพร่องในกลไกการตรวจสอบความถูกต้องของโปรแกรม BPF. เพื่อป้องกันการโจมตีของ Spectre 4 ผู้ตรวจสอบจะเพิ่มคำสั่งเพิ่มเติมหลังจากการดำเนินการบันทึกในหน่วยความจำที่อาจสร้างปัญหาได้ โดยเก็บค่าศูนย์ไว้เพื่อชดเชยการติดตามของการดำเนินการก่อนหน้า

สันนิษฐานว่าการดำเนินการเขียนเป็นศูนย์จะเร็วมากและบล็อกการดำเนินการเก็งกำไรเนื่องจากขึ้นอยู่กับตัวชี้เฟรมสแต็ก BPF เท่านั้น แต่ในความเป็นจริง มันเป็นไปได้ที่จะสร้างเงื่อนไขที่คำสั่งที่นำไปสู่การดำเนินการเก็งกำไรมีเวลาดำเนินการก่อนการดำเนินการบันทึกเชิงป้องกัน

ช่องโหว่ที่สอง CVE-2021-3455: เกี่ยวข้องกับความจริงที่ว่าเมื่อตัวตรวจสอบ BPF ตรวจพบการดำเนินการบันทึกที่อาจเป็นอันตรายในหน่วยความจำพื้นที่ที่ไม่ได้กำหนดค่าเริ่มต้นของสแต็ก BPF ซึ่งเป็นการดำเนินการเขียนครั้งแรกที่ไม่ได้รับการป้องกัน จะถูกละเว้น

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

โซลูชันที่มีอยู่นำเทคนิคการบรรเทาผลกระทบไปใช้อีกครั้งเพื่อดำเนินการต่อ แนะนำโดยผู้จำหน่าย CPU และมีให้ในเคอร์เนล mainline ที่เก็บ git

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

ปัญหาได้รับการแก้ไขแล้วในรูปแบบของแพตช์ ซึ่งจะรวมอยู่ในการอัปเดตเคอร์เนล Linux ครั้งต่อไป ดังนั้นการอัปเดตสำหรับรุ่นต่างๆ จะเริ่มมาถึงในอีกไม่กี่วันข้างหน้า

Fuente: https://www.openwall.com/


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

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

*

*

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