آسیب پذیری در Vim که منجر به اجرای کد هنگام باز کردن یک فایل مخرب می شود

در ویرایشگرهای متن نیرو и نئویم یافت آسیب پذیری (CVE-2019-12735) که اجازه می دهد تا کد دلخواه هنگام باز کردن یک فایل طراحی شده خاص اجرا شود. مشکل زمانی رخ می‌دهد که حالت پیش‌فرض modeline (":set modeline") فعال باشد، که به شما امکان می‌دهد گزینه‌های ویرایش را در فایل پردازش شده تعریف کنید. آسیب‌پذیری در نسخه‌ها رفع شد
Vim 8.1.1365 и Neovim 0.3.6.

فقط تعداد محدودی از گزینه ها را می توان از طریق modeline نصب کرد. اگر عبارتی به عنوان یک مقدار گزینه مشخص شود، در حالت sandbox اجرا می شود که فقط ساده ترین عملیات ایمن را امکان پذیر می کند. در این حالت، دستور معتبر شامل دستور “:source” است که در آن می توانید از اصلاح کننده “!” استفاده کنید. برای اجرای دستورات دلخواه از فایل مشخص شده. بنابراین، برای اجرای کد، کافی است در خط مدلین ساختاری مانند "set foldexpr=execute('\:source! some_file'):" را نشان دهیم. در Neovim، فراخوانی execute ممنوع است، اما assert_fails می تواند به جای آن استفاده شود.

به عنوان مثال، برای اجرای دستور "uname -a"، به سادگی فایلی را در Vim یا Neovim باز کنید که خط اول یا آخر آن می گوید:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

شرکت «منبع! %" دستورات فایل جاری را می خواند و بر این اساس ":!uname -a" را اجرا می کند. دنباله های فرار می توانند برای مخفی کردن یک خط مشخص از خروجی توسط ابزار گربه استفاده شوند. به عنوان مثال، در این بهره برداری از نمونه اولیه هنگام باز کردن یک فایل در vim، یک اتصال شبکه با دسترسی پوسته به سیستم قربانی ایجاد می شود، اما این فایل در هنگام خروجی به ترمینال با استفاده از ابزار cat، شک ایجاد نمی کند.

با دستور “:set modeline?” می توانید فعالیت حالت modeline را بررسی کنید. برای غیرفعال کردن آن، می توانید خط "set nomodeline" را به vimrc اضافه کنید. در توزیع ها مشکل حل می شود ریل, SUSE/openSUSE, کلاه نمدی مردانه, FreeBSD, اوبونتو, قوس لینوکس и ALT. این آسیب‌پذیری بدون اصلاح باقی می‌ماند دبیان (در Debian modeline به طور پیش فرض غیرفعال است، بنابراین آسیب پذیری در حالت پیش فرض ظاهر نمی شود).

منبع: opennet.ru

اضافه کردن نظر