ล่าสุดมีข่าวดังกล่าว มีการระบุช่องโหว่ (CVE-2021-29154) ในระบบย่อย eBPF ซึ่งนอนุญาตให้รันการติดตามการวิเคราะห์ระบบย่อยและตัวควบคุมการรับส่งข้อมูล ทำงานภายในเคอร์เนล Linux ในเครื่องเสมือน JIT พิเศษที่ อนุญาตให้ผู้ใช้ภายในรันโค้ดของคุณที่ระดับเคอร์เนล
ตามที่นักวิจัยระบุช่องโหว่ดังกล่าวพวกเขาสามารถพัฒนาต้นแบบที่ใช้งานได้ของช่องโหว่สำหรับระบบ x86 32 บิตและ 64 บิตซึ่งผู้ใช้ที่ไม่มีสิทธิ์ใช้งานได้
ในเวลาเดียวกัน Red Hat ตั้งข้อสังเกตว่าความรุนแรงของปัญหาขึ้นอยู่กับความพร้อมของการเรียกระบบ eBPF สำหรับผู้ใช้ ตัวอย่างเช่นบน RHEL และ Linux ดิสทริบิวชันอื่น ๆ โดยค่าเริ่มต้นช่องโหว่นี้สามารถใช้ประโยชน์ได้เมื่อเปิดใช้งาน BPF JIT และผู้ใช้มีสิทธิ์ CAP_SYS_ADMIN
พบปัญหาในเคอร์เนล Linux ที่สามารถใช้ในทางที่ผิดได้
ผู้ใช้ในพื้นที่ที่ไม่ได้รับสิทธิพิเศษเพื่อเพิ่มสิทธิ์ปัญหาคือวิธีที่คอมไพเลอร์ BPF JIT คำนวณสำหรับสถาปัตยกรรมบางอย่าง
สาขาออฟเซ็ตเมื่อสร้างรหัสเครื่อง สิ่งนี้สามารถถูกทำร้ายได้
เพื่อสร้างรหัสเครื่องที่ผิดปกติและเรียกใช้ในโหมดเคอร์เนล
ที่ซึ่งขั้นตอนการควบคุมถูกแย่งชิงเพื่อเรียกใช้รหัสที่ไม่ปลอดภัย
และเป็นที่ที่พวกเขาให้รายละเอียดว่า ปัญหาเกิดจากข้อผิดพลาดที่สร้างขึ้นเมื่อคำนวณออฟเซ็ตของคำสั่งการแตกแขนง ระหว่างคอมไพเลอร์ JIT ที่สร้างรหัสเครื่อง
โดยเฉพาะอย่างยิ่งมีการกล่าวถึงว่าเมื่อสร้างคำสั่งสาขาจะไม่คำนึงถึงว่าการกระจัดอาจเปลี่ยนแปลงหลังจากผ่านขั้นตอนการปรับให้เหมาะสมดังนั้นความล้มเหลวนี้สามารถใช้เพื่อสร้างรหัสเครื่องที่ผิดปกติและดำเนินการที่ระดับเคอร์เนล .
ควรสังเกตว่า นี่ไม่ใช่ช่องโหว่เดียวในระบบย่อย eBPF ที่เป็นที่รู้จักในช่วงไม่กี่ปีที่ผ่านมา ตั้งแต่ปลายเดือนมีนาคมมีการระบุช่องโหว่อีกสองช่องในเคอร์เนล (CVE-2020-27170, CVE-2020-27171)ซึ่งให้ความสามารถในการใช้ eBPF เพื่อหลีกเลี่ยงการป้องกันช่องโหว่ระดับ Spectre ซึ่งอนุญาตให้กำหนดเนื้อหาของหน่วยความจำเคอร์เนลและส่งผลให้มีการสร้างเงื่อนไขสำหรับการดำเนินการเชิงคาดเดาของการดำเนินการบางอย่าง
การโจมตี Spectre จำเป็นต้องมีลำดับของคำสั่งที่เฉพาะเจาะจงในรหัสที่มีสิทธิพิเศษซึ่งนำไปสู่การดำเนินการคำสั่งเชิงคาดเดา ใน eBPF พบหลายวิธี เพื่อสร้างคำสั่งดังกล่าวโดยการจัดการกับโปรแกรม BPF ที่ส่งไปเพื่อดำเนินการ
- ช่องโหว่ CVE-2020-27170 เกิดจากการปรับแต่งตัวชี้ในตัวตรวจสอบ BPF ซึ่งทำให้การดำเนินการเก็งกำไรเข้าถึงพื้นที่นอกบัฟเฟอร์
- ช่องโหว่ CVE-2020-27171 เกี่ยวข้องกับจุดบกพร่องจำนวนเต็มเมื่อทำงานกับพอยน์เตอร์ซึ่งนำไปสู่การเก็งกำไรในการเข้าถึงข้อมูลที่ไม่อยู่ในบัฟเฟอร์
ปัญหาเหล่านี้ได้รับการแก้ไขแล้วในเคอร์เนลเวอร์ชัน 5.11.8, 5.10.25, 5.4.107, 4.19.182 และ 4.14.227 และรวมอยู่ในการอัปเดตเคอร์เนลสำหรับการกระจาย Linux ส่วนใหญ่ นักวิจัยได้เตรียมต้นแบบการใช้ประโยชน์ที่ช่วยให้ผู้ใช้ที่ไม่มีสิทธิ์สามารถดึงข้อมูลจากหน่วยความจำเคอร์เนลได้
สำหรับหนึ่งในวิธีแก้ปัญหานั้น เสนอภายใน Red Hat คือ:
การบรรเทา:
ปัญหานี้ไม่ส่งผลกระทบต่อระบบส่วนใหญ่ตามค่าเริ่มต้น ผู้ดูแลระบบจะต้องเปิดใช้งาน BPF JIT จึงจะได้รับผลกระทบ
สามารถปิดใช้งานได้ทันทีด้วยคำสั่ง:
# echo 0 > /proc/sys/net/core/bpf_jit_enableหรือสามารถปิดใช้งานสำหรับการบู๊ตระบบที่ตามมาทั้งหมดโดยตั้งค่าใน /etc/sysctl.d/44-bpf -jit-disabled
## start file ## net.core.bpf_jit_enable=0</em> end file ##
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม เกี่ยวกับช่องโหว่นี้คุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้
เป็นที่น่าสังเกตว่าปัญหายังคงมีอยู่จนถึงเวอร์ชัน 5.11.12 (รวม) และยังไม่ได้รับการแก้ไขในการแจกแจงส่วนใหญ่แม้ว่าจะมีการแก้ไขแล้วก็ตาม พร้อมใช้งานเป็นแพทช์