พวกเขาพบช่องโหว่ในระบบย่อย eBPF ที่อนุญาตให้เรียกใช้โค้ดในระดับเคอร์เนล 

เมื่อเร็ว ๆ นี้ เราแบ่งปันข่าวสารเกี่ยวกับความสนใจที่ Microsoft ได้แสดงไว้ที่นี่ในบล็อก เกี่ยวกับระบบย่อย eBPF เนื่องจากได้สร้างระบบย่อยสำหรับ Windows ซึ่งใช้วิธีการวิเคราะห์แบบคงที่การตีความนามธรรมซึ่งเมื่อเทียบกับตัวตรวจสอบ eBPF สำหรับ Linux แสดงให้เห็นถึงอัตราผลบวกที่ผิดพลาดที่ต่ำกว่าสนับสนุนการวิเคราะห์แบบวนซ้ำและให้ความสามารถในการปรับขนาดได้ดี

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

และนั่นคือการพูดคุยเกี่ยวกับเรื่องนี้เมื่อไม่นานมานี้มีการเปิดเผยว่า มีการระบุช่องโหว่ใหม่สองช่อง ในระบบย่อย eBPF ซึ่งช่วยให้คุณสามารถเรียกใช้ไดรเวอร์ภายในเคอร์เนล Linux ในเครื่องเสมือน JIT พิเศษ

ช่องโหว่ทั้งสองให้โอกาสในการรันโค้ดด้วยสิทธิ์เคอร์เนล ภายนอกเครื่องเสมือน eBPF ที่แยกได้

ข้อมูล เกี่ยวกับปัญหา เผยแพร่โดยทีม Zero Day Initiative ซึ่งดำเนินการแข่งขัน Pwn2Own ซึ่งในปีนี้มีการแสดงการโจมตีสามครั้งบน Ubuntu Linux ซึ่งก่อนหน้านี้มีการใช้ช่องโหว่ที่ไม่รู้จัก (หากช่องโหว่ใน eBPF เกี่ยวข้องกับการโจมตีเหล่านี้จะไม่มีการรายงาน)

การติดตามขีด จำกัด eBPF ALU32 สำหรับการดำเนินการแบบบิต (AND, OR และ XOR) ไม่ได้อัปเดตขีด จำกัด 32 บิต

Manfred Paul (@_manfp) แห่งทีม RedRocket CTF (@redrocket_ctf) ที่ทำงานร่วมกับเขาการริเริ่ม Zero Day ของ Trend Micro ค้นพบว่าช่องโหว่นี้ สามารถแปลงเป็นการอ่านและเขียนนอกขอบเขตในเคอร์เนล นี้ได้รับ รายงานเป็น ZDI-CAN-13590 และกำหนด CVE-2021-3490

  • CVE-2021-3490: ช่องโหว่นี้เกิดจากการไม่มีการตรวจสอบนอกขอบเขตสำหรับค่า 32 บิตเมื่อดำเนินการในระดับบิต AND, OR และ XOR บน eBPF ALU32 ผู้โจมตีสามารถใช้ประโยชน์จากข้อบกพร่องนี้เพื่ออ่านและเขียนข้อมูลนอกขอบเขตของบัฟเฟอร์ที่จัดสรร ปัญหาเกี่ยวกับการดำเนินการ XOR เกิดขึ้นตั้งแต่เคอร์เนล 5.7-rc1 และ AND และ OR ตั้งแต่ 5.10-rc1
  • CVE-2021-3489: ช่องโหว่ดังกล่าวเกิดจากข้อบกพร่องในการใช้งานบัฟเฟอร์ของวงแหวนและเกี่ยวข้องกับการที่ฟังก์ชัน bpf_ringbuf_reserve ไม่ได้ตรวจสอบความเป็นไปได้ที่ขนาดของพื้นที่หน่วยความจำที่จัดสรรจะเล็กกว่าขนาดจริงของบัฟเฟอร์ ringbuf ปัญหานี้เห็นได้ชัดตั้งแต่รุ่น 5.8-rc1

นอกจากนี้ เรายังสามารถสังเกตช่องโหว่อื่นในเคอร์เนลลินุกซ์: CVE-2021-32606 ซึ่ง อนุญาตให้ผู้ใช้ภายในสามารถยกระดับสิทธิ์ของตนไปที่ระดับรูท. ปัญหาเกิดขึ้นตั้งแต่เคอร์เนลลินุกซ์ 5.11 และเกิดจากสภาวะการแย่งชิงในการใช้โปรโตคอล CAN ISOTP ซึ่งทำให้สามารถเปลี่ยนพารามิเตอร์การโยงซ็อกเก็ตได้เนื่องจากไม่มีการกำหนดค่าการล็อกที่เหมาะสมใน isotp_setsockopt () เมื่อแฟล็กถูกประมวลผล CAN_ISOTP_SF_BROADCAST.

เมื่อ ซ็อกเก็ต ISOTP ยังคงผูกกับซ็อกเก็ตตัวรับซึ่งสามารถใช้โครงสร้างที่เกี่ยวข้องกับซ็อกเก็ตได้ต่อไปหลังจากที่แคชถูกปลดปล่อย (ใช้งานได้ฟรีเนื่องจากการเรียกโครงสร้าง isotp_sock ออกแล้วเมื่อฉันโทรsotp_rcv(). ด้วยการจัดการข้อมูลคุณสามารถแทนที่ตัวชี้ไปยังฟังก์ชันได้ sk_error_report () และรันโค้ดของคุณที่ระดับเคอร์เนล

สถานะของการแก้ไขสำหรับช่องโหว่ในการกระจายสามารถติดตามได้ในหน้าเหล่านี้: อูบุนตู, debian, RHEL, Fedora, SUSE, โค้ง).

การแก้ไขยังพร้อมใช้งานเป็นแพตช์ (CVE-2021-3489 และ CVE-2021-3490) การใช้ประโยชน์จากปัญหาขึ้นอยู่กับความพร้อมของการเรียกไปยังระบบ eBPF สำหรับผู้ใช้ ตัวอย่างเช่นในคอนฟิกูเรชันดีฟอลต์บน RHEL การใช้ประโยชน์จากช่องโหว่ต้องการให้ผู้ใช้มีสิทธิ์ CAP_SYS_ADMIN

ในที่สุด หากคุณต้องการทราบข้อมูลเพิ่มเติม คุณสามารถตรวจสอบรายละเอียด ในลิงค์ต่อไปนี้.


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

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

*

*

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