พบช่องโหว่ใน PolicyKit! ทำให้UID ของผู้ใช้ลีนุกซ์ที่ไม่ได้รับสิทธิเศษ สามารถเรียกใช้คำสั่งใน systemctl ได้

นักวิจัยด้านความปลอดภัย Rich Mirch ได้ออกมาแจ้งเกี่ยวกับช่องโหว่ที่พบใน PolicyKit ทำให้ UID ของผู้ใช้ตั้งแต่ 2147483647 ขึ้นไปสามารถรันคำสั่งใน systemctl ได้โดยไม่ต้องขออนุญาต
หมายเลขของช่องโหว่นี้คือ CVE-2018-19788

ซึ่งมีผลกระทบกับ PolicyKit เวอร์ชั่น 0.115 ซึ่งถูกติดตั้งอยู่ในลีนุกซ์ รวมไปถึง Red Hat, Debian, Ubuntu, และ CentOS

ช่องโหว่นี้เกิดจากคำขออนุญาตในการตรวจสอบสิทธิ์ของ PolicyKit สำหรับ UID ของผู้ใช้ที่มากกว่า INT_MAX ซึ่งมีสิทธิ์การเข้าถึงต่ำ ถ้าหากมีค่า UID ของผู้ใช้คนใดสูงกว่าค่า INT_MAX โปรแกรม PolicyKit จะอนุญาตให้ผู้ใช้นั้นสามารถทำการรันคำสั่งใน systemctl ได้

สำหรับ INT_MAX นั้นเป็นค่าคงที่ใช้ในการเขียนโปรแกรมคอมพิวเตอร์มีค่าตัวแปรเป็นแบบจำนวนเต็ม ค่าสูงสุดของตัวแปรนี้จะเท่ากับ 2147483647 (แปลงเป็นเลขฐาน 16 จะเท่ากับ 0x7FFFFFFF)

ส่วน PolicyKit หรือที่รู้จักกันในชื่อว่า polkit เป็นเครื่องมือที่อยู่ในระดับแอพพลิเคชั่น สำหรับระบบปฏิบัติการยูนิกซ์ ทำหน้าที่เป็นตัวกำหนดนโยบาย จัดการสิทธิ์การเข้าถึงทั้งระบบและจัดการสิทธิ์การเข้าถึงของสิทธิ์ที่ไม่ได้รับอนุญาตในการติดต่อสื่อสารกับผู้ที่ได้รับสิทธิ์ ยกตัวอย่างเช่น “sudo” ที่ไม่ได้ให้สิทธิ์ในการเข้าถึงระบบทั้งหมดแก่ root

ในตอนนี้ ทาง Rich Mirch ได้ออกมาพิสูจน์ถึงวิธีการทำงานของช่องโหว่นี้แล้ว ซึ่งต้องใช้ UID กว่า 4000000000 เลยทีเดียว สำหรับวิธีการสามารถดูได้ที่ github security-research CVE-2018-19788

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

ที่มา : The Hacker News