รูปแบบใหม่ของการโจมตี BHI บนซีพียู Intel ช่วยให้สามารถหลีกเลี่ยงการป้องกันระดับเคอร์เนลได้ Linux

กลุ่มนักวิจัยจากมหาวิทยาลัย Vrije Universiteit Amsterdam ได้ค้นพบวิธีการโจมตีแบบใหม่ที่เรียกว่า "Native BHI" (CVE-2024-2201) ซึ่งช่วยให้สามารถตรวจสอบเนื้อหาหน่วยความจำเคอร์เนลบนระบบที่มีโปรเซสเซอร์ Intel ได้ Linux เมื่อทำการโจมตีในพื้นที่ผู้ใช้ หากการโจมตีนั้นใช้กับระบบเสมือน ผู้โจมตีจากระบบเกสต์สามารถตรวจสอบเนื้อหาหน่วยความจำของสภาพแวดล้อมโฮสต์หรือระบบเกสต์อื่นๆ ได้

วิธี Native BHI นำเสนอเทคนิคที่แตกต่างในการใช้ประโยชน์จากช่องโหว่ของ BHI (Branch History Injection, CVE-2022-0001) ซึ่งข้ามวิธีการป้องกันที่ใช้ก่อนหน้านี้ วิธีการโจมตี BHI ที่เสนอในปี 2022 เกี่ยวข้องกับการหาประโยชน์จากช่องโหว่ภายในระดับสิทธิ์เดียว ซึ่งการใช้ประโยชน์นี้อิงจากการเรียกใช้โปรแกรม eBPF ที่โหลดโดยผู้ใช้ในเคอร์เนล เพื่อป้องกันช่องโหว่ เพียงจำกัดการเข้าถึงการดำเนินการโค้ด eBPF สำหรับผู้ใช้ทั่วไปก็เพียงพอแล้ว

วิธีการ Native BHI ใหม่ไม่จำเป็นต้องเข้าถึง eBPF และอนุญาตให้มีการโจมตีโดยผู้ใช้ที่ไม่มีสิทธิ์จากพื้นที่ผู้ใช้ วิธีการนี้ขึ้นอยู่กับการทำงานของอุปกรณ์ที่มีอยู่ในโค้ดเคอร์เนล - ลำดับของคำสั่งที่นำไปสู่การดำเนินการตามคำสั่งแบบเก็งกำไร เพื่อค้นหาอุปกรณ์ที่เหมาะสมในเคอร์เนลชุดเครื่องมือพิเศษ InSpectre Gadget ได้รับการพัฒนาซึ่งเมื่อวิเคราะห์เคอร์เนล 6.6-rc4 ได้ระบุอุปกรณ์ 1511 Spectre และ 2105 อุปกรณ์จัดส่งเสริม


รูปแบบใหม่ของการโจมตี BHI บนซีพียู Intel ช่วยให้สามารถหลีกเลี่ยงการป้องกันระดับเคอร์เนลได้ Linux

จากอุปกรณ์ที่พบ นักวิจัยได้เตรียมช่องโหว่ที่ทำให้สามารถแยกสตริงที่มีแฮชของรหัสผ่านของผู้ใช้รูทที่โหลดจากไฟล์ /etc/shadow ออกจากเคอร์เนลได้ ความเร็วในการดึงข้อมูลจากหน่วยความจำเคอร์เนลอยู่ที่ประมาณ 3.5 KB ต่อวินาที

เล่นวิดีโอ

