ثغرة أمنية في Vim تؤدي إلى تنفيذ تعليمات برمجية عند فتح ملف ضار

في محرري النصوص همة и نيوفيم أسس عالي التأثر (CVE-2019-12735)، والذي يسمح بتنفيذ تعليمات برمجية عشوائية عند فتح ملف مصمم خصيصًا. تحدث المشكلة عندما يكون وضع النموذج الافتراضي (":set modeline") نشطًا، مما يسمح لك بتحديد خيارات التحرير في الملف الذي تتم معالجته. تم إصلاح الثغرة الأمنية في الإصدارات
فيم 8.1.1365 и نيوفيم 0.3.6.

يمكن تثبيت عدد محدود فقط من الخيارات عبر الطراز. إذا تم تحديد تعبير كقيمة خيار، فسيتم تنفيذه في وضع الحماية، والذي يسمح فقط بأبسط العمليات الآمنة. في هذه الحالة، يتضمن الأمر الصالح الأمر ":source"، والذي يمكنك من خلاله استخدام المُعدِّل "!". لتشغيل أوامر عشوائية من الملف المحدد. وبالتالي، لتنفيذ التعليمات البرمجية، يكفي الإشارة في سطر النموذج إلى إنشاء مثل "setfoldexpr=execute('\:source! some_file'):". في Neovim، يُحظر استدعاء التنفيذ، ولكن يمكن استخدام Assur_fails بدلاً من ذلك.

على سبيل المثال، لتشغيل الأمر "uname -a"، ما عليك سوى فتح ملف في Vim أو Neovim الذي يقول السطر الأول أو الأخير منه:

:!uname -a||» السادس:fen:fdm=expr:fde=assert_fails(“source\!\ \%”):fdl=0:fdt=”

شركة "المصدر! %" سوف يقرأ الأوامر من الملف الحالي وبالتالي ينفذ ":!uname -a". يمكن استخدام تسلسل الهروب لإخفاء سطر معين من الإخراج بواسطة الأداة المساعدة cat. على سبيل المثال، في هذا استغلال النموذج الأولي عند فتح ملف في vim، يتم إنشاء اتصال بالشبكة مع وصول shell إلى نظام الضحية، لكن هذا الملف لن يثير الشك عند إخراجه إلى الوحدة الطرفية باستخدام الأداة المساعدة cat.

يمكنك التحقق من نشاط وضع النموذج باستخدام الأمر ":set modelline؟". لتعطيله، يمكنك إضافة السطر "تعيين nomodelline" إلى vimrc. في التوزيعات يتم إصلاح المشكلة في RHEL, SUSE / openSUSE, فيدورا, فري, أوبونتو, قوس لينكس и ALT. لا تزال الثغرة الأمنية غير مُصححة في ديبيان (في نموذج دبيان يتم تعطيله افتراضيًا، لذلك لا تظهر الثغرة الأمنية في الحالة الافتراضية).

المصدر: opennet.ru

إضافة تعليق