Katalog CVE

CVE-2026-56711

WysokieCVSS 8.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.30%

Percentyl 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
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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS