Luka w Vimie, która prowadzi do wykonania kodu podczas otwierania złośliwego pliku

W edytorach tekstu Vim и Neovimi znaleziony słaby punkt (CVE-2019-12735), co pozwala na wykonanie dowolnego kodu podczas otwierania specjalnie zaprojektowanego pliku. Problem pojawia się, gdy aktywny jest domyślny tryb modeline („:set modeline”), który pozwala na zdefiniowanie opcji edycji w przetwarzanym pliku. Luka naprawiona w wersjach
Vima 8.1.1365 и Neovim 0.3.6.

Poprzez modeline można zainstalować tylko ograniczoną liczbę opcji. Jeśli wyrażenie zostanie określone jako wartość opcji, zostanie ono wykonane w trybie piaskownicy, który umożliwia jedynie najprostsze bezpieczne operacje. W tym przypadku poprawne polecenie zawiera polecenie „:source”, w którym można użyć modyfikatora „!”. do uruchamiania dowolnych poleceń z określonego pliku. Zatem, aby wykonać kod, wystarczy wskazać w linii modelu konstrukcję typu „setfoldexpr=execute('\:source! Some_file'):”. W Neovimie wywołanie wykonywania jest zabronione, ale zamiast tego można użyć funkcjiasser_fails.

Na przykład, aby uruchomić polecenie „uname -a”, po prostu otwórz plik w Vimie lub Neovimie, którego pierwsza lub ostatnia linia mówi:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails(“źródło\!\ \%”):fdl=0:fdt=”

Firma „źródło! %” odczyta polecenia z bieżącego pliku i odpowiednio wykona „:!uname -a”. Sekwencji ucieczki można użyć do ukrycia danej linii przed wyjściem narzędzia cat. Na przykład w tym wykorzystać prototyp podczas otwierania pliku w vimie tworzone jest połączenie sieciowe z dostępem powłoki do systemu ofiary, ale plik ten nie wzbudzi podejrzeń, gdy zostanie przesłany do terminala za pomocą narzędzia cat.

Możesz sprawdzić aktywność trybu modeline za pomocą polecenia „:set modeline?”. Aby to wyłączyć, możesz dodać linię „set nomodeline” do vimrc. W dystrybucjach problem został rozwiązany RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Luka pozostaje niezałatana Debian (w Debianie modeline jest domyślnie wyłączony, więc podatność nie pojawia się w stanie domyślnym).

Źródło: opennet.ru

Dodaj komentarz