Cloudanix VulnDB

CVE-2024-47539

Critical · 9.8

CVSS

9.8

EPSS

1.3%

Published

Dec 12, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A bug in a popular media-processing library lets attackers potentially take control of systems simply by supplying a specially made video file.

Chainable
Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Low
Impact
Data Tampering
Component
Library
Class
Buffer Overflow
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Out-of-bounds write of up to three bytes in the convert_to_s334_1a function inside isomp4/qtdemux.c caused by a mismatch between allocated storage size and the loop condition i*2 < ccpair_size when ccpair_size is even.

Why it matters to the business

Applications that parse untrusted MP4 files using GStreamer can crash or execute attacker-controlled code, leading to service outages, data breaches, or full system compromise in media pipelines and downstream products.

How an attack unfolds

An attacker crafts an MP4 file whose metadata triggers the vulnerable path in qtdemux during demuxing; when the file is opened by any GStreamer-based player or processor the out-of-bounds write occurs and can be leveraged for code execution.

How to fix it

Upgrade GStreamer to a build containing commit 5be4b6f03689ab438822f6cfcd13f1f300afe203 (equivalent to release 1.24.10 or newer) in all affected packages and rebuild any applications that statically link the library.

How to confirm the fix worked

Confirm the installed GStreamer version reports a commit after 5be4b6f or is at least 1.24.10; re-run unit tests that exercise qtdemux with boundary-case ccpair_size values and verify no out-of-bounds writes occur under ASAN or similar instrumentation.

Typical attack path

  1. Craft a malicious MP4 file that sets ccpair_size to an even value causing the size mismatch
  2. Deliver the file to a target system or service that uses GStreamer to parse media
  3. Trigger parsing of the file through normal media playback, transcoding, or streaming workflows
  4. Exploit the resulting out-of-bounds write to corrupt adjacent memory and gain code execution

How to detect it

Search application and system logs for segmentation faults or heap corruption messages originating from qtdemux or gst-launch processes when handling MP4 containers; inspect crash dumps for writes near the convert_to_s334_1a function.

What your security team should do

  • Immediately update all GStreamer installations to the fixed commit or 1.24.10 release
  • Inventory every application and container image that depends on GStreamer and schedule prioritized rebuilds
  • Add GStreamer version checks to CI/CD pipelines and block deployments of vulnerable builds
  • Monitor upstream advisories for any follow-on fixes in related demuxers

The record

