CVE-2026-92472 Overview
CVE-2026-92472 is a use-after-free vulnerability [CWE-119] in GPAC 26.08-DEV, an open-source multimedia framework. The flaw resides in the gf_node_deactivate_ex function in src/scenegraph/base_scenegraph.c, reached through the MP4Box component. An attacker with local access and low privileges can trigger the use-after-free by supplying a crafted input file. Exploitation requires local access and yields limited availability impact. The exploit has been publicly disclosed, and a proof-of-concept is available on the project issue tracker. This issue is distinct from CVE-2026-90827. GPAC maintainers addressed the flaw in release abi-16.24 via commit e34f4ba349d55cd1849f0bcf4cf46552732e2db7.
Critical Impact
Local attackers can exploit a use-after-free in MP4Box scene graph handling to corrupt process memory, potentially causing denial of service or influencing program state.
Affected Products
- GPAC 26.08-DEV (upstream development branch)
- GPAC MP4Box command-line utility
- Any downstream distribution or product embedding pre-abi-16.24 GPAC scene graph code
Discovery Timeline
- 2026-09-16 - CVE-2026-92472 published to NVD
- 2026-09-16 - Last updated in NVD database
Technical Details for CVE-2026-92472
Vulnerability Analysis
The vulnerability affects GPAC's scene graph deactivation logic used when parsing MPEG-4 and LASeR scenes with MP4Box. The function gf_node_deactivate_ex traverses child node items and toggles the GF_NODE_IS_DEACTIVATED flag. During traversal, the function accesses node memory after conditions that can free or invalidate that memory, producing a use-after-free condition [CWE-119]. A related issue in src/laser/lsr_dec.c mishandled unresolved command node pointers, allowing the codec to dereference stale nodes located via gf_sg_find_node.
Because MP4Box is commonly invoked on untrusted media files, a malicious input file processed by a user or an automated pipeline can trigger the corrupted state. Impact is limited to the executing process, but memory corruption may cascade into crashes or influence subsequent parser decisions.
Root Cause
The root cause is missing state preservation before mutating and traversing node structures. The original code re-read node->sgprivate->flags after modification and continued walking child items whose lifetime was tied to the deactivation state. In the LASeR decoder, com->node was assigned directly from gf_sg_find_node without going through gf_sg_command_set_node, bypassing reference tracking.
Attack Vector
Exploitation requires local access with low privileges and no user interaction. An attacker delivers a crafted scene file to MP4Box or another GPAC-linked binary. Parsing the file drives the scene graph into the vulnerable path in gf_node_deactivate_ex, dereferencing freed memory.
// Patch excerpt: src/scenegraph/base_scenegraph.c
// Capture deactivation state before mutating the flag
return GF_NOT_SUPPORTED;
#else
GF_ChildNodeItem *item;
Bool was_deactivated;
/*avoid stack overflow on cyclic/malformed scene graphs*/
if (depth > 255) return GF_OK;
if (node->sgprivate->tag<GF_NODE_FIRST_DOM_NODE_TAG) return GF_BAD_PARAM;
was_deactivated = (node->sgprivate->flags & GF_NODE_IS_DEACTIVATED) ? GF_TRUE : GF_FALSE;
if (!was_deactivated) {
node->sgprivate->flags |= GF_NODE_IS_DEACTIVATED;
Source: GitHub Commit e34f4ba
// Patch excerpt: src/laser/lsr_dec.c
// Use gf_sg_command_set_node to properly register the node reference
for (i=0; i<gf_list_count(codec->unresolved_commands); i++) {
GF_Command *com = (GF_Command *)gf_list_get(codec->unresolved_commands, i);
gf_assert(!com->node);
GF_Node *n = gf_sg_find_node(codec->sg, com->RouteID);
if (n) {
gf_sg_command_set_node(com, n);
gf_node_register(com->node, NULL);
com->RouteID = 0;
gf_list_rem(codec->unresolved_commands, i);
Source: GitHub Commit e34f4ba
Detection Methods for CVE-2026-92472
Indicators of Compromise
- Unexpected MP4Box process crashes, segmentation faults, or SIGABRT events when parsing user-supplied media files.
- Presence of the public proof-of-concept archive poc_12.zip referenced in GitHub Issue #3831 on file shares or build systems.
- GPAC binaries reporting version strings earlier than abi-16.24 in production media pipelines.
Detection Strategies
- Inventory hosts running GPAC and match installed versions against the fixed release abi-16.24 or later.
- Instrument media-processing hosts with AddressSanitizer (ASan) builds of GPAC in test environments to surface use-after-free conditions during ingest fuzzing.
- Correlate process crash telemetry with the loading of untrusted scene graph, LASeR, or MP4 files.
Monitoring Recommendations
- Alert on MP4Box or GPAC library crashes captured by system crash reporters such as systemd-coredump or Windows Error Reporting.
- Monitor execution of MP4Box on file paths outside authorized media workflows, particularly user download directories.
- Log and review command-line arguments passed to GPAC utilities in automated transcoding queues.
How to Mitigate CVE-2026-92472
Immediate Actions Required
- Upgrade GPAC to release abi-16.24 or later, which contains commit e34f4ba349d55cd1849f0bcf4cf46552732e2db7.
- Restrict MP4Box execution to trusted, sandboxed contexts until patched builds are deployed across the environment.
- Remove or quarantine the public PoC archive from any shared storage to prevent accidental triggering.
Patch Information
The fix is included in the GitHub Release abi-16.24 and applied through commit e34f4ba349d55cd1849f0bcf4cf46552732e2db7. The patch preserves the pre-mutation deactivation state in gf_node_deactivate_ex and routes LASeR unresolved commands through gf_sg_command_set_node for proper reference registration. Downstream packagers should rebuild against the patched source tree. See the tracking entry at VulDB CVE-2026-92472 for additional metadata.
Workarounds
- Process only trusted media files with vulnerable GPAC builds and reject externally sourced scene graph inputs.
- Run MP4Box inside a container, seccomp profile, or unprivileged user namespace to contain memory corruption effects.
- Disable LASeR and scene graph parsing features in downstream integrations where they are not required.
# Build and install the patched GPAC release
git clone https://github.com/gpac/gpac.git
cd gpac
git checkout abi-16.24
./configure
make -j$(nproc)
sudo make install
MP4Box -version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

