W edytorze Vim przed patchem 8.0.0377 występuje integer overflow podczas alokacji pamięci w funkcji u_read_undo, który może prowadzić do przepełnienia bufora. Podatność jest krytyczna, ponieważ może być wywołana przez spreparowany plik undo bez konieczności interakcji użytkownika poza otwarciem pliku.
▸ Pokaż oryginał (EN)
An integer overflow at a u_read_undo memory allocation site would occur for vim before patch 8.0.0377, if it does not properly validate values for tree length when reading a corrupted undo file, which may lead to resultant buffer overflows.
Podatność wynika z braku odpowiedniej walidacji wartości długości drzewa (tree length) podczas odczytu uszkodzonego lub spreparowanego pliku undo. Zbyt duża wartość powoduje integer overflow w miejscu alokacji pamięci u_read_undo, co skutkuje przydzieleniem niewystarczająco dużego bufora. Następnie dane zapisywane są poza granicami tego bufora, prowadząc do klasycznego buffer overflow.
Atakujący może doprowadzić do uszkodzenia pamięci procesu, co w konsekwencji może umożliwić wykonanie dowolnego kodu (RCE) lub destabilizację aplikacji. Podatność potencjalnie pozwala na przejęcie pełnej kontroli nad systemem w kontekście uprawnień uruchomionego procesu Vim.
Należy zaktualizować Vim do wersji zawierającej patch 8.0.0377 lub nowszej. Poprawka dostępna jest w repozytorium projektu (commit 3eb1637b1bba19519885dd6d377bd5596e91d22c na GitHub). Należy zastosować patche dostępne u producenta zgodnie z referencjami.
Vim w wersjach przed patchem 8.0.0377
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HVim
APPVim≤ 8.0.0376
Powiązane podatności
Vim: command injection przez %{expr} w tabpanel umożliwia RCE
Buffer Overflow w VIM 8.1.2135 umożliwiający zdalne wykonanie kodu
Przepełnienie bufora na stercie (heap buffer overflow) w edytorze Vim
Heap-based Buffer Overflow w Vim — przepełnienie sterty przed wersją 8.2
Przepełnienie liczby całkowitej w Vim przy odczycie uszkodzonego pliku undo