Clear
Lead Graphic Papers

ระวังภัย ช่องโหว่ 0-day ใน MySQL ผู้ไม่หวังดีสามารถควบคุมระบบได้ (CVE-2016-6662, CVE-2016-6663)

วันที่ประกาศ: 13 กันยายน 2559
ปรับปรุงล่าสุด: 13 กันยายน 2559
เรื่อง: ระวังภัย ช่องโหว่ 0-day ใน MySQL ผู้ไม่หวังดีสามารถควบคุมระบบได้ (CVE-2016-6662, CVE-2016-6663)
ประเภทภัยคุกคาม: Intrusion

Share on Facebook Share on Twitter Share on Facebook

ข้อมูลทั่วไป

นักวิจัยด้านความมั่นคงปลอดภัยแจ้งเตือนช่องโหว่ในโปรแกรม MySQL ที่ส่งผลให้ผู้ประสงค์ร้ายสามารถควบคุมระบบด้วยการสั่งประมวลผลคำสั่งอันตรายจากระยะไกล (remote code execution) หรือยกระดับสิทธิของผู้ใช้ได้ (privilege escalation) ช่องโหว่ที่พบนี้มีรหัส CVE-2016-6662 และ CVE-2016-6663 [1]

ช่องโหว่ CVE-2016-6662 ผู้ประสงค์ร้ายสามารถแทรกโค้ดอันตรายเข้ามาในไฟล์ my.cnf ซึ่งเป็นไฟล์ที่ใช้ตั้งค่าการทำงานของโปรแกรม MySQL ส่งผลให้เมื่อมีการ restart service ของโปรแกรม MySQL โค้ดที่ถูกแทรกเข้ามาจะถูกเรียกทำงานภายใต้สิทธิของ root ช่องโหว่นี้นักวิจัยได้เผยแพร่โค้ดตัวอย่างสำหรับใช้ทดสอบการทำงานของช่องโหว่ (proof-of-concept code) ออกสู่สาธารณะแล้ว

ช่องโหว่ที่พบนี้ มีผลกระทบกับ MySQL เวอร์ชัน 5.5, 5.6 และ 5.7 ที่ถูกติดตั้งโดยใช้การตั้งค่าเริ่มต้น (default configuration) โดยการจะโจมตีผ่านช่องโหว่เหล่านี้ได้ ผู้โจมตีต้อง

  1. สามารถอัปโหลดไฟล์ไลบรารีของ MySQL เข้ามาในเครื่องได้ (เช่น อัปโหลดผ่าน FTP, SSH หรืออัปโหลดผ่านเว็บไซต์)
  2. สามารถการแก้ไขหรือเขียนข้อมูลลงในไฟล์ my.cnf (เช่น เชื่อมต่อผ่าน SSH เข้ามาแก้ไขไฟล์ หรือโจมตีด้วยเทคนิค SQL injection เพื่อเขียนไฟล์)
  3. แก้ไขไฟล์ my.cnf ให้มีการเรียกใช้ไฟล์ไลบรารีอันตรายที่อัปโหลดเข้ามา
  4. Restart service ของ MySQL
  5. หากสำเร็จ ผู้โจมตีมีโอกาสได้สิทธิ root ของระบบ

นักวิจัยได้แจ้งช่องโหว่นี้ให้กับทาง Oracle ผู้พัฒนาโปรแกรม MySQL รวมถึงแจ้งให้กับทีมผู้พัฒนาซอฟต์แวร์ MariaDB และ PerconaDB ที่พัฒนาโดยใช้โค้ดพื้นฐานจาก MySQL ด้วย โดยทางทีมผู้พัฒนาซอฟต์แวร์ MariaDB และ PerconaDB ได้ออกแพตช์แก้ไขช่องโหว่นี้ไปแล้วเมื่อวันที่ 30 สิงหาคม 2559 แต่ทาง Oracle ยังไม่แจ้งว่าจะเผยแพร่แพตช์แก้ไขให้กับ MySQL เมื่อไหร่ นักวิจัยแจ้งว่าเนื่องจากช่องโหว่นี้ถูกแก้ไขแล้ว รวมถึงได้แจ้งให้นักพัฒนาทราบเกิน 40 วันแล้ว จึงตัดสินใจเผยแพร่ข้อมูลช่องโหว่ออกสู่สาธารณะ

ช่องโหว่ CVE-2016-6663 มีลักษณะการทำงานคล้ายกับช่องโหว่ CVE-2016-6662 แต่นักวิจัยยังไม่เปิดเผยรายละเอียดของช่องโหว่นี้ รวมถึงยังไม่มีการเผยแพร่โค้ดตัวอย่างสำหรับใช้ทดสอบการทำงานของช่องโหว่ออกสู่สาธารณะ แต่นักวิจัยได้แจ้งข้อมูลช่องโหว่ให้กับผู้พัฒนาทราบแล้ว ปัจจุบันยังไม่มีแพตช์

ผลกระทบ

ผู้ประสงค์ร้ายสามารถได้สิทธิของ root เพื่อสั่งประมวลผลคำสั่งอันตราย ติดตั้ง backdoor หรือควบคุมระบบเพื่อใช้ในการสร้างความเสียหายได้

ระบบที่ได้รับผลกระทบ

  • MySQL เวอร์ชัน 5.5.x, 5.6.x, 5.7.x (ณ วันที่เผยแพร่บทความยังไม่มีแพตช์)
  • MariaDB เวอร์ชันต่ำกว่า 5.5.51, 10.1.17 [2] [3]
  • PerconaDB เวอร์ชันต่ำกว่า 5.5.51-38.1, 5.6.32-78.0 และ 5.7.14-7 [4]

ข้อแนะนำในการป้องกันและแก้ไข

สำหรับผู้ที่ใช้ MariaDB และ PerconaDB เนื่องจากมีแพตช์แก้ไขช่องโหว่ CVE-2016-6662 แล้ว จึงควรอัพเดตซอฟต์แวร์เป็นเวอร์ชันล่าสุด

สำหรับผู้ใช้ MySQL เนื่องจากปัจจุบันยังไม่มีแพตช์แก้ไข วิธีลดความเสี่ยงที่พอทำได้คือแก้ไข permission ของไฟล์ my.cnf อนุญาตให้เฉพาะผู้ใช้ที่เป็น root เท่านั้นมีสิทธิแก้ไขข้อมูลของไฟล์นี้ (ปกติแล้วค่าเริ่มต้นจะเป็น mysql/mysql) หรือหากไม่พบว่ามีไฟล์ my.cnf อาจสร้างไฟล์เปล่าๆ ขึ้นมาแล้วตั้งค่า permission ให้เขียนได้เฉพาะ root เพื่อลดผลกระทบ

อ้างอิง

  1. http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html
  2. https://mariadb.com/kb/en/mariadb/mariadb-5551-release-notes/
  3. https://mariadb.com/kb/en/mariadb/mariadb-10117-release-notes/
  4. https://www.percona.com/blog/2016/09/12/percona-server-critical-update-cve-2016-6662/
Clear