พบบั๊ก APT ระบบอัพเดตลินุกซ์ตระกูล Debian/Ubuntu แฮกเกอร์แอบส่งแพ็กเกจปลอมเข้ามารันในสิทธิ์ root ได้

by lew
22 January 2019 - 20:40

Max Justicz นักวิจัยความปลอดภัยรายงานถึงบั๊กของโปรแกรม apt (apt-get) ที่อ่านข้อมูล HTTP response ไม่ตรงตามมาตรฐาน ทำให้แฮกเกอร์สามารถส่งข้อมูลหลอก จนกระทั่งยิงไฟล์แพ็กเกจปลอมเข้ามารันบนเครื่องได้ และเนื่องจาก apt มักรันบนสิทธิ์ root ทำให้แพ็กเกจที่ได้รับมารันบนสิทธิ์ root ไปด้วยส่งผลกระทบร้ายแรงถึงระดับยึดเครื่องได้

ปัญหาเกิดจากกระบวนการทำงานของ apt เมื่อผู้ใช้สั่งดาวน์โหลดโปรแกรม ตัวโปรแกรมจะ fork โปรเซสลูกเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ (fetcher) ซึ่งอาจจะเป็นโปรโตคอลต่างๆ กันไป ปัญหาคือ fetcher นี้มีบั๊กในการอ่าน HTTP Redirect ที่มันจะเชื่อข้อมูลฟิลด์ Location ใน HTTP Header เสมอ และส่งต่อไปยังโปรเซสแม่เพื่อแจ้งสถานะว่าเกิดการ Redirect โดยไม่ตรวจสอบ

แฮกเกอร์สามารถสร้างฟิลด์ Location แบบมุ่งร้าย ปลอมข้อมูลการดาวน์โหลดสำเร็จทั้งชุด ลงไป และเนื่องจากหน้าที่ของ fetcher จะเป็นผู้เช็คค่าแฮชของไฟล์ที่ดาวน์โหลดมาด้วย ข้อมูลในฟิลด์ Location นี้สามารถยิงค่าแฮชหลอกๆ เพื่อหลอกโปรเซสแม่ว่าไฟล์ที่ดาวน์โหลดมาถูกต้องสมบูรณ์

ช่องโหว่นี้มีหมายเลข CVE-2019-3462 กระทบ Debian และ Ubuntu ตั้งแต่ 14.04LTS ขึ้นมาทั้งหมด ทั้ง Debian และ Ubuntu ออกแพตช์แล้ว

หากยังไม่อัพเดตและกลัวถูกโจมตี สามารถตั้งค่าไม่รับ Redirect ด้วยการใช้คำสั่งแทนคำสั่งปกติดังนี้

 apt -o Acquire::http::AllowRedirect=false update
 apt -o Acquire::http::AllowRedirect=false upgrade

วันที่ผ่านมาเพิ่งมีการถกเถียงระหว่าง VLC และ The Hacker News ว่าการใช้ HTTPS ส่งไฟล์อัพเดตจำเป็นหรือไม่ ในกรณีของบั๊กนี้หากเซิร์ฟเวอร์ใช้ HTTPS ก็จะลดปัญหาไปได้ เพราะคนร้ายไม่สามารถดักคั่นกลางการเชื่อมต่อได้ แต่หากเซิร์ฟเวอร์จริง (เช่น mirror ต่างๆ) ถูกยึดไปได้ ก็อาจจะถูกโจมตีได้อยู่ดี

ที่มา - Max Justicz, debian-security-announce, Ubuntu Security Notice

Blognone Jobs Premium