Max Kellermann จากบริษัท CM4All ผู้ให้บริการสร้างเว็บบน WordPress รุ่นพิเศษ รายงานถึงบั๊กประหลาดที่ผู้ใช้ CM4All รายงานมาตั้งแต่เดือนเมษายนที่ผ่านมา ว่า log ของเว็บเซิร์ฟเวอร์ในช่วงสิ้นเดือนนั้นพัง (corrupt) บ่อยๆ หลังจากบีบอัดไฟล์
Kellermann พยายามไล่หาต้นเหตุที่ไฟล์พังอยู่หลายเดือน และพบว่าไฟล์ log ที่พังนั้นกลับมีข้อมูลขยะในไฟล์ตรงกับข้อมูลที่โปรเซสรับไฟล์ไปบีบอัด โดยโปรเซสรับไฟล์พยายามเขียนคำว่า "PK" เพื่อแสดงว่าเป็นไฟล์ zip ที่หัวไฟล์
ภายหลัง Kellermann สามารถสร้างโปรแกรมง่ายๆ ขึ้นมาสองโปรแกรม เพื่อเขียนข้อมูลลงไฟล์ และอีกโปรแกรมอ่านไฟล์ผ่าน pipe ในลินุกซ์ขึ้นมา พร้อมกับเขียนข้อมูลอื่นเป็นสตริงมั่วๆ เช่น "BBBBB" ปรากฎว่าเขาสามารถทำให้ข้อมูล "BBBBB" ไปอยู่ในไฟล์ต้นทางที่อ่านขึ้นมาผ่าน pipe ได้แสดงให้เห็นว่าเป็นบั๊กในเคอร์เนล ปรากฎว่าเป็นช่องโหว่ PIPE_BUF_FLAG_CAN_MERGE
ที่เปิดให้โปรเซสที่สามารถอ่านไฟล์ สามารถเขียนไฟล์ได้โดยไม่มีสิทธิ์ โดยจะเขียนลง page cache ก่อน ทำให้ข้อมูลไม่ได้ลงดิสก์เสมอไป
เนื่องจากเป็นบั๊กในเคอร์เนล ทำให้คนร้ายอาจจะแก้ไขไฟล์ใน page cache ได้แม้จะเป็นดิสก์ที่ไม่สามารถเขียนได้ เช่น แผ่นซีดี คนร้ายก็สามารถแก้ไฟล์ให้โปรเซสอื่นมาอ่านไฟล์ผิดๆ ได้อยู่ดี จนกว่าเคอร์เนลจะหยุดใช้แคชส่วนนั้นไป
ลินุกซ์ออกแพตช์ช่องโหว่ CVE-2022-0847 นี้แล้ว ในเวอร์ชั่น 5.16.11, 5.15.25, 5.10.102 ตัวบั๊กกระทบแอนดรอยด์ด้วยเช่นกันและกูเกิลก็ออกแพตช์แล้ว ทาง Red Hat ระบุว่าช่องโหว่นี้มีคะแนน CVSSv3 อยู่ที่ 7.8 คะแนน (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) แต่ตัว RHEL เองไม่ได้ใช้ฟีเจอร์ PIPE_BUF_FLAG_CAN_MERGE
ทำให้การโจมตีที่ Kellermann ทดสอบนั้นใช้งานไม่ได้ แต่บั๊กการตรวจสอบข้อมูลใน pipe ไม่ครบถ้วนก็ยังอยู่และเตรียมจะออกแพตช์ต่อไป
ที่มา - CM4All
Comments
ผู้ดูแลเว็บสกิลสุดจริงๆ
นั่นสิ นอกจากจะวิเคราะห์เก่งแล้ว ต้องมีความรู้แน่นมากๆด้วย
..: เรื่อยไป
ีuser เปิด ticket อยู้ได้ อารมณ์เสีย
debug kernel แม่ม
lewcpe.com, @wasonliw
มีความพยายามมากด้วยนะครับ นั่งงมอยู่หลายเดือน เป็นผมคงถอดใจไปหลายรอบ