GStreamer is a library for constructing graphs of media-handling components. An out-of-bounds write vulnerability was identified in the convert_to_s334_1a function in isomp4/qtdemux.c. The vulnerability arises due to a discrepancy between the size of memory allocated to the storage array and the loop condition i * 2 < ccpair_size. Specifically, when ccpair_size is even, the allocated size in storage does not match the loop's expected bounds, resulting in an out-of-bounds write. This bug allows for the overwriting of up to 3 bytes beyond the allocated bounds of the storage array. This vulnerability is fixed in 1.24.10.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:8 gstreamer1-plugins-good 0 1.16.1-5.el8_10
AlmaLinux:8 gstreamer1-plugins-good-gtk 0 1.16.1-5.el8_10
AlmaLinux:9 gstreamer1-plugins-good 0 1.22.1-3.el9_5
AlmaLinux:9 gstreamer1-plugins-good-gtk 0 1.22.1-3.el9_5
Debian:11 gst-plugins-good1.0 0 No fix
Debian:11 gst-plugins-good1.0 0 1.18.4-2+deb11u3
Debian:12 gst-plugins-good1.0 0 1.22.0-5+deb12u2
Debian:13 gst-plugins-good1.0 0 1.24.10-1
Debian:14 gst-plugins-good1.0 0 1.24.10-1
Mageia:9 gstreamer1.0 0 1.22.11-1.1.mga9
Mageia:9 gstreamer1.0-plugins-base 0 1.22.11-1.2.mga9
Mageia:9 gstreamer1.0-plugins-good 0 1.22.11-1.1.mga9
Red Hat:enterprise_linux:8::appstream gstreamer1-plugins-good 0 0:1.16.1-5.el8_10
Red Hat:enterprise_linux:8::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-5.el8_10
Red Hat:enterprise_linux:8::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-5.el8_10
Red Hat:enterprise_linux:8::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-5.el8_10
Red Hat:enterprise_linux:8::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-5.el8_10
Red Hat:enterprise_linux:9::appstream gstreamer1-plugins-good 0 0:1.22.1-3.el9_5
Red Hat:enterprise_linux:9::appstream gstreamer1-plugins-good-debuginfo 0 0:1.22.1-3.el9_5
Red Hat:enterprise_linux:9::appstream gstreamer1-plugins-good-debugsource 0 0:1.22.1-3.el9_5
Red Hat:enterprise_linux:9::appstream gstreamer1-plugins-good-gtk 0 0:1.22.1-3.el9_5
Red Hat:enterprise_linux:9::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.22.1-3.el9_5
Red Hat:enterprise_linux:9::appstream gstreamer1-plugins-good-qt-debuginfo 0 0:1.22.1-3.el9_5
Red Hat:rhel_aus:8.2::appstream gstreamer1-plugins-good 0 0:1.16.1-2.el8_2
Red Hat:rhel_aus:8.2::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-2.el8_2
Red Hat:rhel_aus:8.2::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-2.el8_2
Red Hat:rhel_aus:8.2::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-2.el8_2
Red Hat:rhel_aus:8.2::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-2.el8_2
Red Hat:rhel_aus:8.4::appstream gstreamer1-plugins-good 0 0:1.16.1-3.el8_4
Red Hat:rhel_aus:8.4::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-3.el8_4
Red Hat:rhel_aus:8.4::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-3.el8_4
Red Hat:rhel_aus:8.4::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-3.el8_4
Red Hat:rhel_aus:8.4::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-3.el8_4
Red Hat:rhel_aus:8.6::appstream gstreamer1-plugins-good 0 0:1.16.1-3.el8_6
Red Hat:rhel_aus:8.6::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-3.el8_6
Red Hat:rhel_aus:8.6::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-3.el8_6
Red Hat:rhel_aus:8.6::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-3.el8_6
Red Hat:rhel_aus:8.6::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-3.el8_6
Red Hat:rhel_e4s:8.4::appstream gstreamer1-plugins-good 0 0:1.16.1-3.el8_4
Red Hat:rhel_e4s:8.4::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-3.el8_4
Red Hat:rhel_e4s:8.4::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-3.el8_4
Red Hat:rhel_e4s:8.4::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-3.el8_4
Red Hat:rhel_e4s:8.4::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-3.el8_4
Red Hat:rhel_e4s:8.6::appstream gstreamer1-plugins-good 0 0:1.16.1-3.el8_6
Red Hat:rhel_e4s:8.6::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-3.el8_6
Red Hat:rhel_e4s:8.6::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-3.el8_6
Red Hat:rhel_e4s:8.6::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-3.el8_6
Red Hat:rhel_e4s:8.6::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-3.el8_6
Red Hat:rhel_e4s:9.0::appstream gstreamer1-plugins-good 0 0:1.18.4-6.el9_0
Red Hat:rhel_e4s:9.0::appstream gstreamer1-plugins-good-debuginfo 0 0:1.18.4-6.el9_0
Red Hat:rhel_e4s:9.0::appstream gstreamer1-plugins-good-debugsource 0 0:1.18.4-6.el9_0
Red Hat:rhel_e4s:9.0::appstream gstreamer1-plugins-good-gtk 0 0:1.18.4-6.el9_0
Red Hat:rhel_e4s:9.0::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.18.4-6.el9_0
Red Hat:rhel_e4s:9.0::appstream gstreamer1-plugins-good-qt-debuginfo 0 0:1.18.4-6.el9_0
Red Hat:rhel_eus:8.8::appstream gstreamer1-plugins-good 0 0:1.16.1-4.el8_8
Red Hat:rhel_eus:8.8::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-4.el8_8
Red Hat:rhel_eus:8.8::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-4.el8_8
Red Hat:rhel_eus:8.8::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-4.el8_8
Red Hat:rhel_eus:8.8::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-4.el8_8
Red Hat:rhel_eus:9.2::appstream gstreamer1-plugins-good 0 0:1.18.4-7.el9_2
Red Hat:rhel_eus:9.2::appstream gstreamer1-plugins-good-debuginfo 0 0:1.18.4-7.el9_2
Red Hat:rhel_eus:9.2::appstream gstreamer1-plugins-good-debugsource 0 0:1.18.4-7.el9_2
Red Hat:rhel_eus:9.2::appstream gstreamer1-plugins-good-gtk 0 0:1.18.4-7.el9_2
Red Hat:rhel_eus:9.2::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.18.4-7.el9_2
Red Hat:rhel_eus:9.2::appstream gstreamer1-plugins-good-qt-debuginfo 0 0:1.18.4-7.el9_2
Red Hat:rhel_eus:9.4::appstream gstreamer1-plugins-good 0 0:1.22.1-3.el9_4
Red Hat:rhel_eus:9.4::appstream gstreamer1-plugins-good-debuginfo 0 0:1.22.1-3.el9_4
Red Hat:rhel_eus:9.4::appstream gstreamer1-plugins-good-debugsource 0 0:1.22.1-3.el9_4
Red Hat:rhel_eus:9.4::appstream gstreamer1-plugins-good-gtk 0 0:1.22.1-3.el9_4
Red Hat:rhel_eus:9.4::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.22.1-3.el9_4
Red Hat:rhel_eus:9.4::appstream gstreamer1-plugins-good-qt-debuginfo 0 0:1.22.1-3.el9_4
Red Hat:rhel_tus:8.4::appstream gstreamer1-plugins-good 0 0:1.16.1-3.el8_4
Red Hat:rhel_tus:8.4::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-3.el8_4
Red Hat:rhel_tus:8.4::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-3.el8_4
Red Hat:rhel_tus:8.4::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-3.el8_4
Red Hat:rhel_tus:8.4::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-3.el8_4
Red Hat:rhel_tus:8.6::appstream gstreamer1-plugins-good 0 0:1.16.1-3.el8_6
Red Hat:rhel_tus:8.6::appstream gstreamer1-plugins-good-debuginfo 0 0:1.16.1-3.el8_6
Red Hat:rhel_tus:8.6::appstream gstreamer1-plugins-good-debugsource 0 0:1.16.1-3.el8_6
Red Hat:rhel_tus:8.6::appstream gstreamer1-plugins-good-gtk 0 0:1.16.1-3.el8_6
Red Hat:rhel_tus:8.6::appstream gstreamer1-plugins-good-gtk-debuginfo 0 0:1.16.1-3.el8_6
Rocky Linux:8 gstreamer1-plugins-good 0 0:1.16.1-5.el8_10
Rocky Linux:9 gstreamer1-plugins-good 0 0:1.22.1-3.el9_5
SUSE:Enterprise Storage 7.1 gstreamer-plugins-good 0 1.16.3-150200.3.17.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS gstreamer-plugins-good 0 1.16.3-150200.3.17.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS gstreamer-plugins-good 0 1.20.1-150400.3.9.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS gstreamer-plugins-good 0 1.20.1-150400.3.9.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS gstreamer-plugins-good 0 1.22.0-150500.4.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS gstreamer-plugins-good 0 1.22.0-150500.4.6.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 gstreamer-plugins-good 0 1.24.0-150600.3.3.1
SUSE:Linux Enterprise Server 15 SP3-LTSS gstreamer-plugins-good 0 1.16.3-150200.3.17.1
SUSE:Linux Enterprise Server 15 SP4-LTSS gstreamer-plugins-good 0 1.20.1-150400.3.9.1
SUSE:Linux Enterprise Server 15 SP5-LTSS gstreamer-plugins-good 0 1.22.0-150500.4.6.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 gstreamer-plugins-good 0 1.16.3-150200.3.17.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 gstreamer-plugins-good 0 1.20.1-150400.3.9.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 gstreamer-plugins-good 0 1.22.0-150500.4.6.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 gstreamer-plugins-good 0 1.24.0-150600.3.3.1
SUSE:Manager Proxy 4.3 gstreamer-plugins-good 0 1.20.1-150400.3.9.1
SUSE:Manager Server 4.3 gstreamer-plugins-good 0 1.20.1-150400.3.9.1
Ubuntu:16.04:LTS gst-plugins-good0.10 0 No fix
Ubuntu:20.04:LTS gst-plugins-good1.0 0 1.16.3-0ubuntu1.3
Ubuntu:22.04:LTS gst-plugins-good1.0 0 1.20.3-0ubuntu1.3
Ubuntu:24.04:LTS gst-plugins-good1.0 0 1.24.2-1ubuntu1.1
Ubuntu:24.10 gst-plugins-good1.0 0 1.24.8-1ubuntu1.1
Ubuntu:Pro:16.04:LTS gst-plugins-good0.10 0 No fix
Ubuntu:Pro:16.04:LTS gst-plugins-good1.0 0 No fix
Ubuntu:Pro:18.04:LTS gst-plugins-good1.0 0 No fix
openSUSE:Leap 15.6 gstreamer-plugins-good 0 1.24.0-150600.3.3.1
openSUSE:Tumbleweed gstreamer-plugins-good 0 1.24.10-3.1

Related vulnerabilities