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

มีการระบุช่องโหว่ (CVE-2022-37706) ในสภาพแวดล้อมของผู้ใช้ Enlightenment ที่อนุญาตให้ผู้ใช้ภายในเครื่องที่ไม่มีสิทธิพิเศษสามารถรันโค้ดด้วยสิทธิ์รูทได้ ช่องโหว่ยังไม่ได้รับการแก้ไข (0 วัน) แต่มีช่องโหว่ในโดเมนสาธารณะอยู่แล้ว ซึ่งทดสอบใน Ubuntu 22.04

ปัญหาอยู่ในไฟล์ปฏิบัติการ enlightenment_sys ซึ่งมาพร้อมกับแฟล็กรูท suid และดำเนินการคำสั่งที่ได้รับอนุญาตบางอย่าง เช่น การติดตั้งไดรฟ์ด้วยยูทิลิตี้เมานต์ ผ่านการเรียกไปที่ system() เนื่องจากการทำงานที่ไม่ถูกต้องของฟังก์ชันที่สร้างสตริงที่ส่งผ่านไปยังการเรียก system() เครื่องหมายคำพูดจึงถูกตัดออกจากอาร์กิวเมนต์ของคำสั่งที่กำลังเรียกใช้ ซึ่งสามารถใช้เพื่อรันโค้ดของคุณเองได้ ตัวอย่างเช่น เมื่อรัน mkdir -p /tmp/net mkdir -p "/tmp/;/tmp/exploit" echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit enlightenment_sys /bin/mount - หรือ noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), “/dev/../tmp/;/tmp/exploit” /tmp// / สุทธิ

เนื่องจากการลบเครื่องหมายคำพูดคู่ออก แทนที่จะเป็นคำสั่งที่ระบุ '/bin/mount ... "/dev/../tmp/;/tmp/exploit" /tmp///net' สตริงที่ไม่มีเครื่องหมายคำพูดคู่จะเป็น ส่งผ่านไปยังฟังก์ชัน system() ' /bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net' ซึ่งจะทำให้เกิดคำสั่ง '/tmp/exploit /tmp///net ' จะถูกดำเนินการแยกกัน แทนที่จะถูกประมวลผลโดยเป็นส่วนหนึ่งของเส้นทางไปยังอุปกรณ์ บรรทัด "/dev/../tmp/" และ "/tmp///net" ถูกเลือกเพื่อข้ามการตรวจสอบอาร์กิวเมนต์สำหรับคำสั่ง mount ใน enlightenment_sys (อุปกรณ์ mount ต้องขึ้นต้นด้วย /dev/ และชี้ไปที่ไฟล์ที่มีอยู่ และมีการระบุอักขระ "/" ทั้งสามตัวที่จุดเมานท์เพื่อให้ได้ขนาดเส้นทางที่ต้องการ)

ที่มา: opennet.ru

เพิ่มความคิดเห็น