พบช่องโหว่ Local Privilege Escalation (LPE) ห้ารายการใน needrestart utility ที่ใช้ใน Ubuntu Linux โดย utility นี้ถูกนำมาใช้ครั้งแรกเมื่อ 10 ปีก่อนในเวอร์ชัน 21.04
ช่องโหว่เหล่านี้พบโดย Qualys และมีหมายเลข CVE-2024-48990, CVE-2024-48991, CVE-2024-48992, CVE-2024-10224 และ CVE-2024-11003 โดยช่องโหว่เหล่านี้เริ่มต้นใน needrestart เวอร์ชัน 0.8 ที่เปิดตัวเมื่อเดือนเมษายน 2014 และเพิ่งได้รับการแก้ไขเมื่อวานนี้ในเวอร์ชัน 3.8
Needrestart เป็น utility ที่ใช้กันทั่วไปในระบบ Linux รวมถึง Ubuntu Server เพื่อระบุ services ที่ต้องการรีสตาร์ทหลังการอัปเดตแพ็กเกจ เพื่อให้แน่ใจว่า services เหล่านั้นจะเรียกใช้ไลบรารีเวอร์ชันล่าสุด
สรุปช่องโหว่ LPE
ช่องโหว่ทั้งห้ารายการที่ Qualys ค้นพบ สามารถทำให้ผู้โจมตีที่มีสิทธิ์เข้าถึงระบบ Linux ได้แบบ local สามารถยกระดับสิทธิ์เป็น root ได้โดยไม่ต้องมีการโต้ตอบจากผู้ใช้งาน
- CVE-2024-48990 : ช่องโหว่ใน Needrestart ที่เรียกใช้ Python interpreter พร้อมกับ 'PYTHONPATH' variable ที่ extracted มาจาก process ที่กำลังทำงานอยู่ หากผู้โจมตีในระบบสามารถควบคุมตัวแปรนี้ได้ จะสามารถรันโค้ดที่เป็นอันตรายด้วยสิทธิ์ root ระหว่างการเริ่มต้น Python โดยการวางไลบรารีที่เป็นอันตรายไว้ในระบบ
- CVE-2024-48992 : ช่องโหว่ใน Needrestart ที่เรียกใช้ Ruby interpreter เมื่อประมวลผล RUBYLIB variable ที่ถูกควบคุมโดยผู้โจมตีในระบบ ช่องโหว่นี้ทำให้ผู้โจมตีสามารถรันโค้ด Ruby ที่เป็นอันตรายด้วยสิทธิ์ root โดยการ inject ไลบรารีที่เป็นอันตรายเข้าไปในกระบวนการการทำงาน
- CVE-2024-48991 : ช่องโหว่ Race Condition ใน needrestart ทำให้ผู้โจมตีในระบบสามารถแทนที่ไฟล์ไบนารีของ Python interpreter ที่ได้รับการตรวจสอบความถูกต้อง ด้วยไฟล์ executable ที่เป็นอันตราย โดยการแทนที่ไฟล์ในช่วงเวลาที่เหมาะสม ผู้โจมตีสามารถหลอกให้ needrestart รันโค้ดของพวกเขาด้วยสิทธิ์ root ได้
- CVE-2024-10224 : โมดูล ScanDeps ของ Perl ที่ใช้โดย needrestart เป็นการจัดการกับชื่อไฟล์ที่ผู้โจมตีส่งมาอย่างไม่เหมาะสม ผู้โจมตีสามารถสร้างชื่อไฟล์ที่เหมือนคำสั่ง shell (เช่น command|) เพื่อรันคำสั่งที่เป็นอันตรายด้วยสิทธิ์ root เมื่อเปิดไฟล์
- CVE-2024-11003 : การพึ่งพาโมดูล ScanDeps ของ Perl ที่ใช้โดย needrestart ทำให้เกิดช่องโหว่จากตัวโมดูล ScanDeps เอง ซึ่งการใช้ฟังก์ชัน eval() อย่างไม่เหมาะสมสามารถนำไปสู่การรันโค้ดที่เป็นอันตรายได้ เมื่อประมวลผลข้อมูลที่ผู้โจมตีควบคุม
แต่การจะโจมตีช่องโหว่เหล่านี้ได้ ผู้โจมตีจะต้องสามารถเข้าถึงระบบปฏิบัติการในระดับ Local ผ่านมัลแวร์ หรือบัญชีผู้ใช้ที่ถูกแฮ็ก
อย่างไรก็ตาม ผู้โจมตีเคยใช้ช่องโหว่การยกระดับสิทธิ์ใน Linux ที่คล้ายกันในอดีตเพื่อเข้าถึง root เช่น ช่องโหว่ Loony Tunables และช่องโหว่ที่ใช้ข้อผิดพลาดของ nf_tables ดังนั้นช่องโหว่ใหม่นี้ไม่ควรถูกมองข้ามเพียงเพราะต้องการการเข้าถึงระบบปฏิบัติการในระดับ Local
ด้วยการใช้งาน needrestart อย่างแพร่หลาย และระยะเวลาที่ยาวนานที่ช่องโหว่เหล่านี้ยังคงมีอยู่ ช่องโหว่ที่กล่าวถึงข้างต้นอาจสร้างโอกาสให้เกิดการยกระดับสิทธิ์ในระบบที่สำคัญได้
นอกจากการอัปเกรดไปยังเวอร์ชัน 3.8 หรือใหม่กว่า ซึ่งรวมถึงการแก้ไขช่องโหว่ทั้งหมดที่ระบุแล้ว ยังแนะนำให้กำหนดค่าไฟล์ needrestart.conf เพื่อปิดฟีเจอร์การสแกน interpreters ซึ่งจะช่วยป้องกันไม่ให้ช่องโหว่เหล่านี้ถูกโจมตี
การปรับแต่งนี้จะช่วยหยุดไม่ให้ needrestart รัน interpreters ที่มีตัวแปรที่อาจถูกควบคุมโดยผู้โจมตี
ที่มา : bleepingcomputer
You must be logged in to post a comment.