ตรวจพบช่องโหว่หลายจุดใน GNU Screen ซึ่งทำให้สามารถรับสิทธิ์รูทได้

ความอ่อนแอ

เมื่อไม่กี่วันก่อนได้มีการประกาศ ข้อมูลเกี่ยวกับการตรวจสอบความปลอดภัย ซึ่งเปิดเผยช่องโหว่สำคัญ 5 ประการในเครื่องมัลติเพล็กเซอร์เทอร์มินัลยอดนิยม หน้าจอ GNUใช้เพื่อจัดการเซสชันคอนโซลหลายเซสชันบนเทอร์มินัลเดียว

ซึ่งหนึ่งในนั้น (CVE-2025-23395 ซึ่งเป็นช่องโหว่ที่อันตรายที่สุด) ช่วยให้ผู้โจมตีได้รับสิทธิ์รูทได้ ในระบบที่ได้รับผลกระทบ (ช่องโหว่นี้มีผลกับ GNU Screen เวอร์ชัน 5.0.0 เท่านั้น) รวมถึงในระบบที่ได้รับผลกระทบเช่น Fedora, Arch Linux, NetBSD เป็นต้น อย่างไรก็ตาม เวอร์ชันอื่นๆ เช่น Debian, Ubuntu และ RHEL ยังคงใช้สาขา 4.x ซึ่งไม่มีช่องโหว่ต่อข้อบกพร่องนี้โดยเฉพาะ

CVE-2025-23395: การเพิ่มสิทธิ์ที่สำคัญ

มีการกล่าวถึงว่าปัญหาเกิดขึ้น เมื่อ GNU Screen รันด้วยบิต setuid root (กรณีของ Arch และ NetBSD) เนื่องจากและฟังก์ชัน logfile_reopen() จะถูกดำเนินการก่อนที่จะลดสิทธิ์ซึ่งช่วยให้ผู้ใช้สามารถจัดการรีจิสทรีเพื่อเขียนไฟล์ตามต้องการในฐานะ root ได้ ในฟาร์มทั่วๆ ไปและผู้โจมตีลบไฟล์บันทึกต้นฉบับและแทนที่ด้วยลิงก์สัญลักษณ์ ไปที่ไฟล์ระบบ เมื่อคุณเปิดไฟล์อีกครั้ง Screen จะเขียนไฟล์โดยใช้สิทธิ์ root ทำให้เนื้อหาที่เป็นอันตรายสามารถเข้ามาได้

ปัญหานี้ส่งผลต่อ Screen 5.0.0 เมื่อใช้งานด้วยสิทธิ์ setuid-root ฟังก์ชัน logfile_reopen() จะไม่ลบสิทธิ์พิเศษเมื่อใช้งานบนเส้นทางที่ผู้ใช้ระบุ สิ่งนี้ช่วยให้ผู้ใช้ที่ไม่มีสิทธิ์สร้างไฟล์ในตำแหน่งที่ต้องการพร้อมกับสิทธิ์การเป็นเจ้าของรูท สิทธิ์การเป็นเจ้าของกลุ่ม (จริง) ของผู้ใช้ที่เรียกใช้งาน และโหมดไฟล์ 0644 ข้อมูลทั้งหมดที่เขียนลงใน Screen PTY จะถูกบันทึกลงในไฟล์นี้ ไฟล์ที่มีอยู่ยังสามารถใช้สำหรับการลงทะเบียนในลักษณะนี้ได้: ข้อมูลจะถูกผนวกเข้ากับไฟล์ที่เกี่ยวข้อง แต่โหมดและความเป็นเจ้าของไฟล์จะยังคงไม่เปลี่ยนแปลง

การโจมตีครั้งนี้ สามารถนำไปสู่การควบคุมระบบทั้งหมดได้หากใช้ประโยชน์อย่างถูกต้อง เนื่องจากมันอนุญาตให้คุณแก้ไขไฟล์ที่ละเอียดอ่อนหรือเปลี่ยนสคริปต์เริ่มต้นได้ Fedora ได้รับการปกป้องบางส่วนเพราะ Screen ได้รับการติดตั้งด้วยบิต setgid ซึ่งจำกัดพื้นที่การโจมตี

