ข้อมูลทั่วไป
ผู้เชี่ยวชาญได้แจ้งเตือนช่องโหว่ของ Linux Kernel ซึ่งอนุญาตให้ผู้โจมตีสามารถแก้ไขข้อมูลในหน่วยความจำของ Process เพื่อให้ได้รับสิทธิของ root ได้ (CVE-2012-0056) โดยปกติแล้วระบบปฏิบัติการ Linux จะใช้ไฟล์ /proc/ /mem เพื่ออ้างอิงถึงข้อมูลที่อยู่ในหน่วยความจำของแต่ละ Process ซึ่งไฟล์ดังกล่าวนี้ระบบจะอนุญาตให้เฉพาะ Process ที่เกี่ยวข้องมีสิทธิในการแก้ไข แต่หลังจาก Linux Kernel เวอร์ชัน 2.6.39 เป็นต้นมา (เผยแพร่เมื่อวันที่ 18 พฤษภาคม 2554) ฟังก์ชันที่ใช้สำหรับการป้องกันไม่ให้ Process ใดๆ เข้าไปแก้ไขข้อมูลในหน่วยความจำของ Process อื่นได้ถูกนำออกไป นักวิจัยที่ค้นพบช่องโหว่นี้ได้พัฒนาซอฟต์แวร์เพื่อใช้ในการทดสอบสมมุติฐาน (Proof of Concept) ว่าช่องโหว่ดังกล่าวสามารถทำงานได้จริง โดยได้พัฒนาโปรแกรมเพื่อเข้าไปแก้ไขข้อมูลในหน่วยความจำของ Process su (Super User) เพื่อให้ผู้ใช้ทั่วไปได้รับสิทธิของ root นอกจากนี้ยังพบว่าช่องโหว่ดังกล่าวมีผลกับอุปกรณ์ที่ติดตั้งระบบปฏิบัติการ Android เวอร์ชัน 4.0 อีกด้วย
ผลกระทบ
ผู้ใช้งานระบบปฏิบัติการ Linux ที่ติดตั้ง Kernel เวอร์ชัน 2.6.39 ถึง 3.2.1 มีความเสี่ยงที่จะถูกโจมตีจากผู้ไม่หวังดีเพื่อครอบครองสิทธิการเป็น root ของระบบได้ ตัวอย่างวีดีโอการโจมตีสามารถดูได้จาก http://www.youtube.com/watch?v=OKnth3R9nI4
เนื่องจากระบบปฏิบัติการ Android ถูกพัฒนาโดยใช้พื้นฐานจากระบบปฏิบัติการ Linux ทำให้ระบบปฏิบัติการ Android เวอร์ชัน 4.0 ซึ่งใช้ Linux Kernel เวอร์ชัน 3 ได้รับผลกระทบไปด้วย โดยอาจมีผู้พัฒนาซอฟต์แวร์เพื่อให้ได้รับสิทธิเป็นของ root ของระบบได้
ระบบที่ได้รับผลกระทบ
- ระบบปฏิบัติการ Linux ที่ติดตั้ง Kernel ตั้งแต่เวอร์ชัน 2.6.39 ถึง 3.2.1 เช่น
- Ubuntu 11.10
- Red Hat Enterprise Linux 6
- Fedora 16
- openSUSE 12.1
- Debian wheezy (รุ่นทดสอบของเวอร์ชัน 7)
- อุปกรณ์ที่ติดตั้งระบบปฏิบัติการ Android เวอร์ชัน 4.0 เช่น Galaxy Nexus, Galaxy S และ Transformer Prime เป็นต้น
วิธีการตรวจสอบเวอร์ชันของ Kernel
1. หากผู้ใช้งานระบบปฏิบัติการ Linux ต้องการตรวจสอบเวอร์ชั่นของ Kernel ที่มากับ Distribution ที่ตนเองใช้อยู่ว่าได้รับผลกระทบหรือไม่ สามารถตรวจสอบได้ด้วยการเข้าไปที่เว็บไซต์ http://www.distrowatch.com เลือก Distribution ที่ต้องการตรวจสอบ จากนั้นดูในส่วนของ Package ที่ชื่อ linux ตัวอย่างการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Fedora 16 พบว่าใช้ Kernel เวอร์ชัน 3.1 ดังรูปที่ 1
รูปที่ 1 ตัวอย่างการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Fedora
2. สำหรับการตรวจสอบเวอร์ชันของ Kernel ที่ใช้งานอยู่ในปัจจุบัน เนื่องจากวิธีการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Linux นั้นอาจแตกต่างกันไปตามแต่ละ Distribution ผู้ใช้งานระบบปฏิบัติการ Linux สามารถตรวจสอบเวอร์ชันของ Kernel ที่ตนเองใช้อยู่ได้ตามวิธีในเว็บไซต์ CyberCiti.biz ตัวอย่างการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Ubuntu เป็นดังรูปที่ 2
รูปที่ 2 ตัวอย่างการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Ubuntu
ข้อแนะนำในการป้องกันและแก้ไข
ทาง Kernel.org ได้ปรับปรุงแก้ไขช่องโหว่ดังกล่าวเมื่อวันที่ 17 มกราคม 2555 และการแก้ไขนี้จะมีผลตั้งแต่ Linux Kernel 3.2.2 เป็นต้นไป ทางผู้พัฒนาระบบปฏิบัติการ Linux Distribution ต่างๆ เช่น Ubuntu, Debian หรือ Red Hat ได้นำ Patch จาก Kernel.org ไปปรับปรุงใน Kernel ของตนเอง และได้ทำการเผยแพร่ Kernel เวอร์ชันใหม่ที่แก้ไขปัญหาดังกล่าว ผ่านช่องทางการอัพเดทของแต่ละ Distribution แล้ว ซึ่งเวอร์ชันของ Kernel ที่ถูกปรับปรุงช่องโหว่ดังกล่าวอาจแตกต่างกันไปตามแต่ละ Distribution ผู้ใช้งานควรตรวจสอบการอัพเดทและปรับปรุงระบบให้เป็น Kernel เวอร์ชันที่ถูกปรับปรุงหลังจากวันที่ 17 มกราคม 2555 โดยเร็วที่สุด
ที่มา ThaiCert