ช่องโหว่ใน Polkit ที่ทำให้คุณสามารถเพิ่มสิทธิพิเศษในระบบได้

มีการระบุช่องโหว่ (CVE-2021-3560) ในส่วนประกอบ Polkit ซึ่งใช้ในการแจกจ่ายเพื่อให้ผู้ใช้ที่ไม่มีสิทธิพิเศษสามารถดำเนินการที่ต้องใช้สิทธิ์การเข้าถึงระดับสูง (เช่น การติดตั้งไดรฟ์ USB) ซึ่งช่วยให้ผู้ใช้ภายในเครื่อง รับสิทธิ์รูทในระบบ ช่องโหว่ได้รับการแก้ไขแล้วใน Polkit เวอร์ชัน 0.119

ปัญหานี้เกิดขึ้นตั้งแต่รุ่น 0.113 แต่การแจกแจงจำนวนมาก รวมถึง RHEL, Ubuntu, Debian และ SUSE ได้แบ็คพอร์ตฟังก์ชันการทำงานที่ได้รับผลกระทบไปเป็นแพ็คเกจตามรุ่น Polkit รุ่นเก่า (การแก้ไขแพ็คเกจมีอยู่แล้วในการแจกแจง)

ปัญหาปรากฏในฟังก์ชัน polkit_system_bus_name_get_creds_sync() ซึ่งรับตัวระบุ (uid และ pid) ของกระบวนการที่ร้องขอการยกระดับสิทธิ์ กระบวนการถูกระบุโดย Polkit โดยการกำหนดชื่อเฉพาะใน DBus ซึ่งจะใช้เพื่อตรวจสอบสิทธิ์ หากกระบวนการตัดการเชื่อมต่อจาก dbus-daemon ก่อนที่ตัวจัดการ polkit_system_bus_name_get_creds_sync จะเริ่มทำงาน ตัวจัดการจะได้รับรหัสข้อผิดพลาดแทนชื่อเฉพาะ

ช่องโหว่นี้เกิดจากความจริงที่ว่ารหัสข้อผิดพลาดที่ส่งคืนไม่ได้รับการประมวลผลอย่างถูกต้อง และฟังก์ชัน polkit_system_bus_name_get_creds_sync() จะคืนค่า TRUE แทนที่จะเป็น FALSE แม้ว่าจะไม่สามารถจับคู่กระบวนการกับ uid/pid และตรวจสอบสิทธิ์ที่ร้องขอสำหรับกระบวนการได้ รหัสที่ใช้เรียกใช้ฟังก์ชัน polkit_system_bus_name_get_creds_sync() จะถือว่าการตรวจสอบสำเร็จและการร้องขอให้ขยายสิทธิ์นั้นมาจากรูทและไม่ได้มาจากผู้ใช้ที่ไม่มีสิทธิ์ ซึ่งทำให้สามารถดำเนินการที่ได้รับสิทธิ์โดยไม่ต้องมีการตรวจสอบสิทธิ์เพิ่มเติมและการตรวจสอบข้อมูลรับรอง

ที่มา: opennet.ru

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