CVE-2025-59734
WysokieCVSS 8.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
Podatność use-after-free w dekoderze SANM (format animacji) w FFmpeg. Przy odpowiednio spreparowanym pliku z podwersją <2, nieprawidłowy rozmiar ramki w chunku FOBJ powoduje wczesny powrót i zapisanie surowej ramki w ctx->stored_frame bez ustawienia wymiarów. Późniejszy chunk FTCH ponownie dekoduje ramkę, inicjuje bufory i zwalnia poprzedni bufor, podczas gdy obiekt GetByteContext nadal wskazuje na zwolnioną pamięć, co prowadzi do zapisu po zwolnieniu (uszkodzenie metadanych alokatora).
Ocena ryzyka
Może prowadzić do uszkodzenia pamięci i potencjalnego wykonania dowolnego kodu lub odmowy usługi (crash) podczas przetwarzania złośliwego pliku SANM. Podatność można wywołać już przy próbie sprawdzenia formatu pliku, co zwiększa ryzyko przy automatycznym przetwarzaniu plików.
Rekomendacja
Zaktualizuj FFmpeg do wersji 8.0 lub nowszej. Do czasu aktualizacji unikaj przetwarzania niezaufanych plików SANM oraz rozważ ograniczenie automatycznego wykrywania formatów.
Inne podatności w FFmpeg
Zobacz wszystkie- CVE-2017-15672Wysokie
Funkcja read_header w libavcodec/ffv1dec.c w FFmpeg 2.4 i 3.3.4 oraz prawdopodobnie wcześniejszych wersjach pozwala zdalnym atakującym na wywołanie nieokreślonego wpływu poprzez spreparowany plik MP4, co prowadzi do odczytu poza przydzielonym zakresem.
- CVE-2017-14767Wysokie
Funkcja sdp_parse_fmtp_config_h264 w libavformat/rtpdec_h264.c w FFmpeg przed wersją 3.3.4 niewłaściwie obsługuje puste wartości sprop-parameter-sets, co pozwala zdalnym atakującym na spowodowanie odmowy usługi (przepełnienie bufora na stercie) lub potencjalnie inny nieokreślony wpływ za pomocą spreparowanego pliku sdp.
- CVE-2017-14225Wysokie
Funkcja av_color_primaries_name w libavutil/pixdesc.c w FFmpeg 3.3.3 może zwracać wskaźnik NULL w zależności od wartości zawartej w pliku, co prowadzi do dereferencji wskaźnika NULL w funkcji avcodec_string w libavcodec/utils.c.
- CVE-2012-2805Wysokie
Nieokreślona podatność w FFMPEG 0.10 umożliwia zdalnym atakującym spowodowanie odmowy usługi.
- CVE-2017-11719Wysokie
Funkcja dnxhd_decode_header w libavcodec/dnxhddec.c w FFmpeg w wersjach od 3.0 do 3.3.2 umożliwia zdalnym atakującym spowodowanie odmowy usługi (dostęp poza zakresem tablicy) lub potencjalnie inny nieokreślony wpływ poprzez spreparowany plik DNxHD.
- CVE-2017-11665Wysokie
Funkcja ff_amf_get_field_value w libavformat/rtmppkt.c w FFmpeg 3.3.2 umożliwia zdalnym serwerom RTMP spowodowanie odmowy usługi poprzez przygotowany strumień, co prowadzi do naruszenia segmentacji i awarii aplikacji.
- CVE-2017-9996Wysokie
Funkcja cdxl_decode_frame w libavcodec/cdxl.c w FFmpeg przed wersjami 2.8.12, 3.0.8, 3.1.8, 3.2.5 i 3.3.1 nie wyklucza formatu CHUNKY, co pozwala zdalnym atakującym na spowodowanie odmowy usługi (przepełnienie bufora na stercie i awaria aplikacji) lub potencjalnie inny nieokreślony wpływ za pomocą spreparowanego pliku.
- CVE-2017-9995Wysokie
W bibliotece libavcodec/scpr.c w FFmpeg w wersji 3.3 i wcześniejszych, przed wersją 3.3.1, nieprawidłowo walidowane są dane dotyczące wysokości i szerokości, co umożliwia zdalnym atakującym spowodowanie odmowy usługi (przepełnienie bufora na stercie i awaria aplikacji) lub potencjalnie inny nieokreślony wpływ za pomocą spreparowanego pliku.
- CVE-2017-9993Wysokie
FFmpeg w wersjach przed 2.8.12, 3.0.x i 3.1.x przed 3.1.9, 3.2.x przed 3.2.6 oraz 3.3.x przed 3.3.2 nie ogranicza prawidłowo rozszerzeń nazw plików HTTP Live Streaming oraz nazw demuxerów, co pozwala atakującym na odczyt dowolnych plików za pomocą spreparowanych danych playlisty.
- CVE-2017-9992Wysokie
W funkcji decode_dds1 w libavcodec/dfa.c w FFmpeg przed wersją 2.8.12, 3.0.x przed 3.0.8, 3.1.x przed 3.1.8, 3.2.x przed 3.2.5 i 3.3.x przed 3.3.1 występuje przepełnienie bufora oparte na stercie. Umożliwia to zdalnym atakującym spowodowanie awarii aplikacji lub potencjalnie innych nieokreślonych skutków poprzez spreparowany plik.
Oryginalny opis (angielski, źródło NVD)
It is possible to cause an use-after-free write in SANM decoding with a carefully crafted animation using subversion <2. When a STOR chunk is present, a subsequent FOBJ chunk will be saved in ctx->stored_frame. Stored frames can later be referenced by FTCH chunks. For files using subversion < 2, the undecoded frame is stored, and decoded again when the FTCH chunks are parsed. However, in process_frame_obj if the frame has an invalid size, there’s an early return, with a value of 0. This causes the code in decode_frame to still store the raw frame buffer into ctx->stored_frame. Leaving ctx->has_dimensions set to false. A subsequent chunk with type FTCH would call process_ftch and decode that frame obj again, adding to the top/left values and calling process_frame_obj again. Given that we never set ctx->have_dimensions before, this time we set the dimensions, calling init_buffers, which can reallocate the buffer in ctx->stored_frame, freeing the previous one. However, the GetByteContext object gb still holds a reference to the old buffer. Finally, when the code tries to decode the frame, codecs that accept a GetByteContext as a parameter will trigger a use-after-free read when using gb. GetByteContext is only used for reading bytes, so at most one could read invalid data. There are no heap allocations between the free and when the object is accessed. However, upon returning to process_ftch, the code restores the original values for top/left in stored_frame, writing 4 bytes to the freed data at offset 6, potentially corrupting the allocator’s metadata. This issue can be triggered just by probing whether a file has the sanm format. We recommend upgrading to version 8.0 or beyond.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

