ทำความรู้จักกับช่องโหว่ของระบบปฏิบัติการ Linux Kernel 5.8 < 5.16.11 - Local Privilege Escalation (Dirty Pipe)

Dirty Pipe_Website

ช่องโหว่ Linux Kernel 5.8 < 5.16.11 – Local Privilege Escalation (Dirty Pipe)

 

ถ้าเราพูดถึงระบบปฏิบัติการคอมพิวเตอร์ในปัจจุบันคงจะหนีไม่พ้นระบบปฏิบัติการ Windows ที่มีการใช้งานอย่างทั่วไปสำหรับการใช้งานปรกติ กับอีกระบบปฏิบัติการซึ่งได้แก่ Unix/Linux ที่จะนำมาให้งานที่เป็นเครื่อง Server ที่ให้บริการแก่ผู้ใช้งาน

 

โดยในวันนี้จะพาทุกคนมาทำความรู้จักกับช่องโหว่ของระบบปฏิบัติการ Linux ที่มีชื่อเรียกกันว่า “Dirty Pipe” และมีตัวเลขของ CVE เป็น 2022-0847 ซึ่งมีความเสี่ยงต่อการโจมตีที่จะอนุญาติให้ผู้ใช้งานทั่วไปที่ไม่ใช่ผู้ดูแลระบบสามารถเขียนทับข้อมูลในไฟล์ที่ถูกกำหนดให้สามารถอ่านได้อย่างเดียว รวมทั้งผู้ใช้งานทั่วไปสามารถยกระดับสิทธิ์ให้เป็นสิทธิ์ระดับ root ได้โดยไม่ได้รับอนุญาตจากระบบปฏิบัติการ ซึ่งตัวอย่างการใช้ exploit จากช่องโหว่ อาทิ ผู้โจมตีสามารถทำการโจมตีโดย remove รหัสผ่านของ root ที่อยู่ในไฟล์ /etc/passwd และส่งผลให้ผู้ใช้งานทุกคนในระบบที่ถูกโจมตีนี้สามารถเข้าถึงสิทธิ์ในระดับ root ได้ โดยใช้คำสั่ง su root เป็นต้น

 

สามารถสรุปรายละเอียดของช่องโหว่ได้ดังนี้

• เป็นช่องโหว่ของ Linux kernel version ตั้งแต่ 5.8 และ version ที่ใหม่กว่า

(5.8 <= Linux kernel < 5.16.11 / 5.15.25 / 5.10.102)

• ผลกระทบ (Impact) / รูปแบบการโจมตี: Local Privilege Escalation — Local/Authenticated

• คะแนนบอกระดับความอันตรายของช่องโหว่มีค่าเท่ากับ 7.8 ซึ่งเป็นความเสี่ยงสูง

• การแก้ไขปัญหาจะต้องทำการ Patch / Upgrade ระบบปฏิบัติการ Linux

• กระทบต่อระบบปฏิบัติการ Android 12 ที่อุปกรณ์พึ่งออกสู่ท้องตลาดในรอบ 5 เดือนที่ผ่านมา เช่น

       o Google Pixel 6, Samsung Galaxy S22, Samsung Galaxy S22+ เป็นต้น

       o อุปกรณ์ที่ใช้งาน Snapdragon 8 Gen 1

       o อุปกรณ์ที่ใช้งาน MediaTek Dimensity 9000 หรือ 8000

       o อุปกรณ์ที่ใช้งาน Google Tensor

 

ขั้นตอนการตรวจสอบช่องโหว่

1. ทำการตรวจสอบ version ของระบบปฏิบัติการ

 

2. ทำการ Download File ที่ใช้ในการตรวจสอบจาก https://github.com/xndpxs/CVE-2022-0847/archive/refs/heads/main.zip

3. ทำการ Unzip File ที่ทำการ Download จากข้อที่ 1 ในเครื่องที่ต้องการตรวจสอบ

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

5. ทำการ Build File ในการทดสอบดังนี้

6. การทดสอบช่องโหว่

** ก่อนทำการทดสอบ

จะพบว่า file “/etc/passwd” จะไม่สามารถแก้ไขได้เนื่องจากไม่มีสิทธิ์ในการแก้ไข

** หลังการทดสอบ

จะทำการใช้คำสั่งในการทดสอบดังนี้

ซึ่งจากการทดลองจะพบว่าหลังการทดสอบ ข้อมูลใน file “/etc/password” สามารถทำการแก้ไขได้โดยที่ไม่มีสิทธิในการแก้ไข ดังนั้นถ้าพบว่าระบบปฏิบัติการ Linux มีช่องโหว่ดังกล่าวเป็นความเสี่ยงที่ยอมรับไม่ได้ ต้องเร่งด่วนในการแก้ไขโดย สามารถดูในหัวข้อ “วิธีการแก้ไขปัญหา” ทั้งนี้ การแก้ไขเปลี่ยนแปลงใด ๆ กับระบบ ซอฟต์แวร์ หรือ Configuration ต่าง ๆ เพื่อลดความเสี่ยงจากช่องโหว่ดังกล่าว ควรปฏิบัติตาม Change Management Policy หรือ Risk Management Policy หรือ Business Impact Assessment ขององค์กรอย่างเคร่งครัด

วิธีการแก้ไขปัญหา 

ให้ทำการ update ระบบปฏิบัติการ Linux เป็น version ล่าสุด ซึ่งมีขั้นตอนดังต่อไปนี้

1. ทำการตรวจสอบ version ระบบปฏิบัติการ

2. ทำการ Update จากการ Upgrade ของระบบปฏิบัติ

3. ทำการ Reboot เครื่อง

4. ทำการตรวจสอบ version ระบบปฏิบัติการ (อีกครั้ง)

ข้อมูลอ้างอิง

  • https://github.com/xndpxs/CVE-2022-0847
  • https://dirtypipe.cm4com/
  • https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9d2231c5d74e13b2a0546fee6737ee4446017903
  • https://www.exploit-db.com/exploits/50808