CVE-2026-45130
ŚrednieCVSS 6.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może zdalnie wykonać dowolny kod w kontekście użytkownika otwierającego spreparowany plik tekstowy w Vimie, co prowadzi do pełnego przejęcia systemu ofiary.
Rekomendacja
Należy zaktualizować Vim do wersji 9.2.0450 lub nowszej, która zawiera poprawkę zapobiegającą przepełnieniu sterty podczas ładowania plików słownika.
Inne podatności w Vim
Zobacz wszystkie- 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.
Oryginalny opis (angielski, źródło NVD)
Vim is an open source, command line text editor. Prior to version 9.2.0450, a heap buffer overflow exists in read_compound() in src/spellfile.c when loading a crafted spell file (.spl) with UTF-8 encoding active. An attacker-controlled length field in the spell file's compound section overflows a 32-bit signed integer multiplication, causing a small buffer to be allocated for a write loop that runs many iterations, overflowing the heap. Because the 'spelllang' option can be set from a modeline, a text file modeline can trigger spell file loading if a malicious .spl file has been planted on the runtimepath. This issue has been patched in version 9.2.0450.

