นักวิจัยจาก Free University of Amsterdam ทำให้เป็นที่รู้จัก เพิ่งพบหนึ่ง ช่องโหว่ใหม่ที่เป็นเวอร์ชันขยายของช่องโหว่ Spectre-v2 บนโปรเซสเซอร์ Intel และ ARM
ช่องโหว่ใหม่นี้ซึ่ง ได้บวชเป็นภิกษุ (ประวัติสาขาฉีด, CVE-2022-0001), bhb (บัฟเฟอร์ประวัติสาขา, CVE-2022-0002) และ Spectre-BHB (CVE-2022-23960) มีลักษณะเฉพาะโดยอนุญาตให้มีการเพิ่มกลไกการป้องกัน eIBRS และ CSV2 ลงในโปรเซสเซอร์
มีการอธิบายช่องโหว่ในลักษณะที่แตกต่างกันของปัญหาเดียวกัน เนื่องจาก BHI เป็นการโจมตีที่ส่งผลต่อระดับสิทธิ์ที่แตกต่างกัน เช่น กระบวนการของผู้ใช้และเคอร์เนล ในขณะที่ BHB เป็นการโจมตีที่ระดับสิทธิ์เดียวกัน เช่น eBPF JIT และ เคอร์เนล
เกี่ยวกับช่องโหว่
ตามแนวคิด BHI เป็นตัวแปรเพิ่มเติมของการโจมตี Spectre-v2ซึ่งในการเลี่ยงการป้องกันเพิ่มเติม (Intel eIBRS และ Arm CSV2) และจัดการการรั่วไหลของข้อมูล การแทนที่ค่าในบัฟเฟอร์ด้วยประวัติสาขาทั่วโลก (Branch History Buffer) ซึ่งใช้ใน CPU เพื่อปรับปรุงความแม่นยำในการทำนายสาขา โดยคำนึงถึงประวัติการเปลี่ยนผ่านในอดีต
ในระหว่างการโจมตี ผ่านการปรุงแต่งที่มีประวัติการเปลี่ยนแปลง เงื่อนไขถูกสร้างขึ้นสำหรับการทำนายการเปลี่ยนแปลงและการเก็งกำไรที่ไม่ถูกต้อง ของคำแนะนำที่จำเป็นซึ่งผลลัพธ์จะถูกฝากไว้ในแคช
ยกเว้นการใช้บัฟเฟอร์ประวัติเวอร์ชันแทนบัฟเฟอร์เป้าหมายเวอร์ชัน การโจมตีใหม่จะเหมือนกับ Spectre-v2 หน้าที่ของผู้โจมตีคือการสร้างเงื่อนไขดังกล่าวว่าที่อยู่ เมื่อดำเนินการเก็งกำไร ข้อมูลจะถูกนำมาจากพื้นที่ของข้อมูลที่กำหนด
หลังจากดำเนินการข้ามทางอ้อมแบบเก็งกำไรแล้ว ที่อยู่การข้ามที่อ่านจากหน่วยความจำจะยังคงอยู่ในแคช หลังจากนั้นหนึ่งในวิธีในการพิจารณาเนื้อหาของแคชสามารถใช้เพื่อดึงข้อมูลดังกล่าวโดยอิงจากการวิเคราะห์การเปลี่ยนแปลงของเวลาในการเข้าถึงแคชและไม่ได้แคช ข้อมูล.
นักวิจัยได้แสดงให้เห็นถึงการใช้ประโยชน์จากการทำงานที่อนุญาตให้ผู้ใช้พื้นที่เพื่อดึงข้อมูลโดยพลการจากหน่วยความจำเคอร์เนล
ตัวอย่างเช่น มันแสดงให้เห็นว่า การใช้ช่องโหว่ที่เตรียมไว้ เป็นไปได้ที่จะดึงสตริงที่มีแฮชของรหัสผ่านของผู้ใช้ root จากบัฟเฟอร์เคอร์เนล โหลดจากไฟล์ /etc/shadow
การบุกรุกแสดงให้เห็นถึงความสามารถในการใช้ประโยชน์จากช่องโหว่ภายในระดับสิทธิ์เดียว (การโจมตีเคอร์เนลถึงเคอร์เนล) โดยใช้โปรแกรม eBPF ที่ผู้ใช้โหลด ความเป็นไปได้ของการใช้แกดเจ็ต Spectre ที่มีอยู่ในโค้ดเคอร์เนล สคริปต์ที่นำไปสู่การดำเนินการตามคำสั่งแบบคาดเดา ก็ไม่ได้ตัดออกไปเช่นกัน
ช่องโหว่ ปรากฏบนโปรเซสเซอร์ Intel ปัจจุบันส่วนใหญ่ ยกเว้นโปรเซสเซอร์ตระกูล Atom และโปรเซสเซอร์ ARM หลายตัว
จากการวิจัยพบว่าช่องโหว่นี้ไม่ปรากฏบนโปรเซสเซอร์ AMD ในการแก้ปัญหาได้มีการเสนอวิธีการหลายวิธี ซอฟต์แวร์เพื่อบล็อกช่องโหว่ซึ่งสามารถใช้ได้ก่อนที่จะมีการป้องกันฮาร์ดแวร์ในซีพียูรุ่นต่อไปในอนาคต
เพื่อป้องกันการโจมตีผ่านระบบย่อย eBPF sขอแนะนำให้ปิดการใช้งานโดยค่าเริ่มต้นความสามารถในการโหลดโปรแกรม eBPF โดยผู้ใช้ที่ไม่มีสิทธิพิเศษโดยการเขียน 1 ลงในไฟล์ “/proc/sys/kernel/unprivileged_bpf_disabled” หรือโดยการรันคำสั่ง “sysctl -w kernel .unprivileged_bpf_disabled=1”
เพื่อป้องกันการโจมตีผ่านอุปกรณ์ ขอแนะนำให้ใช้คำสั่ง LFENCE ในส่วนของรหัสที่อาจนำไปสู่การเก็งกำไร เป็นที่น่าสังเกตว่าการกำหนดค่าเริ่มต้นของลีนุกซ์รุ่นส่วนใหญ่มีมาตรการป้องกันที่จำเป็นเพียงพอที่จะป้องกันการโจมตี eBPF ที่แสดงโดยนักวิจัย
คำแนะนำของ Intel ในการปิดใช้งานการเข้าถึง eBPF โดยไม่ได้รับสิทธิพิเศษนั้นยังนำไปใช้ตามค่าเริ่มต้นโดยเริ่มด้วยเคอร์เนล Linux 5.16 และจะถูกย้ายไปยังสาขาก่อนหน้า
สุดท้ายนี้ หากสนใจอยากทราบข้อมูลเพิ่มเติม สามารถเข้าไปดูรายละเอียดใน ลิงค์ต่อไปนี้