Vim

کاربران لینوکس، مراقب باشید!

اگر اخیراً سیستم‌عامل لینوکس خود را به‌روز نکرده‌اید، به‌خصوص ابزار ویرایشگر متن command-line آن را، سعی نکنید محتوای یک پرونده را با استفاده از Vim یا Neovim مشاهده کنید.

محقق امنیتی، آرمین رزمجو[۱] اخیراً در Vim و Neovim  یک آسیب‌پذیری اجرای دستور OS دلخواه با شدت بالا را کشف کرده است (CVE-2019-12735) که هر دو جزو محبوب‌ترین و قدرتمندترین ابزارهای ویرایش متن command-line هستند که روی اکثر سیستم‌عامل‌های مبتنی بر لینوکس از پیش نصب‌شده هستند.

در سیستم‌های لینوکس، ویرایشگر Vim به کاربران این امکان را می‌دهد هر پرونده‌ای ازجمله متن، اسکریپت‌های برنامه‌نویسی و اسناد را ایجاد، مشاهده یا ویرایش کنند.

ازآنجایی‌که Neovim فقط یک نسخه مشتق شده از Vim است، باتجربه کاربری بهتر، افزونه‌ها و رابط کاربری گرافیکی، این آسیب‌پذیری اجرای کد روی آن نیز قرار دارد.

عیب اجرای کد در Vim و Neovim

رزمجو یک نقص در روشی که ویرایشگر Vim ویژگی modelines را مدیریت می‌کند؛ کشف کرد[۲]. modelines یک ویژگی است که به‌طور پیش‌فرض برای یافتن و اعمال مجموعه‌ای از تنظیمات سفارشی ذکرشده توسط سازنده‌ی پرونده در نزدیکی خطوط شروع و پایان در یک سند، فعال می‌شود.

گرچه این ویرایشگر فقط به زیرمجموعه‌ای از گزینه‌ها در modelines (به دلایل امنیتی) اجازه می‌دهد و در صورت داشتن یک عبارت ناامن از حفاظت sandbox استفاده می‌کند، اما رزم‌جو نشان داد که استفاده از دستور :source! (با یک اصلاح‌کننده ضربه [!]) می‌تواند برای دور زدن sandbox استفاده شود.

بنابراین، فقط باز کردن یک پرونده ساختگی دستکاری‌شده با استفاده از Vim یا Neovim می‌تواند به مهاجمان اجازه دهد دستورات مخفیانه را روی سیستم لینوکس شما اجرا کنند و از راه دور آن را کنترل کنند.

این محقق همچنین دو مورد بهره‌بردار اثبات ادعا را برای عموم منتشر کرده است که یکی از آن‌ها یک سناریوی حمله به زندگی واقعی را نشان می‌دهد که در آن مهاجمی از راه دور به‌محض باز شدن پرونده‌ای از سیستم قربانی به یک reverse shell دسترسی پیدا می‌کند.

سازندگان Vim نسخه ۸٫۱٫۱۳۶۵ و Neovim نسخه ۰٫۳٫۶برای رفع این مشکل به‌روزرسانی‌هایی را برای هر دو سرویس منتشر کرده‌اند که کاربران باید در اسرع وقت آن‌ها را نصب کنند.

علاوه بر این، این محقق امنیتی همچنین به کاربران توصیه کرده است که موارد زیر را اعمال کنند:

  • غیرفعال کردن ویژگی modelines
  • غیرفعال کردن modelineexpr برای غیرفعال کردن عبارات در modelines
  • از افزونه safemodlines، یک جایگزین مطمئن برای modelines  استفاده کنید.

منابع

[۱] https://twitter.com/rawsec

[۲] https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md

[۳] https://thehackernews.com/2019/06/linux-vim-vulnerability.html