Podatności Vim
125 znanych podatności CVE w Vim, przetłumaczonych i ocenionych.
- CVE-2026-41411Średnie
Vim to otwartoźródłowy edytor tekstu wiersza poleceń. W wersjach przed 9.2.0357 istnieje podatność na wstrzyknięcie poleceń w przetwarzaniu plików tagów. Podczas rozwiązywania tagu pole nazwy pliku jest poddawane ekspansji symboli wieloznacznych; jeśli zawiera składnię backtick (np. `command`), Vim wykonuje osadzone polecenie przez powłokę systemową z pełnymi uprawnieniami użytkownika.
- CVE-2026-28422Niskie
Vim to otwartoźródłowy edytor tekstu wiersza poleceń. W wersjach przed 9.2.0078 występuje przepełnienie bufora stosu w funkcji `build_stl_str_hl()` podczas renderowania linii statusu z wielobajtowym znakiem wypełnienia na bardzo szerokim terminalu. Wersja 9.2.0078 naprawia ten problem.
- CVE-2026-28421Średnie
Vim w wersjach przed 9.2.0077 ma przepełnienie bufora sterty i błąd segmentacji (SEGV) w logice odzyskiwania pliku swap. Oba problemy wynikają z niezwalidowanych pól odczytywanych ze spreparowanych bloków wskaźników w pliku swap.
- CVE-2026-28420Średnie
Vim, otwartoźródłowy edytor tekstu wiersza poleceń, w wersjach przed 9.2.0076 zawiera przepełnienie bufora oparte na stercie (zapis) oraz odczyt poza granicami bufora w emulatorze terminala podczas przetwarzania maksymalnej liczby znaków łączących z dodatkowych płaszczyzn Unicode. Wersja 9.2.0076 naprawia ten problem.
- CVE-2026-28419Średnie
W Vim przed wersją 9.2.0075 istnieje podczytanie poza bufor (heap-based buffer underflow) w logice parsowania plików tags w stylu Emacs. Przy przetwarzaniu zniekształconego pliku tags, w którym separator występuje na początku linii, Vim próbuje odczytać pamięć bezpośrednio przed zaalokowanym buforem.
- CVE-2026-28418Średnie
Vim jest podatny na przepełnienie bufora oparte na stercie i odczyt poza granicami w logice parsowania plików tagów w stylu Emacs przed wersją 9.2.0074. Przetwarzając złośliwy plik tagów, Vim może odczytać do 7 bajtów poza przydzieloną pamięcią. Wersja 9.2.0074 naprawia problem.
- CVE-2026-28417Średnie
W wtyczce netrw dołączanej do edytora Vim istnieje luka umożliwiająca wstrzyknięcie poleceń systemu operacyjnego. Otwarcie spreparowanego adresu URL (np. przez obsługę protokołu scp://) pozwala atakującemu na wykonanie dowolnych poleceń powłoki z uprawnieniami procesu Vim. Problem naprawiono w wersji 9.2.0073.
- CVE-2026-26269Średnie
W integracji NetBeans w Vimie istnieje przepełnienie bufora stosu podczas przetwarzania polecenia specialKeys. Złośliwy serwer NetBeans może przepełnić 64-bajtowy bufor keybuf pojedynczym poleceniem specialKeys. Problem naprawiono w wersji 9.1.2148.
- CVE-2024-22667Wysokie
W edytorze Vim w wersjach przed 9.0.2142 występuje przepełnienie bufora na stosie, ponieważ funkcja did_set_langmap w pliku map.c używa sprintf do zapisu do bufora błędu przekazywanego do funkcji zwrotnych opcji.
- CVE-2017-11109Wysokie
Vim 8.0 pozwala atakującym na spowodowanie odmowy usługi (nieważne zwolnienie pamięci) lub potencjalnie innego nieokreślonego wpływu poprzez spreparowany plik źródłowy (znany jako -S).
- CVE-2016-1248Wysokie
Vim przed poprawką 8.0.0056 nieprawidłowo waliduje wartości dla opcji 'filetype', 'syntax' i 'keymap', co może prowadzić do wykonania dowolnego kodu po otwarciu pliku z odpowiednio skonstruowanym modelem.
- CVE-2024-43802Średnie
Vim to ulepszona wersja edytora tekstu vi z systemu Unix. Podczas opróżniania bufora typeahead, Vim przesuwa bieżącą pozycję w buforze, ale nie sprawdza, czy jest wystarczająco dużo miejsca na kolejne znaki. Może to prowadzić do przesunięcia pozycji tb_off poza bufor.
- CVE-2024-47814Niskie
W edytorze Vim przed wersją 9.1.0764 wykryto błąd use-after-free. Podczas zamykania bufora widocznego w oknie, autokomenda BufWinLeave może ponownie otworzyć ten sam bufor w nowym oknie, prowadząc do użycia po zwolnieniu.
- CVE-2026-34714Krytyczne
Podatność w Vimie przed wersją 9.2.0272 umożliwia natychmiastowe wykonanie kodu po otwarciu spreparowanego pliku w domyślnej konfiguracji. Problem wynika z wstrzyknięcia %{expr} w tabpanel, które nie ma ustawionej flagi P_MLE.
- CVE-2017-6350Krytyczne
W programie vim przed poprawką 8.0.0378 występuje przepełnienie całkowite w miejscu alokacji pamięci unserialize_uep, które może wystąpić, gdy nie są prawidłowo weryfikowane wartości długości drzewa podczas odczytu uszkodzonego pliku cofania. Może to prowadzić do przepełnienia bufora.
- CVE-2017-6349Krytyczne
W programie vim przed poprawką 8.0.0377 występuje przepełnienie całkowitej liczby w miejscu alokacji pamięci u_read_undo, gdy nie są prawidłowo weryfikowane wartości długości drzewa podczas odczytu uszkodzonego pliku undo, co może prowadzić do przepełnienia bufora.
- CVE-2017-5953Krytyczne
Vim przed poprawką 8.0.0322 nieprawidłowo waliduje wartości długości drzewa podczas obsługi pliku słownika, co może prowadzić do przepełnienia całkowitego w miejscu alokacji pamięci oraz skutkować przepełnieniem bufora.
- CVE-2026-43961Wysokie
Wtyczka netrw w Vimie zawiera podatność, która pozwala na wykonanie dowolnego kodu Vimscript przez specjalnie spreparowaną nazwę pliku z cudzysłowami i fragmentami wyrażeń. Może to prowadzić do wykonania poleceń powłoki z uprawnieniami użytkownika uruchamiającego Vima.
- CVE-2026-73073Wysokie
Vim przed wersją 9.2.0845 ma podatność w funkcji StructMembers() w runtime/autoload/ccomplete.vim, która konstruuje i wykonuje polecenie vimgrep z niewystarczająco escapowaną wartością typeref: lub typename: z pliku tags, co pozwala na wykonanie dowolnych poleceń Ex i systemu operacyjnego, gdy użytkownik wywoła autouzupełnianie C (CTRL-X CTRL-O) na dostępie do składowej, której typ jest rozwiązywany z tego pliku tags. Problem naprawiono w wersji 9.2.0845.
- CVE-2026-73078Wysokie
Vim, edytor tekstu wiersza poleceń, przed wersją 9.2.0840 ma podatność w runtime/plugin/netrwPlugin.vim i runtime/pack/dist/opt/netrw/autoload/netrw.vim, gdzie konstruowane są wpisy menu Bookmarks, History i Targets przez interpolację kontrolowanych przez atakującego ścieżek katalogów do wykonywanych poleceń :menu. Funkcje s:NetrwBookmarkMenu(), s:NetrwTgtMenu(), g:netrw_menu_escape, EX_TRLBAR i netrw#MakeTgt() nie neutralizują separatora poleceń | ani pojedynczych cudzysłowów w pięciu miejscach, co pozwala spreparowanej ścieżce przeglądanej lub dodanej do zakładek w GUI Vim na wykonanie dowolnych poleceń Ex i systemu operacyjnego. Problem naprawiono w wersji 9.2.0840.
- CVE-2026-73077Wysokie
W Vimie przed wersją 9.2.0839 wtyczki ftplugin dla sh, zsh i ps1 przekazują zaznaczenia w trybie wizualnym sterowane przez atakującego do poleceń keywordprg bez bezpiecznego oddzielania argumentów powłoki. Funkcje fnameescape() i PATH_ESC_CHARS nie neutralizują metaznaków powłoki, co pozwala na wykonanie dowolnych poleceń systemu operacyjnego z uprawnieniami użytkownika uruchamiającego Vima. Problem naprawiono w wersji 9.2.0839.
- CVE-2026-73076Wysokie
W Vimie przed wersją 9.2.0847 plik runtime/autoload/vimball.vim pozwala spreparowanemu członkowi vimball o nazwie .VimballRecord nadpisać rekord instalacji poleceniami wybranymi przez atakującego. Gdy później funkcja vimball#RmVimball() przetwarza pasujący wpis rekordu, zapisane polecenia Ex, w tym polecenia systemu operacyjnego wywoływane przez :!, wykonują się z uprawnieniami użytkownika uruchamiającego Vima. Problem naprawiono w wersji 9.2.0847.
- CVE-2026-73075Niskie
Vim, edytor tekstu z linii poleceń, w wersjach od 9.2.0469 do 9.2.0843 zawiera podatność w funkcji popup_mark_opacity_zindex() w src/popupwin.c, która może użyć ujemnej wartości w_winrow dla popupu zakotwiczonego we właściwości tekstu z clipwindow i opacity, co prowadzi do odczytu poza zakresem i warunkowego zapisu. Problem został naprawiony w wersji 9.2.0843.
- CVE-2026-73074Średnie
W Vimie przed wersją 9.2.0841 funkcja prop_add_one() w src/textprop.c używa wartości proplen z get_text_props() do zwiększenia licznika właściwości uint16_t powyżej 0xffff, zawijając licznik do zera i kopiując istniejące rekordy właściwości tekstu do alokacji sterty o rozmiarze nieodpowiednim dla żadnego z nich. Problem naprawiono w wersji 9.2.0841.
- CVE-2026-73072Wysokie
W Vimie przed wersją 9.2.0846 funkcja set_sofo() w src/spellfile.c ponownie używa sl_sal_first[] bez resetowania wartości pozostawionych przez set_sal_first(), więc spreparowany plik słownika zawierający sekcję SN_SAL przed sekcją SN_SOFO powoduje niedoszacowane listy mapowań i zapisy poza alokacją sterty pod wpływem atakującego. Problem naprawiono w wersji 9.2.0846.
- CVE-2026-73071Niskie
Vim, otwartoźródłowy edytor tekstu, zawiera podatność w funkcji json_decode_item() w src/json.c, która może zachować nieaktualny wskaźnik po wywołaniu json_decode_string(), co prowadzi do odczytu zwolnionej pamięci w przypadku nieprawidłowego ciągu JSON obejmującego wiele buforów. Problem dotyczy wersji od 9.2.0511 do 9.2.0844 i został naprawiony w wersji 9.2.0844.
- CVE-2026-73070Średnie
Vim, edytor tekstu z linii poleceń, przed wersją 9.2.0842 zawiera podatność w backendzie serwera socket w src/socketserver.c, który akceptuje nieograniczoną liczbę połączeń klientów, co powoduje przepełnienie struktur fd_set w src/channel.c i tablic struct pollfd w src/os_unix.c. Lokalny proces mogący połączyć się z socketem serwera może uszkodzić pamięć stosu lub zakończyć działanie serwera Vim. Problem naprawiono w wersji 9.2.0842.
- CVE-2026-51401Wysokie
W Vim Project w wersji 9.2.0389 i wcześniejszych występuje problem w funkcji vms_fixfilename() w pliku vim/src/os_vms.c, który umożliwia lokalnemu atakującemu wykonanie dowolnego kodu.
- CVE-2026-51400Wysokie
Vim w wersji 9.2.0389 i wcześniejszych zawiera podatność, która pozwala lokalnemu atakującemu na wykonanie dowolnego kodu poprzez funkcję vms_fixfilename() w pliku vim/src/os_vms.c.
- CVE-2026-59858Wysokie
W Vimie przed wersją 9.2.0735 skrypt uzupełniania C (ccomplete.vim) nieprawidłowo interpoluje pole typeref: lub typename: z pliku znaczników do wzorca :vimgrep wykonywanego przez :execute. Umożliwia to wstrzyknięcie dowolnego polecenia Ex poprzez specjalnie spreparowany plik .c i wywołanie uzupełniania C.
- CVE-2026-59857Średnie
W Vimie przed wersją 9.2.0725 w funkcji spell_soundfold_sal() w pliku src/spell.c występuje podatność na zapis poza granicami bufora stosu. Podczas translacji słowa przez reguły dźwiękowe pliku zaklęć, brak odpowiedniego sprawdzenia długości może doprowadzić do zapisu jednego bajtu poza końcem bufora, co może spowodować uszkodzenie ramki stosu i awarię edytora.
- CVE-2026-59856Wysokie
Podatność w Vimie przed wersją 9.2.0736 pozwala na wykonanie dowolnych poleceń systemu operacyjnego poprzez otwarcie spreparowanego pliku PHP i wywołanie funkcji omni-completion. Problem wynika z braku odpowiedniego escapowania nazwy klasy lub traita w skrypcie phpcomplete.vim, co umożliwia wstrzyknięcie poleceń Ex, w tym :!.
- CVE-2026-52860Wysokie
W Vimie przed wersją 9.2.0597 funkcja autouzupełniania Pythona (omni-completion) wykonuje zrekonstruowane definicje funkcji i klas z bieżącego bufora za pomocą exec(). Python oblicza domyślne wartości argumentów, adnotacje parametrów i wyrażenia klas w momencie definiowania, więc złośliwy bufor może wykonać kontrolowane przez atakującego wyrażenia Pythona podczas autouzupełniania. Istniejące zabezpieczenie g:pythoncomplete_allow_import nie obejmuje tej ścieżki, ponieważ kontrolowany kod nie jest przechwyconą instrukcją import/from.
- CVE-2026-52859Wysokie
W Vimie, przed wersją 9.2.0565, funkcja update_snapshot() w src/terminal.c kopiowała widoczny ekran terminala do bufora przewijania, co mogło prowadzić do przekroczenia granic tablicy. W wyniku tego, program wyświetlany w oknie :terminal mógł spowodować awarię aplikacji.
- CVE-2026-52858Wysokie
Vim przed wersją 9.2.0561 ma problem z bezpieczeństwem związany z wykonywaniem kodu z złośliwych plików .py podczas korzystania z funkcji automatycznego uzupełniania w Pythonie. W wyniku tego, złośliwy kod może być uruchamiany w kontekście użytkownika edytującego.
- CVE-2026-47162Wysokie
W Vimie przed wersją 9.2.0495 wykryto podatność na wstrzykiwanie kodu Vimscript w funkcji s:NetrwBookHistSave() wtyczki netrw. Nazwa katalogu pochodząca z systemu plików jest interpolowana do literału łańcuchowego Vimscript bez odpowiedniego escapowania apostrofów, co umożliwia wykonanie dowolnego kodu Vimscript, w tym poleceń powłoki, przy następnym wczytaniu pliku historii.
- CVE-2026-45130Średnie
W edytorze Vim przed wersją 9.2.0450 występuje przepełnienie sterty w funkcji read_compound() w pliku src/spellfile.c podczas ładowania spreparowanego pliku słownika (.spl) z aktywnym kodowaniem UTF-8. Pole długości w sekcji związków pliku słownika powoduje przepełnienie 32-bitowego mnożenia liczb całkowitych ze znakiem, co prowadzi do alokacji małego bufora dla pętli zapisu wykonującej wiele iteracji, przepełniając stertę. Ponieważ opcję 'spelllang' można ustawić z modeliny, modelina w pliku tekstowym może wywołać ładowanie pliku słownika, jeśli złośliwy plik .spl został umieszczony w runtimepath.
- CVE-2026-44656Średnie
W Vim przed wersją 9.2.0435 stwierdzono podatność na wstrzykiwanie poleceń systemu operacyjnego w uzupełnianiu linii poleceń :find. Gdy opcja path zawiera polecenia shell w apostrofach odwróconych, są one wykonywane podczas uzupełniania nazw plików. Ponieważ opcja path nie ma flagi P_SECURE, może być ustawiona z modeline, co pozwala atakującemu na wykonanie dowolnych poleceń po otwarciu pliku i wywołaniu uzupełniania :find.
- CVE-2026-42307Średnie
Edytor Vim przed wersją 9.2.0383 zawiera lukę w standardowej wtyczce netrw, która umożliwia wstrzyknięcie komend systemu operacyjnego poprzez otwarcie spreparowanego URL (np. sftp:// lub file://). Atak wymaga interakcji użytkownika.
- CVE-2026-39881Średnie
Vim przed wersją 9.2.0316 zawiera podatność na wstrzykiwanie poleceń w interfejsie netbeans. Złośliwy serwer netbeans może wykonać dowolne polecenia Ex na hoście Vima, wysyłając niesprawdzone ciągi w komunikatach defineAnnoType i specialKeys.
- CVE-2026-35177Średnie
W Vimie, wtyczka zip.vim przed wersją 9.2.0280 zawiera obejście zabezpieczenia przed podróżą po ścieżce, umożliwiające nadpisywanie dowolnych plików podczas otwierania specjalnie spreparowanych archiwów zip. Podatność ta obchodzi wcześniejszą poprawkę dla CVE-2025-53906.
- CVE-2026-34982Wysokie
Podatność w Vimie przed wersją 9.2.0276 umożliwia ominięcie zabezpieczeń modeliny i wykonanie dowolnych poleceń systemowych. Brak flagi `P_MLE` dla opcji `complete`, `guitabtooltip` i `printheader` oraz brak wywołania `check_secure()` w funkcji `mapset()` pozwalają na wykonanie złośliwego kodu z poziomu modeliny.
- CVE-2026-33412Średnie
W Vimie przed wersją 9.2.0202 wykryto podatność na wstrzykiwanie poleceń w funkcji glob() na systemach uniksowych. Poprzez umieszczenie znaku nowej linii (\n) we wzorcu przekazywanym do glob() atakujący może wykonać dowolne polecenia powłoki. Podatność zależy od ustawienia 'shell' użytkownika.
- CVE-2026-32249Średnie
W Vimie, kompilator wyrażeń regularnych NFA, podczas napotkania kolekcji zawierającej znak kombinujący jako punkt końcowy zakresu znaków (np. [0-0\u05bb]), nieprawidłowo emituje bajty składowe tego znaku jako osobne stany NFA. Prowadzi to do uszkodzenia stosu postfiksowego NFA, co skutkuje błędem segmentacji (segfault) podczas szacowania szerokości dopasowania dla asercji look-behind. Luka została naprawiona w wersji 9.2.0137.
- CVE-2026-25749Średnie
W Vimie, przed wersją 9.1.2132, występuje podatność typu przepełnienie bufora na stercie w logice rozwiązywania plików tagów, związana z opcją 'helpfile'. Problem ten występuje w funkcji get_tagfname() i polega na kopiowaniu wartości opcji 'helpfile' do bufora o stałej wielkości bez sprawdzania granic.
- CVE-2025-66476Wysokie
W Vim przed wersją 9.1.1947 na Windows występuje podatność niekontrolowanej ścieżki wyszukiwania, która pozwala na uruchomienie złośliwych plików wykonywalnych umieszczonych w bieżącym katalogu roboczym edytowanego pliku. Przy użyciu cmd.exe jako powłoki Vim rozwiązuje polecenia zewnętrzne, przeszukując bieżący katalog przed ścieżkami systemowymi.
- CVE-2025-22134Średnie
Podatność w Vim może prowadzić do przepełnienia bufora na stercie, gdy użytkownik przełącza się na inne bufory z aktywnym trybem wizualnym. Problem wynika z nieprawidłowego zakończenia trybu wizualnego, co może skutkować próbą dostępu do pamięci poza końcem linii w buforze.
- CVE-2024-41965Średnie
Vim przed wersją 9.1.0648 ma podatność podwójnego zwolnienia pamięci (double-free) w funkcji dialog_changed(). Podczas porzucania bufora z modyfikacjami Vim może zapytać użytkownika o zapis. Jeśli bufor nie miał nazwy, Vim tworzy nowy plik "Untitled", ale przy ustawianiu nazwy bufora dochodzi do podwójnego zwolnienia wskaźnika, co może prowadzić do heap-use-after-free i awarii.
- CVE-2023-48706Niskie
Vim przed wersją 9.0.2121 zawiera podatność typu heap-use-after-free, która może wystąpić podczas pierwszego wykonania polecenia `:s` z użyciem atomu sub-replace-special. Może to prowadzić do niebezpiecznego dostępu do pamięci oraz potencjalnego awarii edytora Vim.
- CVE-2023-48237Niskie
Vim to otwarty edytor tekstu w trybie wiersza poleceń. W dotkniętych wersjach, podczas przesuwania linii w trybie oczekiwania na operatora i używając bardzo dużej wartości, może dojść do przepełnienia rozmiaru liczby całkowitej.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

