Cloudanix VulnDB

CVE-2024-47606

Critical · 9.8

CVSS

9.8

EPSS

1.7%

Published

Dec 12, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A flaw in a widely used media library lets attackers take control of a computer simply by getting it to open a specially crafted video file.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Full Compromise
Component
Library
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Integer underflow in qtdemux_parse_theora_extension causes the gint size variable to underflow, leading to a small allocation via gst_buffer_new_and_alloc, followed by memcpy that overwrites the GstMapInfo structure and enables function pointer hijack in gst_memory_unmap for arbitrary code execution.

Why it matters to the business

Attackers can execute arbitrary code on systems that process untrusted media files using GStreamer, resulting in full system compromise, data breaches, or deployment of malware across media-handling applications and pipelines.

How an attack unfolds

An attacker supplies a specially crafted media file containing malformed Theora extension data. During parsing in qtdemux, the underflow produces an undersized buffer; the subsequent memcpy corrupts the GstMapInfo structure, and the call to gst_memory_unmap triggers execution of attacker-controlled code via the overwritten function pointer.

How to fix it

Upgrade GStreamer to version 1.24.10 or later, or apply commit 5be4b6f03689ab438822f6cfcd13f1f300afe203. Until patched, restrict processing of untrusted media files and consider sandboxing or disabling Theora/QuickTime demuxing where possible.

How to confirm the fix worked

Confirm the installed GStreamer version is 1.24.10 or newer; verify the presence of the fix commit in source builds; test parsing of known-malformed media samples in a controlled environment to ensure no crash or code execution occurs.

Typical attack path

  1. Craft malicious media file embedding oversized or malformed Theora extension data
  2. Deliver the file to a target application or service that uses GStreamer for media parsing
  3. Trigger qtdemux parsing of the file
  4. Exploit the underflow to cause undersized allocation and memory corruption
  5. Hijack execution flow through the corrupted function pointer during unmap

How to detect it

Review application and system logs for crashes or errors originating from qtdemux or gst_buffer operations during media file processing; inspect for unexpected memory corruption symptoms or abnormal allocation sizes in debug traces; correlate file processing events with subsequent suspicious process behavior.

What your security team should do

  • Immediately update all GStreamer installations to the fixed version 1.24.10
  • Inventory and prioritize patching of high-exposure media processing services
  • Implement strict input validation or sandboxing for untrusted media until updates are complete
  • Monitor EPSS and threat intelligence for any increase in exploitation activity

The record

