CVE-2026-56711
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 22 - wyżej niż 22% wszystkich znanych CVE
Streszczenie
VLC media player oblicza rozmiar bufora obrazu w arytmetyce 32-bitowej i alokuje na podstawie zawiniętego wyniku. W AllocatePicture w src/misc/picture.c suma i_bytes += p->i_pitch * p->i_lines jest licznona na 32 bitach i zawija się przed rozszerzeniem do size_t. Sprawdzenie przepełnienia dzieli w 64 bitach i nie ogranicza iloczynu, a porównanie z PICTURE_SW_SIZE_MAX bada już zawiniętą wartość, więc obie osłony przechodzą. aligned_alloc rezerwuje mały zawinięty rozmiar, podczas gdy dekoder zapisuje linie o rozmiarze wynikającym z oryginalnych wymiarów. Spreparowany plik PNG z dużymi wymiarami w IHDR osiąga tę ścieżkę przez demuxer obrazów, którego jedynym ograniczeniem jest liczba bajtów pliku wejściowego, a dekoder w modules/codec/png.c zapisuje poza alokacją z treścią i długością kontrolowaną przez atakującego. Wystarczy otworzyć plik bezpośrednio lub przez playlistę, bez niestandardowych ustawień.
Ocena ryzyka
Atakujący może doprowadzić do uszkodzenia pamięci i potencjalnie wykonać dowolny kod w kontekście procesu VLC, co może skutkować pełnym przejęciem systemu. Ryzyko jest wysokie, ponieważ wystarczy otwarcie spreparowanego pliku multimedialnego.
Rekomendacja
Zaktualizuj VLC media player do wersji zawierającej poprawkę. Unikaj otwierania niezaufanych plików multimedialnych do czasu wdrożenia aktualizacji.
Inne podatności w VLC media player
Zobacz wszystkie- CVE-2026-73324Średnie
VLC media player kopiuje linię odpowiedzi RTSP do stałego bufora bez gwarancji zakończenia, a następnie traktuje ten bufor jako ciąg C. Funkcja RtspReadLine w modules/access/rtsp/access.c wywołuje strncpy z pełną długością bufora, co nie zapisuje terminatora, gdy źródło jest co najmniej tak długie jak cel, a rtsp_get w modules/access/rtsp/rtsp.c przydziela bufor o rozmiarze BUF_SIZE i przekazuje go do strdup. Gdy serwer zwróci linię o długości 4096 bajtów lub więcej, strdup mierzy jej długość poza przydziałem i kopiuje sąsiednie bajty sterty aż do przypadkowego zera. Ponieważ dotknięta linia to nagłówek Session, ujawnione bajty są zachowywane jako identyfikator sesji i wysyłane z powrotem do serwera przy każdym kolejnym żądaniu, więc operator wrogiego serwera odczytuje pamięć sterty klienta. Atakujący kontroluje długość linii i tym samym zasięg odczytu. Pojedynczy wpis playlisty wskazujący na adres realrtp jest wystarczający. Moduł jest opcją kompilacji, wyłączoną w niektórych pakietach dystrybucyjnych, a włączoną w oficjalnych kompilacjach VideoLAN.
- CVE-2020-26664Wysokie
W VLC media player 3.0.11 odkryto podatność w funkcji EbmlTypeDispatcher::send, która umożliwia atakującym wywołanie przepełnienia bufora sterty poprzez specjalnie spreparowany plik .mkv.
Oryginalny opis (angielski, źródło NVD)
VLC media player computes the size of a picture buffer with 32-bit arithmetic and allocates from the wrapped result. In AllocatePicture in src/misc/picture.c the running total is accumulated as i_bytes += p->i_pitch * p->i_lines, and both plane_t fields are declared int in include/vlc_picture.h, so the multiplication is evaluated at 32 bits and wraps before it is widened to the size_t accumulator. The overflow check that precedes it divides in 64-bit arithmetic and therefore does not constrain the product, and the subsequent comparison against PICTURE_SW_SIZE_MAX examines the already wrapped value, so both guards pass. aligned_alloc then reserves the small wrapped size while the decoder writes scanlines sized from the original dimensions. A crafted PNG whose IHDR declares large width and height reaches this path through the image demuxer, whose only size guard is on the input file's byte count rather than the declared dimensions, and the decoder in modules/codec/png.c writes past the end of the allocation with attacker-influenced length and content. Opening the file directly or through a playlist entry is sufficient, with no non-default settings.

