พบช่องโหว่ใน CUPS ที่ทำให้สามารถโจมตีแบบ RCE บน Linux ได้โดยมีเงื่อนไขบางอย่าง

พบช่องโหว่ใน CUPS open-source printing system ที่ Hacker ต้องอยู่ภายใต้เงื่อนไขบางประการ เพื่อที่จะสามารถโจมตีโดยการเรียกใช้คำสั่งที่เป็นอันตรายจากระยะไกล (RCE) บนระบบ Linux ที่มีช่องโหว่

ช่องโหว่ดังกล่าวถูกค้นพบโดย Simone Margaritelli โดยมีหมายเลข CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) และ CVE-2024-47177 (cups-filters) แต่จะไม่ส่งผลกระทบต่อระบบที่เป็น default configuration

CUPS (ย่อมาจาก Common UNIX Printing System) เป็น printing system ที่ใช้กันอย่างแพร่หลายที่สุดในระบบ Linux และยังได้รับการสนับสนุนโดยทั่วไปบนอุปกรณ์ที่ใช้ระบบปฏิบัติการคล้าย Unix เช่น FreeBSD, NetBSD และ OpenBSD

โดยจะมีส่วนประกอบหนึ่งคือ cups-browsed daemon ที่ทำการค้นหาใน local network เพื่อหาเครื่องพิมพ์บนเครือข่าย หรือเครื่องพิมพ์ที่ใช้ร่วมกัน และทำให้เครื่องพิมพ์เหล่านั้นพร้อมสำหรับการพิมพ์บนเครื่อง ซึ่งคล้ายกับวิธีที่ Windows และ Mac ค้นหาภายในเครือข่ายเพื่อหาเครื่องพิมพ์ในเครือข่ายสำหรับการพิมพ์

Margaritelli ระบุว่าหากเปิดใช้งาน cups-browsed daemon ที่ไม่ใช่ค่าปกติ daemon จะเปิดใช้งานบน port UDP 631 เพื่ออนุญาตให้มีการเชื่อมต่อระยะไกลจากอุปกรณ์ใด ๆ บนเครือข่ายเพื่อสร้างเครื่องพิมพ์ใหม่ตามค่าเริ่มต้นอีกด้วย

รวมถึงพบว่า สามารถสร้างเครื่องพิมพ์ PostScript Printer Description (PPD) ที่เป็นอันตรายได้ ซึ่งสามารถเปิดให้ตรวจพบผ่าน cups-browsed service ซึ่งทำงานบนพอร์ต UDP 631 ได้ และทำให้เครื่องพิมพ์นั้นพร้อมสำหรับการพิมพ์ ทำให้เครื่องที่เปิดใช้งานอาจติดตั้งเครื่องพิมพ์ที่เป็นอันตรายโดยอัตโนมัติ หากผู้ใช้งานสั่งพิมพ์ไปยังเครื่องพิมพ์ใหม่ คำสั่งที่เป็นอันตรายใน PPD จะถูกดำเนินการบนเครื่องคอมพิวเตอร์ได้

คำสั่งที่จะดำเนินการเมื่อพิมพ์จะถูกเพิ่มผ่าน foomatic-rip filter ซึ่งจะดำเนินการคำสั่งบนอุปกรณ์เพื่อให้ print job ได้รับการ render อย่างถูกต้อง

ข้อจำกัดของช่องโหว่

แม้ว่าจะเป็นช่องโหว่การเรียกใช้คำสั่งที่เป็นอันตรายจากระยะไกล (RCE) แต่ในการโจมตีช่องโหว่ดังกล่าวก็ยังมีข้อจำกัดอยู่

ข้อจำกัดคือ ระบบเป้าหมายจะต้องเปิดใช้งาน Cups-browsed daemon ซึ่งโดยปกติจะไม่เปิดใช้งานตามค่าเริ่มต้น เพื่อเปิดพอร์ต UDP บนเครือข่าย จากนั้นผู้โจมตีจะต้องหลอกให้ผู้ใช้สั่งพิมพ์จากเซิร์ฟเวอร์เครื่องพิมพ์ที่เป็นอันตรายบนเครือข่ายภายในเครื่องของตน ด้วยเหตุผลดังกล่าว Red Hat จึงได้จัดระดับความรุนแรงของช่องโหว่เป็น High แทนที่จะเป็น Critical

BleepingComputer พบว่า Linux server ส่วนใหญ่ไม่ได้เปิดใช้งานบริการนี้ตามค่าเริ่มต้น แต่ก็พบว่าหนึ่งใน VM ของ Ubuntu มีการเปิดอยู่ ยังมีการสังเกตบน Twitter ของผู้ใช้งานบางคนว่า cups-browsed ได้รับการเปิดใช้งานตามค่าเริ่มต้นบนอุปกรณ์ Linux ของพวกเขาอีกด้วย

ไม่มีแพตช์ แต่มีมาตรการลดผลกระทบ

ในขณะที่แพตช์ยังคงอยู่ในระหว่างการพัฒนา Red Hat ได้แบ่งปันมาตรการลดผลกระทบโดยกำหนดให้ผู้ดูแลระบบหยุดการทำงานของ cups-browsed service และป้องกันไม่ให้บริการเริ่มทำงานเมื่อรีบูต โดยใช้คำสั่งต่อไปนี้เพื่อลดความเสี่ยงจากการถูกโจมตี :

sudo systemctl stop cups-browsed

sudo systemctl disable cups-browsed

ผู้ใช้ Red Hat ยังสามารถใช้คำสั่งต่อไปนี้เพื่อค้นหาว่า cups-browsed กำลังทำงานอยู่บนระบบของตนหรือไม่ :

sudo systemctl status cups-browsed

หากผลลัพธ์แสดง "Active: inactive (dead)," แสดงว่า service หยุดทำงาน และระบบไม่มีความเสี่ยง แต่หากผลลัพธ์แสดง "running" or "enabled" รวมถึงคำสั่ง "BrowseRemoteProtocols" มีค่า "cups" ใน configuration file /etc/cups/cups-browsed.conf แสดงว่าระบบมีความเสี่ยง

ที่มา : bleepingcomputer