วิธี BHI เป็นเวอร์ชันขยายของการโจมตี Spectre-v2 ซึ่งเพื่อหลีกเลี่ยงการป้องกันเพิ่มเติม (Intel eIBRS และ Arm CSV2) และทำให้เกิดการรั่วไหลของข้อมูล ระบบจะใช้การทดแทนค่าใน Branch History Buffer ซึ่งใช้ใน CPU เพื่อปรับปรุงการคาดการณ์ การแตกแขนงความแม่นยำโดยคำนึงถึงประวัติของการเปลี่ยนแปลงในอดีต ในระหว่างการโจมตีผ่านการยักย้ายที่มีประวัติการเปลี่ยนแปลงเงื่อนไขจะถูกสร้างขึ้นสำหรับการทำนายการเปลี่ยนแปลงที่ไม่ถูกต้องและการดำเนินการตามคำแนะนำที่จำเป็นโดยคาดเดาซึ่งผลลัพธ์จะจบลงในแคช

ความแตกต่างจากการโจมตี Spectre-v2 อยู่ที่การใช้ Branch History Buffer แทน Branch Target Buffer ในการดึงข้อมูลจากหน่วยความจำ ผู้โจมตีจะต้องสร้างเงื่อนไขซึ่งเมื่อดำเนินการเก็งกำไร ที่อยู่จะถูกดึงออกจากพื้นที่ที่ต้องกำหนด หลังจากดำเนินการข้ามทางอ้อมแบบเก็งกำไร ที่อยู่การกระโดดที่อ่านจากหน่วยความจำจะยังคงอยู่ในแคช หลังจากนั้นวิธีใดวิธีหนึ่งในการกำหนดเนื้อหาของแคชสามารถใช้เพื่อดึงข้อมูลตามการวิเคราะห์การเปลี่ยนแปลงเวลาในการเข้าถึงที่แคชและไม่แคช ข้อมูล.

การใช้คำสั่ง Intel IBT (Indirect Branch Tracking) และการนำไปใช้งานในเคอร์เนลไม่ได้ป้องกันการโจมตีแบบ Native BHI Linux FineIBT เป็นกลไกการป้องกันการไหลของการทำงานแบบไฮบริด ซึ่งรวมคำสั่ง IBT ของฮาร์ดแวร์และกลไกการป้องกันซอฟต์แวร์ kCFI (Kernel Control Flow Integrity) เพื่อป้องกันการละเมิดการไหลของการทำงานปกติ (control flow) FineIBT อนุญาตให้ดำเนินการผ่านการกระโดดทางอ้อมได้ก็ต่อเมื่อการกระโดดนั้นไปยังคำสั่ง ENDBR ซึ่งอยู่ที่จุดเริ่มต้นของฟังก์ชันเท่านั้น นอกจากนี้ (คล้ายกับกลไก kCFI) จะมีการตรวจสอบค่าแฮชหลังจากนั้น เพื่อให้มั่นใจว่าตัวชี้ไม่สามารถเปลี่ยนแปลงได้

เพื่อป้องกันการโจมตีเคอร์เนลรูปแบบใหม่ Linux มีการเพิ่มการเปลี่ยนแปลงเพื่อใช้งานโหมดการป้องกันเพิ่มเติมที่ใช้การป้องกันฮาร์ดแวร์ที่ Intel เสนอ (BHI_DIS_S) หรือการป้องกันซอฟต์แวร์ทางเลือกที่ใช้ในการปกป้องไฮเปอร์ไวเซอร์ KVMนักพัฒนาไฮเปอร์ไวเซอร์ Xen ได้ออกแพทช์แก้ไขที่ใช้โหมด BHI_DIS_S ซึ่งจำกัดการคาดการณ์ตามประวัติการแตกแขนง การรองรับ BHI_DIS_S มีให้ใช้งานในโปรเซสเซอร์ตั้งแต่ Intel Alder Lake ขึ้นไป รวมถึงซีพียูเซิร์ฟเวอร์ตั้งแต่ Intel Sapphire Rapids ขึ้นไป นอกจากนี้ยังมีโหมดการป้องกันซอฟต์แวร์ที่ใช้ลำดับเพื่อล้างบัฟเฟอร์ประวัติการแตกแขนง แต่จะส่งผลให้ประสิทธิภาพลดลงอย่างเห็นได้ชัด

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster