Clear
Lead Graphic Papers

ระวังภัย ช่องโหว่ใน Linux Kernel 2.6.39 เป็นต้นไป ทำให้ผู้โจมตีได้สิทธิของ root

วันที่ประกาศ: 30 มกราคม 2555
ปรับปรุงล่าสุด: 30 มกราคม 2555
เรื่อง: ระวังภัย ช่องโหว่ใน Linux Kernel 2.6.39 เป็นต้นไป ทำให้ผู้โจมตีได้สิทธิของ root

ประเภทภัยคุกคาม:
Instrution

Share on Facebook Share on Twitter Share on Facebook

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

ผู้เชี่ยวชาญได้แจ้งเตือนช่องโหว่ของ Linux Kernel ซึ่งอนุญาตให้ผู้โจมตีสามารถแก้ไขข้อมูลในหน่วยความจำของ Process เพื่อให้ได้รับสิทธิของ root ได้ (CVE-2012-0056) [1] โดยปกติแล้วระบบปฏิบัติการ Linux จะใช้ไฟล์ /proc/<pid>/mem เพื่ออ้างอิงถึงข้อมูลที่อยู่ในหน่วยความจำของแต่ละ Process ซึ่งไฟล์ดังกล่าวนี้ระบบจะอนุญาตให้เฉพาะ Process ที่เกี่ยวข้องมีสิทธิในการแก้ไข แต่หลังจาก Linux Kernel เวอร์ชัน 2.6.39 เป็นต้นมา (เผยแพร่เมื่อวันที่ 18 พฤษภาคม 2554) [2] ฟังก์ชันที่ใช้สำหรับการป้องกันไม่ให้ Process ใดๆ เข้าไปแก้ไขข้อมูลในหน่วยความจำของ Process อื่นได้ถูกนำออกไป [3] นักวิจัยที่ค้นพบช่องโหว่นี้ได้พัฒนาซอฟต์แวร์เพื่อใช้ในการทดสอบสมมุติฐาน (Proof of Concept) ว่าช่องโหว่ดังกล่าวสามารถทำงานได้จริง โดยได้พัฒนาโปรแกรมเพื่อเข้าไปแก้ไขข้อมูลในหน่วยความจำของ Process su (Super User) เพื่อให้ผู้ใช้ทั่วไปได้รับสิทธิของ root [4] นอกจากนี้ยังพบว่าช่องโหว่ดังกล่าวมีผลกับอุปกรณ์ที่ติดตั้งระบบปฏิบัติการ Android เวอร์ชัน 4.0 อีกด้วย [5]

ผลกระทบ

ผู้ใช้งานระบบปฏิบัติการ Linux ที่ติดตั้ง Kernel เวอร์ชัน 2.6.39 ถึง 3.2.1 มีความเสี่ยงที่จะถูกโจมตีจากผู้ไม่หวังดีเพื่อครอบครองสิทธิการเป็น root ของระบบได้ ตัวอย่างวีดีโอการโจมตีสามารถดูได้จาก http://www.youtube.com/watch?v=OKnth2R9nI4

เนื่องจากระบบปฏิบัติการ 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

Al2012co0002_1.png

รูปที่ 1 ตัวอย่างการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Fedora


2. สำหรับการตรวจสอบเวอร์ชันของ Kernel ที่ใช้งานอยู่ในปัจจุบัน เนื่องจากวิธีการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Linux นั้นอาจแตกต่างกันไปตามแต่ละ Distribution ผู้ใช้งานระบบปฏิบัติการ Linux สามารถตรวจสอบเวอร์ชันของ Kernel ที่ตนเองใช้อยู่ได้ตามวิธีในเว็บไซต์ CyberCiti.biz ตัวอย่างการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Ubuntu เป็นดังรูปที่ 2

Al2012co0002_2.png

รูปที่ 2 ตัวอย่างการตรวจสอบเวอร์ชันของ Kernel ของระบบปฏิบัติการ Ubuntu

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

ทาง Kernel.org ได้ปรับปรุงแก้ไขช่องโหว่ดังกล่าวเมื่อวันที่ 17 มกราคม 2555 [6] และการแก้ไขนี้จะมีผลตั้งแต่ Linux Kernel 3.2.2 เป็นต้นไป [7] ทางผู้พัฒนาระบบปฏิบัติการ Linux Distribution ต่างๆ เช่น Ubuntu, Debian หรือ Red Hat ได้นำ Patch จาก Kernel.org ไปปรับปรุงใน Kernel ของตนเอง และได้ทำการเผยแพร่ Kernel เวอร์ชันใหม่ที่แก้ไขปัญหาดังกล่าว ผ่านช่องทางการอัพเดทของแต่ละ Distribution แล้ว [8] [9] ซึ่งเวอร์ชันของ Kernel ที่ถูกปรับปรุงช่องโหว่ดังกล่าวอาจแตกต่างกันไปตามแต่ละ Distribution ผู้ใช้งานควรตรวจสอบการอัพเดทและปรับปรุงระบบให้เป็น Kernel เวอร์ชันที่ถูกปรับปรุงหลังจากวันที่ 17 มกราคม 2555 โดยเร็วที่สุด

อ้างอิง

  1. http://www.h-online.com/security/news/item/Linux-root-exploit-due-to-memory-access-Update-2-1419834.html
  2. https://lkml.org/lkml/2011/5/19/16
  3. http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=198214a7
  4. http://blog.zx2c4.com/749
  5. https://github.com/saurik/mempodroid
  6. http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e268337dfe26dfc7efd422a804dbb27977a3cccc
  7. http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.2.2
  8. https://lists.ubuntu.com/archives/ubuntu-security-announce/2012-January/001557.html
  9. https://www.redhat.com/security/data/cve/CVE-2012-0056.html

Clear