ช่องโหว่ใน Vim นำไปสู่การเรียกใช้โค้ดเมื่อเปิดไฟล์ที่เป็นอันตราย

ในโปรแกรมแก้ไขข้อความ เป็นกลุ่ม и นีโอวิม พบ จุดอ่อน (CVE-2019-12735) ซึ่งอนุญาตให้เรียกใช้โค้ดโดยอำเภอใจเมื่อเปิดไฟล์ที่ออกแบบเป็นพิเศษ ปัญหาเกิดขึ้นเมื่อโหมด modeline เริ่มต้น (“:set modeline”) ทำงานอยู่ ซึ่งช่วยให้คุณสามารถกำหนดตัวเลือกการแก้ไขในไฟล์ที่ประมวลผลได้ ช่องโหว่ได้รับการแก้ไขในการเผยแพร่
กลุ่ม 8.1.1365 и นีโอวิม 0.3.6.

สามารถติดตั้งตัวเลือกได้จำนวนจำกัดผ่านโมเดลไลน์เท่านั้น หากมีการระบุนิพจน์เป็นค่าตัวเลือก นิพจน์นั้นจะดำเนินการในโหมดแซนด์บ็อกซ์ ซึ่งอนุญาตเฉพาะการดำเนินการที่ปลอดภัยที่ง่ายที่สุดเท่านั้น ในกรณีนี้ คำสั่งที่ถูกต้องจะมีคำสั่ง “:source” ซึ่งคุณสามารถใช้ตัวแก้ไข “!” ได้ เพื่อรันคำสั่งที่กำหนดเองจากไฟล์ที่ระบุ ดังนั้น ในการรันโค้ด ก็เพียงพอแล้วที่จะระบุโครงสร้างเช่น “set foldexpr=execute('\:source! some_file'):" ในบรรทัดโมเดลไลน์ ใน Neovim ห้ามเรียกใช้การเรียกใช้งาน แต่สามารถใช้ assert_fails แทนได้

ตัวอย่างเช่น หากต้องการรันคำสั่ง “uname -a” เพียงเปิดไฟล์ใน Vim หรือ Neovim ซึ่งบรรทัดแรกหรือบรรทัดสุดท้ายระบุว่า:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails(“แหล่งที่มา\!\ \%”):fdl=0:fdt=”

บริษัท “ที่มา! %" จะอ่านคำสั่งจากไฟล์ปัจจุบันและดำเนินการตาม ":!uname -a" ลำดับ Escape สามารถใช้เพื่อซ่อนบรรทัดที่กำหนดจากเอาต์พุตโดยยูทิลิตี้ cat ยกตัวอย่างในเรื่องนี้ ใช้ประโยชน์จากต้นแบบ เมื่อเปิดไฟล์เป็นกลุ่ม การเชื่อมต่อเครือข่ายจะถูกสร้างขึ้นด้วยการเข้าถึงเชลล์ไปยังระบบของเหยื่อ แต่ไฟล์นี้จะไม่ทำให้เกิดความสงสัยเมื่อส่งออกไปยังเทอร์มินัลโดยใช้ยูทิลิตี้ cat

คุณสามารถตรวจสอบกิจกรรมของโหมดโมเดลไลน์ได้ด้วยคำสั่ง “:set modeline?” หากต้องการปิดใช้งานคุณสามารถเพิ่มบรรทัด “set nomodeline” ลงใน vimrc ในการแจกแจงปัญหาได้รับการแก้ไขแล้ว RHEL, SUSE/เปิดSUSE, Fedora, FreeBSD, อูบุนตู, Arch ลินุกซ์ и ALT. ช่องโหว่ยังคงไม่ได้รับการติดตั้ง debian (ใน Debian modeline ถูกปิดใช้งานโดยค่าเริ่มต้น ดังนั้นช่องโหว่จึงไม่ปรากฏในสถานะเริ่มต้น)

ที่มา: opennet.ru

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