ช่องโหว่ใน e2fsck เมื่อประมวลผลไดเร็กทอรีที่ออกแบบมาเป็นพิเศษ

ในยูทิลิตี้ e2fsck ที่ให้มาเป็นส่วนหนึ่งของแพ็คเกจ e2fsprogs, ระบุ จุดอ่อน (CVE-2019-5188) ซึ่งช่วยให้คุณสามารถรันโค้ดของผู้โจมตีเมื่อตรวจสอบระบบไฟล์ที่มีไดเร็กทอรีที่ออกแบบมาเป็นพิเศษ ช่องโหว่นี้ได้รับการยืนยันในรุ่น 1.43.3 ถึง 1.45.4 ช่องโหว่ได้รับการแก้ไขในการอัปเดต e2fsck 1.45.5. ในชุดแจกจ่าย ปัญหายังคงไม่ได้รับการแก้ไข (debian, Arch ลินุกซ์, SUSE/เปิดSUSE, อูบุนตู, RHEL).

ช่องโหว่นี้เกิดจากข้อผิดพลาดในฟังก์ชัน mutate_name() ในไฟล์ rehash.c ซึ่งใช้ในการสร้างตารางแฮชที่เกี่ยวข้องกับไดเร็กทอรีใหม่ เพื่อให้มั่นใจว่าไฟล์ทั้งหมดในไดเร็กทอรีตรงกับไดเร็กทอรีนั้น ความเสียหายของโครงสร้าง hash_entry ที่เกี่ยวข้องกับไดเรกทอรีอาจส่งผลให้ผู้โจมตีเขียนข้อมูลไปยังพื้นที่นอกบัฟเฟอร์ที่จัดสรร หากมีการระบุไฟล์หลายไฟล์ที่มีชื่อเดียวกันในตารางแฮชว่าถูกผูกไว้กับไดเร็กทอรี ยูทิลิตี e2fsck จะเปลี่ยนชื่อไฟล์ที่ซ้ำกันโดยการเพิ่ม ~0, ~1 ฯลฯ ลงในชื่อ หากต้องการจัดเก็บชื่อใหม่ชั่วคราวในระหว่างการเปลี่ยนชื่อ บัฟเฟอร์ขนาด 256 ไบต์จะถูกจัดสรรบนสแต็ก

ขนาดของข้อมูลที่จะคัดลอกถูกกำหนดโดยนิพจน์ "entry->name_len & 0xff" แต่ค่าของ entry->name_len ถูกโหลดจากโครงสร้างบนดิสก์ แทนที่จะคำนวณจากขนาดจริงของชื่อ หากขนาดเป็นศูนย์ ดัชนีอาร์เรย์จะใช้ค่า -1 และเงื่อนไขจะถูกสร้างขึ้นสำหรับจำนวนเต็มล้นผ่านขอบเขตล่างของบัฟเฟอร์ (จำนวนเต็มน้อยไป) และเขียนทับข้อมูลอื่นบนสแต็กด้วยค่า “~0” สำหรับระบบ 64 บิต การใช้ประโยชน์จากช่องโหว่จะถูกประเมินว่าไม่น่าเป็นไปได้ และไม่จำเป็นต้องมีข้อจำกัดเกี่ยวกับขนาดสแต็ก (ulimit -sไม่จำกัด) สำหรับระบบ 32 บิต การเอารัดเอาเปรียบนั้นถือว่าเป็นไปได้ แต่ผลลัพธ์จะขึ้นอยู่กับวิธีการคอมไพล์ไฟล์เรียกทำงานโดยคอมไพเลอร์

ในการโจมตี ผู้โจมตีจำเป็นต้องสร้างความเสียหายให้กับข้อมูลด้วยวิธีใดวิธีหนึ่งในพาร์ติชั่นด้วยระบบไฟล์ ext2, ext3 หรือ ext4 เนื่องจากการดำเนินการนี้ต้องการสิทธิ์ผู้ใช้ขั้นสูง ช่องโหว่จึงก่อให้เกิดภัยคุกคามเมื่อยูทิลิตี e2fsck สแกนไดรฟ์ภายนอกหรืออิมเมจ FS ที่ได้รับจากภายนอก

ที่มา: opennet.ru

เพิ่มความคิดเห็น