ช่องโหว่ใน swhkd ซึ่งเป็นตัวจัดการทางลัดสำหรับ Wayland

ชุดของช่องโหว่ได้รับการระบุใน swhkd (Simple Wayland HotKey Daemon) ที่เกิดจากการทำงานที่ไม่ถูกต้องกับไฟล์ชั่วคราว พารามิเตอร์บรรทัดคำสั่ง และซ็อกเก็ต Unix โปรแกรมนี้เขียนด้วยภาษา Rust และจัดการการกดปุ่มลัดในสภาพแวดล้อมที่ใช้โปรโตคอล Wayland (อะนาล็อกที่เข้ากันได้กับไฟล์กำหนดค่าของกระบวนการ sxhkd ที่ใช้ในสภาพแวดล้อมที่ใช้ X11)

แพ็คเกจประกอบด้วยกระบวนการ swhks ที่ไม่มีสิทธิ์ซึ่งดำเนินการกับปุ่มลัด และกระบวนการ swhkd พื้นหลังที่ทำงานในฐานะรูทและโต้ตอบกับอุปกรณ์อินพุตที่ระดับ uinput API ซ็อกเก็ต Unix ใช้เพื่อจัดระเบียบการโต้ตอบระหว่าง swhks และ swhkd เมื่อใช้กฎ Polkit ผู้ใช้ภายในเครื่องสามารถรันกระบวนการ /usr/bin/swhkd ในฐานะ root และส่งพารามิเตอร์ที่กำหนดเองไปให้ได้

ช่องโหว่ที่ระบุ:

  • CVE-2022-27815 – บันทึกกระบวนการ PID ลงในไฟล์ที่มีชื่อที่คาดเดาได้และในไดเร็กทอรีที่ผู้ใช้รายอื่นสามารถเขียนได้ (/tmp/swhkd.pid) ผู้ใช้สามารถสร้างไฟล์ /tmp/swhkd.pid และใส่ pid ของกระบวนการที่มีอยู่ลงไป ซึ่งจะทำให้ swhkd ไม่สามารถเริ่มทำงานได้ หากไม่มีการป้องกันการสร้างลิงก์สัญลักษณ์ใน /tmp ช่องโหว่นี้สามารถใช้เพื่อสร้างหรือเขียนทับไฟล์ในไดเร็กทอรีระบบใดๆ (PID จะถูกเขียนลงในไฟล์) หรือกำหนดเนื้อหาของไฟล์ใดๆ บนระบบ (swhkd พิมพ์ เนื้อหาทั้งหมดของไฟล์ PID เป็น stdout) เป็นที่น่าสังเกตว่าในการแก้ไขที่เผยแพร่ ไฟล์ PID ไม่ได้ถูกย้ายไปยังไดเร็กทอรี /run แต่ไปยังไดเร็กทอรี /etc (/etc/swhkd/runtime/swhkd_{uid}.pid) โดยที่ไฟล์นั้นไม่ได้อยู่ด้วย
  • CVE-2022-27814 – ด้วยการจัดการตัวเลือกบรรทัดคำสั่ง “-c” ที่ใช้ในการระบุไฟล์การกำหนดค่า ทำให้สามารถระบุการมีอยู่ของไฟล์ใดๆ ในระบบได้ ตัวอย่างเช่น หากต้องการตรวจสอบ /root/.somefile คุณสามารถเรียกใช้ “pkexec /usr/bin/swhkd -d -c /root/.somefile” และหากไฟล์หายไป ข้อผิดพลาด “/root/.somefile ไม่มีอยู่จริง” ” จะปรากฏขึ้น เช่นเดียวกับในกรณีของช่องโหว่แรก การแก้ไขปัญหาเป็นเรื่องที่น่างงงวย - การแก้ไขปัญหาอยู่ที่ความจริงที่ว่ายูทิลิตี้ภายนอก “cat” ('Command::new(“/bin/cat”)).arg(path) เปิดใช้งานแล้วเพื่ออ่านไฟล์การกำหนดค่า เอาต์พุต ()')
  • CVE-2022-27819 – ปัญหายังเกี่ยวข้องกับการใช้ตัวเลือก “-c” ซึ่งทำให้ไฟล์การกำหนดค่าทั้งหมดถูกโหลดและแยกวิเคราะห์โดยไม่ตรวจสอบขนาดและประเภทของไฟล์ ตัวอย่างเช่น หากต้องการทำให้เกิดการปฏิเสธการบริการโดยหน่วยความจำว่างไม่เพียงพอและสร้าง I/O ปลอม คุณสามารถระบุอุปกรณ์บล็อกเมื่อเริ่มต้นระบบ ("pkexec /usr/bin/swhkd -d -c /dev/sda") หรือ อุปกรณ์อักขระที่สร้างกระแสข้อมูลที่ไม่สิ้นสุด ปัญหาได้รับการแก้ไขโดยการรีเซ็ตสิทธิ์ก่อนเปิดไฟล์ แต่การแก้ไขยังไม่เสร็จสมบูรณ์ เนื่องจากการรีเซ็ตเฉพาะ ID ผู้ใช้ (UID) เท่านั้น แต่ ID กลุ่ม (GID) ยังคงเหมือนเดิม
  • CVE-2022-27818 – ซ็อกเก็ต Unix ถูกสร้างขึ้นโดยใช้ไฟล์ /tmp/swhkd.sock ที่สร้างขึ้นในไดเร็กทอรีแบบเขียนได้ ซึ่งนำไปสู่ปัญหาที่คล้ายกันกับช่องโหว่แรก (ผู้ใช้ทุกคนสามารถสร้าง /tmp/swhkd.sock และสร้างหรือสกัดกั้น เหตุการณ์การกดปุ่ม)
  • CVE-2022-27817 - เหตุการณ์อินพุตได้รับการยอมรับจากอุปกรณ์ทั้งหมดและในทุกเซสชัน เช่น ผู้ใช้จากเซสชัน Wayland อื่นหรือจากคอนโซลสามารถสกัดกั้นเหตุการณ์เมื่อผู้ใช้รายอื่นกดปุ่มลัด
  • CVE-2022-27816 กระบวนการ swhks เช่น swhkd ใช้ไฟล์ PID /tmp/swhks.pid ในไดเร็กทอรี /tmp ที่เขียนได้ ปัญหาจะคล้ายกับช่องโหว่แรก แต่ไม่เป็นอันตราย เนื่องจาก swhks ทำงานภายใต้ผู้ใช้ที่ไม่มีสิทธิ์

ที่มา: opennet.ru

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