ช่องโหว่ใหม่ได้รับการแก้ไขในโปรแกรมแก้ไขข้อความที่ติดตั้งไว้ล่วงหน้าในการแจกแจงต่างๆ พบลินุกซ์ ในโปรแกรมแก้ไขข้อความ Vim และ Neovim (CVE-2019-12735)
ข้อบกพร่องที่พบในตัวแก้ไขเหล่านี้ อนุญาตให้แฮกเกอร์ควบคุมคอมพิวเตอร์เมื่อผู้ใช้เปิดไฟล์ข้อความที่เป็นอันตราย ปัญหานี้เกิดขึ้นพร้อมกับกิจกรรมของ modeline ที่เปิดใช้งานโดยค่าเริ่มต้น (": set modeline") ซึ่งช่วยให้คุณสามารถกำหนดตัวเลือกการแก้ไขในไฟล์ที่กำลังดำเนินการได้
Vim และส้อม NeoVim มีข้อบกพร่องที่อยู่ใน modelines คุณลักษณะนี้ช่วยให้ผู้ใช้สามารถระบุขนาดหน้าต่างและตัวเลือกแบบกำหนดเองอื่น ๆ ที่อยู่ใกล้จุดเริ่มต้นหรือจุดสิ้นสุดของไฟล์ข้อความ
คุณลักษณะนี้เปิดใช้งานโดยค่าเริ่มต้นในเวอร์ชันก่อน Vim 8.1.1365 Neovim 0.3.6 และใช้กับไฟล์ทุกประเภทรวมถึงไฟล์. txt
เกี่ยวกับช่องโหว่ใน Vim
ผ่าน Modeline อนุญาตให้มีตัวเลือกจำนวน จำกัด เท่านั้น สหากระบุนิพจน์เป็นค่าตัวเลือกนิพจน์จะทำงานในโหมดแซนด์บ็อกซ์ซึ่งอนุญาตให้ใช้เฉพาะการดำเนินการที่ปลอดภัยที่ง่ายที่สุดเท่านั้น
ในเวลาเดียวกัน คำสั่ง ": source" เป็นหนึ่งในคำสั่งที่อนุญาตซึ่งคุณสามารถใช้ตัวปรับแต่ง "!" เพื่อเรียกใช้คำสั่งโดยพลการจากไฟล์ที่ระบุ
ดังนั้นในการรันโค้ดจึงเพียงพอที่จะระบุในบรรทัด modeline การสร้างแบบฟอร์ม "set foldexpr = execute ('\: source! some_file'):" ใน Neovim การเรียกการดำเนินการเป็นสิ่งต้องห้าม แต่สามารถใช้ assert_fails แทนได้
ในทางกลับกันในแซนด์บ็อกซ์ได้รับการออกแบบมาเพื่อป้องกันผลข้างเคียง:
ตัวเลือก "foldexpr", "formatexpr", "includingeexpr", "indentexpr", "statusline" และ "foldtext" ทั้งหมดสามารถประเมินได้ในแซนด์บ็อกซ์ ซึ่งหมายความว่าคุณได้รับการปกป้องจากการแสดงออกเหล่านี้ที่มีผลข้างเคียงที่ไม่พึงประสงค์ สิ่งนี้ให้ความปลอดภัยบางอย่างเมื่อตัวเลือกเหล่านี้ถูกกำหนดจากแบบจำลอง
ในขณะที่โมเดล จำกัด คำสั่งที่มีอยู่และดำเนินการในสภาพแวดล้อมที่แยกออกจากระบบปฏิบัติการ นักวิจัย Armin Razmjou ตั้งข้อสังเกตว่าคำสั่ง: font! หลีกเลี่ยงการป้องกันนี้:
"เธออ่านและเรียกใช้คำสั่งในไฟล์ที่กำหนดราวกับว่ามีการป้อนด้วยตนเองโดยจะดำเนินการเมื่อเหลือแซนด์บ็อกซ์" นักวิจัยเขียนในข้อความที่เผยแพร่เมื่อต้นเดือนนี้ -ci.
ดังนั้นเราสามารถสร้างบรรทัดแบบจำลองที่เรียกใช้โค้ดนอกแซนด์บ็อกซ์ได้เล็กน้อย
โพสต์มีไฟล์ข้อความที่มีหลักฐานยืนยันหลักการสองไฟล์ซึ่งหนึ่งในนั้นแสดงให้เห็นภาพของภัยคุกคาม
หนึ่งในนั้นเปิดเปลือกย้อนกลับบนคอมพิวเตอร์ที่ใช้ Vim หรือ NeoVim จากนั้นผู้โจมตีสามารถเรียกใช้คำสั่งที่ต้องการได้ที่เครื่องที่ขออนุญาต
"PoC นี้อธิบายถึงวิธีการโจมตีที่แท้จริงซึ่งมีการเปิดเชลล์ย้อนกลับเมื่อผู้ใช้เปิดไฟล์" Razmjou เขียน «เพื่อซ่อนการโจมตีไฟล์จะถูกเขียนใหม่ทันทีเมื่อเปิดขึ้น นอกจากนี้ PoC ยังใช้ลำดับการหลีกเลี่ยงเทอร์มินัลเพื่อซ่อนบรรทัดโมเดลเมื่อพิมพ์เนื้อหาด้วย cat (cat -v เปิดเผยเนื้อหาจริง) «
ช่องโหว่ในการดำเนินการคำสั่งต้องการการเปิดใช้งานฟังก์ชันการสร้างแบบจำลองมาตรฐานเช่นเดียวกับลีนุกซ์บางรุ่นโดยค่าเริ่มต้น พบข้อบกพร่องใน Vim ก่อนเวอร์ชัน 8.1.1365 และใน Neovim ก่อนเวอร์ชัน 0.3.6
คำแนะนำนี้จากฐานข้อมูลช่องโหว่แห่งชาติของสถาบันมาตรฐานและเทคโนโลยีแห่งชาติแสดงให้เห็นว่าการกระจาย Debian และ Fedora Linux ได้เริ่มปล่อยเวอร์ชันคงที่แล้ว
ในการแจกแจงปัญหาจะได้รับการแก้ไขใน RHEL, SUSE / openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux และ ALT
ช่องโหว่นี้ยังคงไม่ได้รับการแก้ไขใน Debian (ใน Debian modeline จะถูกปิดใช้งานโดยค่าเริ่มต้นดังนั้นช่องโหว่จะไม่ปรากฏในสถานะเริ่มต้น)
MacOS เวอร์ชันล่าสุดยังคงใช้เวอร์ชันที่มีช่องโหว่แม้ว่าการโจมตีจะใช้ได้เฉพาะเมื่อผู้ใช้เปลี่ยนการตั้งค่าเริ่มต้นที่เปิดใช้งานคุณสมบัติ modelines