CVE-2024-47540
Critical · 9.8CVSS
9.8
EPSS
1.0%
Published
Dec 12, 2024
CISA due date
—
Cloudanix analysis
A bug in a widely used media library lets attackers take control of a computer simply by making it open a specially made video file, so organizations should install the available software update right away.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Full Compromise
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Uninitialized stack variable in gst_matroska_demux_add_wvpk_header causes gst_buffer_unmap to be called with an uninitialized map; subsequent gst_memory_unmap then dereferences the invalid map leading to function pointer hijack of mem->allocator->mem_unmap_full or mem_unmap and potential arbitrary code execution.
Why it matters to the business
Systems that ingest or play Matroska media files can be fully compromised, allowing attackers to run malicious code, steal data, or install persistent malware across media-processing applications and pipelines that depend on GStreamer.
How an attack unfolds
An attacker supplies a specially crafted Matroska file that reaches the vulnerable code path with size < 4; the uninitialized map variable is passed to unmap routines, hijacking the allocator function pointer and redirecting execution to attacker-controlled memory.
How to fix it
Upgrade GStreamer to version 1.24.10 or later; apply commit 5be4b6f03689ab438822f6cfcd13f1f300afe203 on GIT builds; rebuild and redeploy any dependent packages.
How to confirm the fix worked
Confirm installed GStreamer version is 1.24.10 or newer; verify the fix is present in matroska-demux.c by checking that gst_matroska_demux_add_wvpk_header properly initializes the map variable before the unmap call.
Typical attack path
- Deliver malicious .mkv file to any application or service that uses GStreamer matroska-demux
- Trigger file parsing so gst_matroska_demux_add_wvpk_header is invoked
- Force size < 4 condition to use uninitialized map variable
- Hijack allocator function pointer to execute attacker code
How to detect it
Monitor application logs and crash reports for GStreamer matroska-demux errors or segmentation faults during .mkv processing; inspect process memory dumps for signs of allocator function pointer corruption when handling Matroska streams.
What your security team should do
- Immediately update all GStreamer installations to 1.24.10
- Inventory and replace any embedded or statically linked copies of the library
- Restrict untrusted Matroska file processing until patches are applied
- Add GStreamer version checks to build and deployment pipelines
The record
GStreamer is a library for constructing graphs of media-handling components. An uninitialized stack variable vulnerability has been identified in the gst_matroska_demux_add_wvpk_header function within matroska-demux.c. When size < 4, the program calls gst_buffer_unmap with an uninitialized map variable. Then, in the gst_memory_unmap function, the program will attempt to unmap the buffer using the uninitialized map variable, causing a function pointer hijack, as it will jump to mem->allocator->mem_unmap_full or mem->allocator->mem_unmap. This vulnerability could allow an attacker to hijack the execution flow, potentially leading to 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 |
| 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_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-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-ESPOS | gstreamer-plugins-good | 0 | 1.22.0-150500.4.10.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | 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.10.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 Basesystem 15 SP6 | gstreamer-plugins-good | 0 | 1.24.0-150600.3.7.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | gstreamer-plugins-good | 0 | 1.24.0-150600.3.7.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-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 15 SP5-LTSS | gstreamer-plugins-good | 0 | 1.22.0-150500.4.10.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-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 Server for SAP Applications 15 SP5 | gstreamer-plugins-good | 0 | 1.22.0-150500.4.10.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP6 | gstreamer-plugins-good | 0 | 1.24.0-150600.3.3.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP6 | gstreamer-plugins-good | 0 | 1.24.0-150600.3.7.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP7 | gstreamer-plugins-good | 0 | 1.24.0-150600.3.7.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:Leap 15.6 | gstreamer-plugins-good | 0 | 1.24.0-150600.3.7.1 |
| openSUSE:Tumbleweed | gstreamer-plugins-good | 0 | 1.24.11-2.1 |
Related vulnerabilities
- CVE-2024-47606 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-good
- CVE-2024-47613 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-good
- CVE-2024-47539 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-good
- CVE-2024-47537 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-good
- CVE-2023-37327 GStreamer FLAC File Parsing Integer Overflow Remote Code Execution Vulnerability. Also affects gstreamer1-plugins-good
- CVE-2021-3497 GStreamer before 1.18.4 might access already-freed memory in error code paths when… Also affects gstreamer1-plugins-good
- CVE-2024-47834 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-good
- CVE-2024-47774 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-good