ช่องโหว่อื่นๆ ที่เกี่ยวข้อง

การตรวจสอบดำเนินการโดยทีมงานความปลอดภัย SUSE Linuxยังได้ระบุถึงข้อบกพร่องสำคัญอื่น ๆ ด้วย:

  • CVE-2025-46802: ในเซสชันหลายผู้ใช้ ผู้โจมตีสามารถรับสิทธิ์การอ่านและเขียนทั่วโลกบนอุปกรณ์ TTY เช่น /dev/pts/1 ซึ่งส่งผลต่อทั้งสาขา 4.x และ 5.x
  • CVE-2025-46803: สาขา 5.0 กำหนดการอนุญาตที่ไม่ปลอดภัย (0622) บนอุปกรณ์ PTY โดยอนุญาตให้ผู้ใช้รายใดก็ได้เขียน
  • CVE-2025-46804: การรั่วไหลของข้อมูลทำให้สามารถอนุมานการมีอยู่ของไฟล์หรือไดเร็กทอรีได้โดยใช้ข้อความแสดงข้อผิดพลาดเมื่อกำหนดตัวแปร SCREENDIR
  • CVE-2025-46805: สภาวะการแข่งขันเมื่อส่งสัญญาณ SIGCONT และ SIGHUP อาจส่งผลให้เกิดการปฏิเสธการให้บริการ

นอกจากนี้ยังตรวจพบการใช้งาน strncpy อย่างไม่ถูกต้อง ซึ่งอาจทำให้เกิดข้อผิดพลาดเมื่อดำเนินการคำสั่งที่มีการจัดรูปแบบพิเศษ ซึ่งเป็นปัญหาเฉพาะของสาขา 5.0 เท่านั้น

ขาดการบำรุงรักษาและการสนับสนุนจาก SUSE

การค้นพบช่องโหว่เหล่านี้ได้เปิดเผยปัญหาที่ลึกซึ้งยิ่งขึ้นในการบำรุงรักษา GNU Screen ตามรายงานของทีม SUSE ผู้ดูแลโครงการปัจจุบันไม่เข้าใจฐานโค้ดอย่างถ่องแท้ หรือปัญหาด้านความปลอดภัยซึ่งบังคับให้พวกเขาต้องพัฒนาโปรแกรมแก้ไขสำหรับข้อบกพร่องบางส่วนที่พบด้วยตนเอง รายงานดังกล่าวได้ถูกส่งไปยังนักพัฒนาเมื่อวันที่ 7 กุมภาพันธ์ แต่ไม่สามารถแก้ไขช่องโหว่ทั้งหมดได้ภายในช่วงเวลาผ่อนผัน 90 วันที่ตกลงกันไว้

ถ้าใช้ GNU Screen ต้องทำอย่างไร?

ผู้ใช้ระบบที่รวม Screen 5.0.0 พร้อม setuid root ควรอัปเดตเป็นเวอร์ชัน 5.0.1 ทันทีหรือ กลับไปสู่เวอร์ชัน 4.x ชั่วคราวหากไม่มีแพ็คเกจให้ใช้งาน เพื่อเป็นมาตรการบรรเทาผลกระทบ บิต setuid ยังสามารถถูกลบออกจากไฟล์ปฏิบัติการ Screen ได้:

sudo chmod u-s /usr/bin/screen

อย่างไรก็ตาม สิ่งนี้อาจส่งผลกระทบต่อการทำงาน เช่นการแบ่งปันเซสชั่นระหว่างผู้ใช้ สุดท้ายนี้ ควรกล่าวถึงว่าเวอร์ชัน 5.0.1 ที่เพิ่งเปิดตัวได้แก้ไขข้อบกพร่องนี้และข้อบกพร่องอื่นๆ และขณะนี้พร้อมใช้งานบนระบบปฏิบัติการต่างๆ เช่น Arch Linux และ FreeBSD แล้ว

ถ้าคุณเป็น สนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้คุณสามารถตรวจสอบรายละเอียดได้ในไฟล์ ลิงค์ต่อไปนี้