ช่องโหว่กว่า 15 ปีที่ผ่านมาใน Netfilter ทำให้เกิดการยกระดับสิทธิ์

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

ช่องโหว่ CVE-2021-22555 เป็นปัญหาที่มีมาตั้งแต่เคอร์เนล 2.6.19, เปิดตัวเมื่อ 15 ปีที่แล้ว และ is เกิดจากข้อผิดพลาดในไดรเวอร์ IPT_SO_SET_REPLACE และ IP6T_SO_SET_REPLACE ซึ่งทำให้บัฟเฟอร์ล้นเมื่อส่งพารามิเตอร์ที่ตกแต่งเป็นพิเศษผ่านการเรียก setockopt ในโหมด compat

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

ตัวอย่างเช่น การรองรับเนมสเปซผู้ใช้ที่ไม่มีสิทธิพิเศษอยู่ในเคอร์เนล 3.8 นอกจากนี้ การแจกแจงบางส่วนยังมีแพตช์ที่เพิ่ม sysctl เพื่อปิดใช้งานเนมสเปซผู้ใช้ที่ไม่มีสิทธิพิเศษ

ภายใต้สถานการณ์ปกติ เฉพาะผู้ใช้รูทเท่านั้นที่สามารถเรียก compat_setsockopt ()แต่ สิทธิ์ที่จำเป็น เพื่อทำการโจมตี นอกจากนี้ยังสามารถรับได้โดยผู้ใช้ที่ไม่มีสิทธิพิเศษ บนระบบที่เปิดใช้งานเนมสเปซผู้ใช้

CVE-2021-22555 เป็นช่องโหว่ในการเขียนสแต็กจากสแต็กที่มีอายุ 15 ปีใน Linux Netfilter ซึ่งมีประสิทธิภาพเพียงพอที่จะเลี่ยงการบรรเทาความปลอดภัยที่ทันสมัยทั้งหมดและบรรลุการเรียกใช้โค้ดเคอร์เนล

จึงได้อธิบายไว้ว่า ผู้ใช้ในพื้นที่สามารถสร้างคอนเทนเนอร์ที่มีผู้ใช้รูทแยกต่างหากและใช้ประโยชน์จากช่องโหว่จากที่นั่นผม. ตัวอย่างเช่น "เนมสเปซผู้ใช้" จะรวมอยู่ใน Ubuntu และ Fedora โดยค่าเริ่มต้น แต่จะไม่รวมใน Debian และ RHEL

ช่องโหว่นี้สามารถใช้ประโยชน์ได้โดยการเขียนทับ m_list->nextตัวชี้ msg_msgโครงสร้างและบรรลุผลฟรีหลังการใช้งาน ซึ่งมีประสิทธิภาพเพียงพอที่จะทำให้โค้ดเคอร์เนลของคุณทำงานผ่าน KASLR, SMAP และ SMEP

นอกจากนี้ ปัญหาเกิดขึ้นในฟังก์ชัน xt_compat_target_from_user () เนื่องจากการคำนวณขนาดหน่วยความจำไม่ถูกต้องเมื่อบันทึกโครงสร้างเคอร์เนลหลังจากแปลงจากการแสดงแบบ 32 บิตเป็น 64 บิต

ดังนั้นจึงมีการกล่าวถึงว่า ข้อผิดพลาดอนุญาตให้เขียนสี่ "ศูนย์" ไบต์ไปยังตำแหน่งใด ๆ นอกบัฟเฟอร์ กำหนด จำกัด โดยออฟเซ็ต 0x4C ด้วยเหตุนี้จึงมีการกล่าวไว้ว่า คุณสมบัตินี้เพียงพอที่จะสร้างช่องโหว่ ซึ่งอนุญาตให้ได้รับสิทธิ์รูท: โดยการลบ m_list-> ตัวชี้ถัดไปในโครงสร้าง msg_msg เงื่อนไขในการเข้าถึงข้อมูลหลังจากทำให้หน่วยความจำว่างได้ถูกสร้างขึ้น (ใช้ฟรีภายหลัง) ซึ่งถูกใช้เพื่อรับข้อมูลเกี่ยวกับที่อยู่และการเปลี่ยนแปลง ไปยังโครงสร้างอื่น ๆ โดยจัดการการเรียกระบบ msgsnd ()

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

โครงการ Debian, Arch Linux และ Fedora ได้สร้างการอัปเดตแพ็คเกจแล้ว เริ่มต้นด้วย Ubuntu การอัปเดต RHEL และ SUSE อยู่ในระหว่างดำเนินการ เพราะความผิดพลาดนั้นร้ายแรง หาประโยชน์ได้ในทางปฏิบัติ และช่วยให้หนีออกจากภาชนะได้ Google ประเมินการค้นพบที่ $ 10,000 และเพิ่มรางวัลเป็นสองเท่า ถึงผู้วิจัยที่ระบุช่องโหว่และเพื่อระบุวิธีการหลีกเลี่ยงการแยกคอนเทนเนอร์ Kubernetes บนคลัสเตอร์ kCTF

สำหรับการทดสอบ ได้มีการเตรียมต้นแบบการทำงานของช่องโหว่ไว้ ที่ข้ามกลไกการป้องกัน KASLR, SMAP และ SMEP

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


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

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

*

*

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