GStreamer is a library for constructing graphs of media-handling components. An integer underflow has been detected in the function qtdemux_parse_theora_extension within qtdemux.c. The vulnerability occurs due to an underflow of the gint size variable, which causes size to hold a large unintended value when cast to an unsigned integer. This 32-bit negative value is then cast to a 64-bit unsigned integer (0xfffffffffffffffa) in a subsequent call to gst_buffer_new_and_alloc. The function gst_buffer_new_allocate then attempts to allocate memory, eventually calling _sysmem_new_block. The function _sysmem_new_block adds alignment and header size to the (unsigned) size, causing the overflow of the 'slice_size' variable. As a result, only 0x89 bytes are allocated, despite the large input size. When the following memcpy call occurs in gst_buffer_fill, the data from the input file will overwrite the content of the GstMapInfo info structure. Finally, during the call to gst_memory_unmap, the overwritten memory may cause a function pointer hijack, as the mem->allocator->mem_unmap_full function is called with a corrupted pointer. This function pointer overwrite could allow an attacker to alter the execution flow of the program, leading to arbitrary code execution. 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
Chainguard openjdk-11-openj9 0 0.53.0-r0
Chainguard openjdk-11-openj9-dbg 0 0.53.0-r0
Chainguard openjdk-11-openj9-default-jdk 0 0.53.0-r0
Chainguard openjdk-11-openj9-default-jvm 0 0.53.0-r0
Chainguard openjdk-11-openj9-default-policy 0 0.53.0-r0
Chainguard openjdk-11-openj9-doc 0 0.53.0-r0
Chainguard openjdk-11-openj9-jmods 0 0.53.0-r0
Chainguard openjdk-11-openj9-jre 0 0.53.0-r0
Chainguard openjdk-17-openj9 0 0.53.0-r0
Chainguard openjdk-17-openj9-dbg 0 0.53.0-r0
Chainguard openjdk-17-openj9-default-jdk 0 0.53.0-r0
Chainguard openjdk-17-openj9-default-jvm 0 0.53.0-r0
Chainguard openjdk-17-openj9-default-policy 0 0.53.0-r0
Chainguard openjdk-17-openj9-doc 0 0.53.0-r0
Chainguard openjdk-17-openj9-jmods 0 0.53.0-r0
Chainguard openjdk-17-openj9-jre 0 0.53.0-r0
Chainguard openjdk-21-openj9 0 0.53.0-r0
Chainguard openjdk-21-openj9-dbg 0 0.53.0-r0
Chainguard openjdk-21-openj9-default-jdk 0 0.53.0-r0
Chainguard openjdk-21-openj9-default-jvm 0 0.53.0-r0
Chainguard openjdk-21-openj9-default-policy 0 0.53.0-r0
Chainguard openjdk-21-openj9-doc 0 0.53.0-r0
Chainguard openjdk-21-openj9-jmods 0 0.53.0-r0
Chainguard openjdk-21-openj9-jre 0 0.53.0-r0
Chainguard openjdk-8-openj9 0 0.53.0-r1
Chainguard openjdk-8-openj9-dbg 0 0.53.0-r1
Chainguard openjdk-8-openj9-default-jdk 0 0.53.0-r1
Chainguard openjdk-8-openj9-default-jvm 0 0.53.0-r1
Chainguard openjdk-8-openj9-doc 0 0.53.0-r1
Chainguard openjdk-8-openj9-jre 0 0.53.0-r1
Debian:11 gst-plugins-good1.0 0 No fix
Debian:11 gst-plugins-good1.0 0 1.18.4-2+deb11u3
Debian:11 gstreamer1.0 0 1.18.4-2.1+deb11u1
Debian:12 gst-plugins-good1.0 0 1.22.0-5+deb12u2
Debian:12 gstreamer1.0 0 1.22.0-2+deb12u1
Debian:13 gst-plugins-good1.0 0 1.24.10-1
Debian:13 gstreamer1.0 0 1.24.10-1
Debian:14 gst-plugins-good1.0 0 1.24.10-1
Debian:14 gstreamer1.0 0 1.24.10-1
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_els:7 gstreamer1-plugins-base 0 0:1.10.4-3.el7_9
Red Hat:rhel_els:7 gstreamer1-plugins-base-debuginfo 0 0:1.10.4-3.el7_9
Red Hat:rhel_els:7 gstreamer1-plugins-base-devel 0 0:1.10.4-3.el7_9
Red Hat:rhel_els:7 gstreamer1-plugins-base-devel-docs 0 0:1.10.4-3.el7_9
Red Hat:rhel_els:7 gstreamer1-plugins-base-tools 0 0:1.10.4-3.el7_9
Red Hat:rhel_els:7 gstreamer1-plugins-good 0 0:1.10.4-3.el7_9
Red Hat:rhel_els:7 gstreamer1-plugins-good-debuginfo 0 0:1.10.4-3.el7_9
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 0 1.20.1-150400.3.3.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 0 1.20.1-150400.3.3.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 0 1.22.0-150500.3.5.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 0 1.22.0-150500.3.5.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS gstreamer-plugins-good 0 1.22.0-150500.4.6.1
SUSE:Linux Enterprise Micro 5.3 gstreamer 0 1.20.1-150400.3.3.1
SUSE:Linux Enterprise Micro 5.4 gstreamer 0 1.20.1-150400.3.3.1
SUSE:Linux Enterprise Micro 5.5 gstreamer 0 1.22.0-150500.3.5.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 gstreamer 0 1.24.0-150600.3.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 gstreamer-plugins-good 0 1.24.0-150600.3.3.1
SUSE:Linux Enterprise Module for Package Hub 15 SP6 gstreamer 0 1.24.0-150600.3.3.1
SUSE:Linux Enterprise Server 12 SP5-LTSS gstreamer 0 1.8.3-10.12.1
SUSE:Linux Enterprise Server 12 SP5-LTSS gstreamer-plugins-good 0 1.8.3-16.12.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 0 1.20.1-150400.3.3.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 0 1.22.0-150500.3.5.1
SUSE:Linux Enterprise Server 15 SP5-LTSS gstreamer-plugins-good 0 1.22.0-150500.4.6.1
SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 gstreamer 0 1.8.3-10.12.1
SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 gstreamer-plugins-good 0 1.8.3-16.12.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 0 1.20.1-150400.3.3.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 0 1.22.0-150500.3.5.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 0 1.20.1-150400.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 0 1.20.1-150400.3.3.1
SUSE:Manager Server 4.3 gstreamer-plugins-good 0 1.20.1-150400.3.9.1
Ubuntu:14.04:LTS gstreamer0.10 0 No fix
Ubuntu:16.04:LTS gst-plugins-good0.10 0 No fix
Ubuntu:16.04:LTS gstreamer0.10 0 No fix
Ubuntu:18.04:LTS gstreamer1.0 0 No fix
Ubuntu:20.04:LTS gst-plugins-good1.0 0 1.16.3-0ubuntu1.3
Ubuntu:20.04:LTS gstreamer1.0 0 1.16.3-0ubuntu1.2
Ubuntu:22.04:LTS gst-plugins-good1.0 0 1.20.3-0ubuntu1.3
Ubuntu:22.04:LTS gstreamer1.0 0 1.20.3-0ubuntu1.1
Ubuntu:24.04:LTS gst-plugins-good1.0 0 1.24.2-1ubuntu1.1
Ubuntu:24.04:LTS gstreamer1.0 0 1.24.2-1ubuntu0.1
Ubuntu:24.10 gst-plugins-good1.0 0 1.24.8-1ubuntu1.1
Ubuntu:24.10 gstreamer1.0 0 1.24.8-1ubuntu0.1
Ubuntu:Pro:14.04:LTS gstreamer0.10 0 No fix
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:16.04:LTS gstreamer0.10 0 No fix
Ubuntu:Pro:16.04:LTS gstreamer1.0 0 No fix
Ubuntu:Pro:18.04:LTS gst-plugins-good1.0 0 No fix
Ubuntu:Pro:18.04:LTS gstreamer1.0 0 No fix
openSUSE:Leap 15.6 gstreamer 0 1.24.0-150600.3.3.1
openSUSE:Leap 15.6 gstreamer-plugins-good 0 1.24.0-150600.3.3.1
openSUSE:Tumbleweed gstreamer 0 1.24.10-2.1
openSUSE:Tumbleweed gstreamer-plugins-good 0 1.24.10-2.1

Related vulnerabilities