ช่องโหว่ใน OpenOffice ที่อนุญาตให้มีการเรียกใช้โค้ดเมื่อเปิดไฟล์

พบช่องโหว่ (CVE-2021-33035) ในชุดโปรแกรมสำนักงาน Apache OpenOffice ที่อนุญาตให้เรียกใช้โค้ดเมื่อเปิดไฟล์ที่ออกแบบมาเป็นพิเศษในรูปแบบ DBF นักวิจัยที่ค้นพบปัญหาเตือนเกี่ยวกับการสร้างช่องโหว่ที่ใช้งานได้สำหรับแพลตฟอร์ม Windows ขณะนี้การแก้ไขช่องโหว่มีให้บริการเฉพาะในรูปแบบของแพทช์ในพื้นที่เก็บข้อมูลโปรเจ็กต์ ซึ่งรวมอยู่ในรุ่นทดสอบของ OpenOffice 4.1.11 ยังไม่มีการอัปเดตสำหรับสาขาที่เสถียร

ปัญหาเกิดจากการที่ OpenOffice อาศัยค่า fieldLength และ fieldType ในส่วนหัวของไฟล์ DBF เพื่อจัดสรรหน่วยความจำ โดยไม่ได้ตรวจสอบว่าประเภทข้อมูลจริงในฟิลด์ตรงกันหรือไม่ ในการโจมตี คุณสามารถระบุประเภท INTEGER ในค่า fieldType ได้ แต่วางข้อมูลที่ใหญ่กว่าและระบุค่า fieldLength ที่ไม่ตรงกับขนาดของข้อมูลด้วยประเภท INTEGER ซึ่งจะนำไปสู่ส่วนท้ายของข้อมูล จากฟิลด์ที่ถูกเขียนเกินบัฟเฟอร์ที่จัดสรร ผลจากบัฟเฟอร์ล้นที่มีการควบคุม ผู้วิจัยสามารถกำหนดตัวชี้ส่งคืนจากฟังก์ชันใหม่ได้ และใช้เทคนิค Return-Oriented Programming (ROP) เพื่อให้บรรลุการประมวลผลโค้ดของเขา

เมื่อใช้เทคนิค ROP ผู้โจมตีจะไม่พยายามวางโค้ดของเขาในหน่วยความจำ แต่ดำเนินการกับชิ้นส่วนคำสั่งของเครื่องที่มีอยู่ในไลบรารีที่โหลดแล้ว ซึ่งลงท้ายด้วยคำสั่งส่งคืนการควบคุม (ตามกฎแล้ว นี่คือจุดสิ้นสุดของฟังก์ชันไลบรารี) . การทำงานของการหาประโยชน์นั้นอยู่ที่การสร้างสายการเรียกไปยังบล็อกที่คล้ายกัน (“แกดเจ็ต”) เพื่อให้ได้ฟังก์ชันที่ต้องการ แกดเจ็ตที่ใช้ในการใช้ประโยชน์จาก OpenOffice คือโค้ดจากไลบรารี libxml2 ที่ใช้ใน OpenOffice ซึ่งแตกต่างจาก OpenOffice ตรงที่ถูกคอมไพล์โดยไม่มีกลไกการป้องกัน DEP (Data Execution Prevention) และ ASLR (Address Space Layout Randomization)

นักพัฒนา OpenOffice ได้รับแจ้งถึงปัญหานี้ในวันที่ 4 พฤษภาคม หลังจากนั้นมีกำหนดการเปิดเผยช่องโหว่ต่อสาธารณะในวันที่ 30 สิงหาคม เนื่องจากการอัปเดตสาขาที่เสถียรไม่เสร็จสมบูรณ์ภายในวันที่กำหนด ผู้วิจัยจึงเลื่อนการเปิดเผยรายละเอียดไปเป็นวันที่ 18 กันยายน แต่นักพัฒนา OpenOffice ไม่สามารถสร้างรุ่น 4.1.11 ได้ภายในวันนี้ เป็นที่น่าสังเกตว่าในระหว่างการวิจัยเดียวกัน มีการระบุช่องโหว่ที่คล้ายกันในโค้ดสนับสนุนรูปแบบ DBF ใน Microsoft Office Access (CVE-2021–38646) ซึ่งจะเปิดเผยรายละเอียดในภายหลัง ไม่พบปัญหาใน LibreOffice

ที่มา: opennet.ru

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