ตรวจพบข้อบกพร่องในตัวรวบรวมขยะของ Linux ที่อาจนำไปสู่การยกระดับสิทธิ์ 

ช่องโหว่ของระบบ

ไม่กี่วันที่ผ่านมา Jann Horn จากทีม Google Project Zero ซึ่งก่อนหน้านี้ได้ระบุช่องโหว่ของ Spectre และ Meltdown เปิดเผยเทคนิคเจาะช่องโหว่ พบในตัวรวบรวมขยะเคอร์เนล Linux (CVE-2021-4083)

ช่องโหว่ เกิดจากสภาพการแข่งขัน เมื่อล้างตัวอธิบายไฟล์ซ็อกเก็ตยูนิกซ์ และอาจอนุญาตให้ผู้ใช้ในพื้นที่ที่ไม่ได้รับสิทธิ์เรียกใช้โค้ดของคุณที่ระดับเคอร์เนล

ปัญหา น่าสนใจเพราะกรอบเวลา ในระหว่างที่สภาพการแข่งขันเกิดขึ้น ถูกประเมินว่าเล็กเกินไป เพื่อสร้างช่องโหว่ที่แท้จริง แต่ผู้เขียนผลการศึกษาพบว่าแม้แต่จุดอ่อนที่สงสัยในขั้นต้นก็สามารถกลายเป็นแหล่งที่มาของการโจมตีจริงได้หากผู้สร้างช่องโหว่มีทักษะและเวลาที่จำเป็น

ยานน์ ฮอร์น แสดงให้เห็นว่าด้วยความช่วยเหลือของการจัดการที่มีลวดลายสามารถลดสภาพได้อย่างไร เหตุการณ์การแข่งขันที่เกิดขึ้นเมื่อเรียกใช้ฟังก์ชัน close() และ fget() พร้อมกันไปยังช่องโหว่ที่ใช้งานหลังจากใช้งานได้ฟรีอย่างเต็มที่ และเข้าถึงโครงสร้างข้อมูลที่ว่างอยู่แล้วภายในเคอร์เนล

สภาพการแข่งขันเกิดขึ้น ระหว่างขั้นตอนการปิด file descriptor ในขณะที่เรียกใช้ฟังก์ชัน close() และ fget() พร้อมกัน การเรียกเพื่อปิด () สามารถดำเนินการได้ก่อนที่จะดำเนินการ fget() ซึ่งจะทำให้ตัวรวบรวมรายการสับสน ไม่ได้ใช้เพราะตามการ refcount โครงสร้างไฟล์จะไม่มีการอ้างอิงภายนอก แต่จะยังคงแนบมากับ file descriptor นั่นคือตัวรวบรวมขยะจะถือว่ามีการเข้าถึงโครงสร้างแบบเอกสิทธิ์เฉพาะบุคคล แต่ในความเป็นจริงในช่วงเวลาสั้น ๆ รายการที่เหลือในตาราง file descriptor จะยังคงบ่งชี้ว่าโครงสร้างกำลังถูกปลดปล่อย

เพื่อเพิ่มความน่าจะเป็น เข้าสู่สภาพการแข่งขัน ใช้เทคนิคหลายอย่างที่ช่วยเพิ่มโอกาสในการประสบความสำเร็จ ของสัดส่วนการถือหุ้น 30% เมื่อทำการเพิ่มประสิทธิภาพระบบเฉพาะ ตัวอย่างเช่น เพื่อเพิ่มเวลาในการเข้าถึงโครงสร้างด้วย file descriptor หลายร้อยนาโนวินาที ข้อมูลจะถูกล้างออกจากแคชของโปรเซสเซอร์โดยทำให้แคชเสียหายด้วยกิจกรรมบนคอร์ของ CPU อื่น ซึ่งทำให้สามารถส่งคืนโครงสร้างจากหน่วยความจำและ ไม่ใช่แคชที่รวดเร็วของ CPU

คุณสมบัติที่สำคัญที่สอง เป็น การใช้อินเตอร์รัปต์ที่สร้างโดยตัวจับเวลาฮาร์ดแวร์ เพื่อเพิ่มเวลาการแข่งขัน เวลาถูกเลือกเพื่อให้ตัวจัดการการขัดจังหวะเริ่มทำงานในระหว่างที่เกิดสภาวะการแข่งขันและการใช้รหัสขัดจังหวะชั่วขณะหนึ่ง เพื่อชะลอการกลับมาของการควบคุม epoll สร้างรายการในคิวประมาณ 50 รายการ ซึ่งจำเป็นต้องมีการวนซ้ำในตัวจัดการการขัดจังหวะ

เทคนิค การแสวงประโยชน์จากช่องโหว่ ถูกเปิดเผยหลังจากระยะเวลาไม่เปิดเผย 90 วัน. ปัญหา

และได้รับการแก้ไขในต้นเดือนธันวาคม การแก้ไขนี้รวมอยู่ในเคอร์เนล 5.16 และยังย้ายไปยังสาขา LTS ของเคอร์เนลและแพ็กเกจที่มีเคอร์เนลที่ให้มาในการแจกแจงด้วย ควรสังเกตว่ามีการระบุช่องโหว่ในระหว่างการวิเคราะห์ปัญหาที่คล้ายคลึงกัน CVE-2021-0920 ซึ่งปรากฏในตัวรวบรวมขยะเมื่อประมวลผลแฟล็ก MSG_PEEK

อีกหนึ่งจุดอ่อนที่พบ เมื่อเร็ว ๆ นี้ในเคอร์เนล Linux มันคือ CVE-2022-0742 นี้ อาจทำให้หน่วยความจำที่ใช้ได้หมดและทำให้เกิดการปฏิเสธการบริการจากระยะไกล โดยส่งแพ็กเก็ต icmp6 ที่สร้างขึ้นเป็นพิเศษ ปัญหานี้เกี่ยวข้องกับหน่วยความจำรั่วที่เกิดขึ้นเมื่อประมวลผลข้อความ ICMPv6 ด้วยชนิด 130 หรือ 131

ปัญหาเกิดขึ้นตั้งแต่เคอร์เนล 5.13 และได้รับการแก้ไขในเวอร์ชัน 5.16.13 และ 5.15.27 ปัญหานี้ไม่ส่งผลกระทบต่อ Debian, SUSE, Ubuntu LTS (18.04, 20.04) และสาขาที่เสถียรของ RHEL ได้รับการแก้ไขแล้วบน Arch Linux

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


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

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

*

*

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