ทีมนักวิจัยจากมหาวิทยาลัย Vrije Universiteit Amsterdam ได้ค้นพบช่องโหว่ใหม่ในสถาปัตยกรรมไมโครของโปรเซสเซอร์ Intel และ ARM ช่องโหว่นี้เป็นรูปแบบที่ขยายเพิ่มเติมของ Spectre-v2 ซึ่งอนุญาตให้หลีกเลี่ยงกลไกการป้องกัน eIBRS และ CSV2 ที่เพิ่มเข้ามาในโปรเซสเซอร์ ช่องโหว่นี้มีชื่อเรียกหลายชื่อ ได้แก่ BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) และ Spectre-BHB (CVE-2022-23960) ซึ่งอธิบายถึงลักษณะที่แตกต่างกันของปัญหาเดียวกัน (BHI คือการโจมตีที่ส่งผลกระทบต่อระดับสิทธิ์ที่แตกต่างกัน เช่น กระบวนการของผู้ใช้และเคอร์เนล ในขณะที่ BHB คือการโจมตีที่ระดับสิทธิ์เดียว เช่น eBPF JIT และเคอร์เนล)
นักวิจัยได้สาธิตช่องโหว่ที่ใช้งานได้จริง ซึ่งอนุญาตให้ดึงข้อมูลใดๆ ก็ได้จากหน่วยความจำเคอร์เนลจากพื้นที่ผู้ใช้ ตัวอย่างเช่น พวกเขาสาธิตวิธีการใช้ช่องโหว่ที่เตรียมไว้เพื่อดึงสตริงที่มีแฮชรหัสผ่านของผู้ใช้ root ซึ่งโหลดมาจากไฟล์ /etc/shadow จากบัฟเฟอร์ของเคอร์เนล ช่องโหว่นี้แสดงให้เห็นถึงความเป็นไปได้ในการใช้ประโยชน์จากช่องโหว่ภายในระดับสิทธิ์เดียว (การโจมตีจากเคอร์เนลไปยังเคอร์เนล) โดยใช้โปรแกรม eBPF ที่ผู้ใช้ดาวน์โหลด นอกจากนี้ยังสามารถใช้แกดเจ็ต Spectre ที่มีอยู่ ซึ่งเป็นลำดับคำสั่งที่นำไปสู่การดำเนินการคำสั่งแบบคาดการณ์ล่วงหน้า แทน eBPF ได้อีกด้วย

ช่องโหว่นี้ส่งผลกระทบต่อโปรเซสเซอร์ Intel รุ่นปัจจุบันส่วนใหญ่ ยกเว้นตระกูล Atom สำหรับโปรเซสเซอร์ ARM ปัญหานี้ส่งผลกระทบต่อ Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 และอาจรวมถึงชิป Cortex-R บางรุ่นด้วย การวิจัยชี้ให้เห็นว่าโปรเซสเซอร์ AMD ไม่ได้รับผลกระทบจากช่องโหว่นี้ มีการเสนอวิธีการแก้ไขด้วยซอฟต์แวร์หลายวิธี ซึ่งสามารถใช้งานได้จนกว่าจะมีการนำการป้องกันด้วยฮาร์ดแวร์มาใช้ใน CPU รุ่นอนาคต
เพื่อป้องกันการโจมตีผ่านระบบย่อย eBPF ขอแนะนำให้ปิดใช้งานความสามารถของผู้ใช้ที่ไม่มีสิทธิ์ในการโหลดโปรแกรม eBPF โดยค่าเริ่มต้น โดยการเขียนค่า 1 ลงในไฟล์ "/proc/sys/kernel/unprivileged_bpf_disabled" หรือเรียกใช้คำสั่ง "sysctl -w kernel.unprivileged_bpf_disabled=1" เพื่อป้องกันการโจมตีผ่าน gadget ขอแนะนำให้ใช้คำสั่ง LFENCE ในส่วนของโค้ดที่อาจนำไปสู่การประมวลผลแบบคาดการณ์ล่วงหน้า เป็นที่น่าสังเกตว่าการกำหนดค่าเริ่มต้นของระบบปฏิบัติการส่วนใหญ่ Linux มาตรการรักษาความปลอดภัยที่จำเป็นได้ถูกนำมาใช้แล้ว ซึ่งเพียงพอที่จะบล็อกการโจมตี eBPF ที่นักวิจัยได้สาธิตให้เห็น นอกจากนี้ คำแนะนำของ Intel ในการปิดใช้งานการเข้าถึง eBPF โดยไม่ได้รับสิทธิ์พิเศษ ก็ถูกนำไปใช้เป็นค่าเริ่มต้นตั้งแต่ระดับเคอร์เนลแล้ว Linux 5.16 และจะถูกนำไปใช้กับสาขาเวอร์ชันก่อนหน้าด้วย
โดยหลักการแล้ว BHI เป็นเวอร์ชันที่ขยายเพิ่มเติมของการโจมตี Spectre-v2 ซึ่งหลีกเลี่ยงการป้องกันเพิ่มเติม (Intel eIBRS และ Arm CSV2) และทำให้ข้อมูลรั่วไหลโดยการแทนที่ค่าลงใน Branch History Buffer ซึ่งเป็นบัฟเฟอร์ประวัติการแตกแขนงแบบทั่วโลกที่ใช้ใน CPU เพื่อปรับปรุงความแม่นยำในการคาดการณ์การแตกแขนงโดยคำนึงถึงประวัติการแตกแขนงในอดีต การโจมตีนี้ ผ่านการจัดการประวัติการแตกแขนง จะสร้างเงื่อนไขสำหรับการคาดการณ์การแตกแขนงที่ผิดพลาดและการดำเนินการแบบคาดการณ์ล่วงหน้าของคำสั่งที่จำเป็น ซึ่งผลลัพธ์จะถูกแคชไว้
ยกเว้นการใช้ Branch History Buffer แทน Branch Target Buffer แล้ว การโจมตีแบบใหม่นี้เหมือนกับ Spectre-v2 ทุกประการ เป้าหมายของผู้โจมตีคือการสร้างเงื่อนไขเพื่อให้แอดเดรสที่ใช้ระหว่างการดำเนินการแบบคาดการณ์ล่วงหน้าถูกดึงมาจากพื้นที่ข้อมูลเป้าหมาย หลังจากดำเนินการกระโดดแบบทางอ้อมแบบคาดการณ์ล่วงหน้าแล้ว แอดเดรสการกระโดดที่อ่านจากหน่วยความจำจะยังคงอยู่ในแคช ซึ่งสามารถเรียกใช้ได้โดยใช้วิธีการตรวจสอบเนื้อหาแคชวิธีใดวิธีหนึ่งโดยอาศัยการวิเคราะห์ความแปรผันของเวลาในการเข้าถึงระหว่างข้อมูลที่อยู่ในแคชและข้อมูลที่ไม่ได้อยู่ในแคช
ที่มา: opennet.ru
