Kötü amaçlı bir dosya açıldığında kod yürütülmesine neden olan Vim'deki güvenlik açığı

Metin editörlerinde Gayret и neovim kurmak Güvenlik açığı (CVE-2019-12735) özel hazırlanmış bir dosya açıldığında rastgele kodun yürütülmesine izin verir. Sorun, işlenen dosyadaki düzenleme seçeneklerini tanımlamanıza olanak tanıyan varsayılan modeline (":set modeline") modu etkin olduğunda kendini gösterir. Sürümlerdeki güvenlik açığı düzeltildi
Vim 8.1.1365 и Neovim 0.3.6.

Modeline aracılığıyla yalnızca sınırlı sayıda seçenek ayarlanabilir. Bir ifade seçenek değeri olarak belirtilirse, yalnızca en basit güvenli işlemlerin kullanılmasına izin veren korumalı alan modunda yürütülür. Aynı zamanda “!” değiştiricisini kullanabileceğiniz “:source” komutu da geçerli komutlar arasındadır. belirtilen dosyadan rastgele komutlar çalıştırmak için. Bu nedenle, kodu çalıştırmak için model satırında "setfoldexpr=execute('\:source! some_file'):" gibi bir yapı belirtmek yeterlidir. Neovim, yürütme çağrısına izin vermiyor, ancak bunun yerineasser_fails kullanabilirsiniz.

Örneğin, "uname -a" komutunu çalıştırmak için Vim veya Neovim'de ilk veya son satırında şunu yazan bir dosyayı açmanız yeterlidir:

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

Kaynak! %", mevcut dosyadaki komutları okuyacak ve buna göre ":!uname -a" komutunu çalıştıracaktır. Cat yardımcı programı belirli bir dizeyi çıktıdan gizlemek için kaçış dizilerini kullanabilir. Örneğin, bunda prototipten yararlanma vim'de bir dosya açıldığında, kurbanın sistemine kabuk erişimiyle bir ağ bağlantısı oluşturulur, ancak bu dosya, cat yardımcı programıyla terminale gönderildiğinde şüphe uyandırmayacaktır.

":set modeline?" komutu ile modeline modunun aktif olup olmadığını kontrol edebilirsiniz. Bunu devre dışı bırakmak için vimrc'ye "set nomodeline" satırını ekleyebilirsiniz. Dağıtımlarda sorun çözüldü RHEL, SUSE/openSUSE, Fötr şapka, FreeBSD, Ubuntu, Arch Linux и ALT. Güvenlik açığı yamasız kalıyor Debian (Debian'da modeline varsayılan olarak devre dışıdır, dolayısıyla güvenlik açığı varsayılan durumda kendini göstermez).

Kaynak: opennet.ru

Yorum ekle