Product:   GPAC (MP4Box)
Affected:  gpac/gpac prior to fix commit 
(e95f3064d846e4606276fff111e0f97df1576a04)
CVE:       CVE-2025-55647
CWE:       CWE-190 (Integer Overflow or Wraparound)
CVSS 3.1:  4.3 MEDIUM (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L)
Reporter:  sigdevel <https://infosec.exchange/@sigdevel>

Description:
  When MP4Box processes a crafted MP4 file containing malformed
  Protection System Specific Header (PSSH) metadata, mp4_mux_cenc_insert_pssh()
  in filters/mux_isom.c does not sufficiently validate PSSH-related size
  fields such as kid_count/dataSize before using them in a buffer size
  calculation.

  An attacker-controlled value overflows the size computation, causing
  realloc() to be called with an enormous size. AddressSanitizer reports
  an out-of-memory condition at filters/mux_isom.c:4326, where realloc()
  attempts to allocate 0xe40000100 bytes, reached via mp4_mux_start_fragment()
  while MP4Box runs DASH segmentation on the crafted file.

  Crash is reproducible on the current master branch at the time of
  discovery. No authentication or special privileges required beyond
  ability to provide a crafted file.

Reproduction:
  -Build-opts: CC="gcc -fsanitize=address -g" CXX="g++ -fsanitize=address -g" ;
  -Command: ./MP4Box -dash 10000 ./15_poc.mp4

Asan-log:
==3757041==ERROR: AddressSanitizer: out of memory: allocator is trying to 
allocate 0xe40000100 bytes
    #0 0x7f635aaf3b78 in realloc 
../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:85
    #1 0x55f879e99c00 in mp4_mux_cenc_insert_pssh filters/mux_isom.c:4326
    #2 0x55f879ed3601 in mp4_mux_start_fragment filters/mux_isom.c:6396

PoC:
  https://github.com/sigdevel/pocs/blob/main/res/gpac/MP4Box/15/15_poc.mp4

References:
  https://github.com/gpac/gpac/issues/3235
  https://www.cve.org/CVERecord?id=CVE-2025-55647
  https://infosec.exchange/@sigdevel/116736795058798433


——
Best regards, Alexander A. Shvedov
https://github.com/sigdevel

Reply via email to