Podatności Vim
46 znanych podatności CVE w Vim, przetłumaczonych i ocenionych.
- 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-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-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-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-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-73075Średnie
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-73074Wysokie
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-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-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-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.
- CVE-2023-48236Niskie
Vim to otwartoźródłowy edytor tekstu działający w trybie wiersza poleceń. Używając polecenia z=, użytkownik może przekroczyć limit liczby, co może prowadzić do awarii, chociaż nie zawsze się to zdarza.
- CVE-2023-48235Niskie
Vim to otwarty edytor tekstu w wierszu poleceń, który może powodować przepełnienie podczas analizowania względnych adresów ex. Problem występuje w istniejącej kontroli przepełnienia, gdy numer linii staje się ujemny. Wpływ jest niski, wymagana jest interakcja użytkownika.
- CVE-2023-48234Niskie
Vim to otwarty edytor tekstu w trybie wiersza poleceń. Podczas uzyskiwania liczby dla polecenia 'z' w trybie normalnym, może wystąpić przepełnienie dla dużych wartości, co może prowadzić do awarii, chociaż nie zawsze się to zdarza.
- CVE-2023-48233Niskie
Vim to otwarty edytor tekstu w trybie tekstowym. Jeśli liczba po poleceniu :s jest większa niż to, co mieści się w zmiennej typu long, program kończy działanie z błędem e_value_too_large. Problem został rozwiązany w wersji 9.0.2108.
- CVE-2023-48232Niskie
Vim to otwartoźródłowy edytor tekstu w trybie tekstowym. Występuje wyjątek punktu zmiennoprzecinkowego podczas obliczania przesunięcia linii dla zbyt długich linii, gdy włączone jest płynne przewijanie i ustawienia cpo zawierają flagę 'n'. Problem ten prowadzi do awarii aplikacji.
- CVE-2023-48231Niskie
Vim to otwartoźródłowy edytor tekstu działający w trybie wiersza poleceń. Podczas zamykania okna, vim może próbować uzyskać dostęp do już zwolnionej struktury okna.
- CVE-2023-46246Średnie
W Vimie występuje podatność typu use-after-free w pamięci przydzielonej w funkcji `ga_grow_inner`. Problem ten może wystąpić podczas używania komendy `:history`, co prowadzi do przepełnienia wartości całkowitej i potencjalnego wykorzystania pamięci po jej zwolnieniu.

