CVE-2024-47615
Critical · 9.8CVSS
9.8
EPSS
1.1%
Published
Dec 12, 2024
CISA due date
—
Cloudanix analysis
A bug in a widely used media library lets specially crafted audio files damage memory inside programs that play or process sound, which could let attackers take over those programs.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Data Tampering
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Out-of-bounds write in gst_parse_vorbis_setup_packet where an unvalidated integer size from the input exceeds the 256-element vorbis_mode_sizes array, causing a loop to overwrite the containing pad structure and up to 380 bytes of adjacent memory with attacker-controlled 0/1 values.
Why it matters to the business
Media-processing applications and pipelines that ingest untrusted Vorbis streams can be crashed or compromised, leading to service outages or arbitrary code execution on systems that rely on GStreamer for audio/video handling.
How an attack unfolds
An attacker supplies a crafted Vorbis setup packet containing an oversized size field; when the parser reads this value without bounds checking and enters the overwrite loop, memory corruption occurs that can be leveraged for control-flow hijacking or denial of service.
How to fix it
Upgrade gstreamer to version 1.24.10 or later; the fix is present in commit 5be4b6f03689ab438822f6cfcd13f1f300afe203. Rebuild any dependent packages and restart affected pipelines after the update.
How to confirm the fix worked
Confirm the installed GStreamer version reports 1.24.10 or newer; run regression tests that feed the previously crashing vorbis setup packet and verify the process no longer writes beyond the array bounds.
Typical attack path
- Attacker crafts malicious Vorbis media containing oversized vorbis setup packet
- Target application opens or streams the malicious file through GStreamer
- vorbis_parse.c gst_parse_vorbis_setup_packet reads the unchecked size value
- For-loop overwrites pad structure and adjacent memory
- Resulting corruption enables code execution or crash
How to detect it
Review application and system logs for segmentation faults or memory-corruption signals occurring during Vorbis parsing; correlate crashes with inbound media files that contain vorbis setup packets.
What your security team should do
- Immediately update all GStreamer installations to 1.24.10 or the commit 5be4b6f
- Scan build pipelines and containers for older GStreamer versions and rebuild them
- Add the fixed version constraint to dependency manifests and CI enforcement rules
- Monitor for any downstream projects that embed vulnerable GStreamer copies
The record
GStreamer is a library for constructing graphs of media-handling components. An OOB-Write has been detected in the function gst_parse_vorbis_setup_packet within vorbis_parse.c. The integer size is read from the input file without proper validation. As a result, size can exceed the fixed size of the pad->vorbis_mode_sizes array (which size is 256). When this happens, the for loop overwrites the entire pad structure with 0s and 1s, affecting adjacent memory as well. This OOB-write can overwrite up to 380 bytes of memory beyond the boundaries of the pad->vorbis_mode_sizes array. This vulnerability is fixed in 1.24.10.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | gstreamer1-plugins-base | 0 | 1.16.1-5.el8_10 |
| AlmaLinux:8 | gstreamer1-plugins-base-devel | 0 | 1.16.1-5.el8_10 |
| AlmaLinux:9 | gstreamer1-plugins-base | 0 | 1.22.1-3.el9_5 |
| AlmaLinux:9 | gstreamer1-plugins-base-devel | 0 | 1.22.1-3.el9_5 |
| AlmaLinux:9 | gstreamer1-plugins-base-tools | 0 | 1.22.1-3.el9_5 |
| Alpine:v3.20 | gst-plugins-base | 0 | 1.24.10-r0 |
| Alpine:v3.21 | gst-plugins-base | 0 | 1.24.10-r0 |
| Alpine:v3.22 | gst-plugins-base | 0 | 1.24.10-r0 |
| Debian:11 | gst-plugins-base1.0 | 0 | 1.18.4-2+deb11u3 |
| Debian:12 | gst-plugins-base1.0 | 0 | 1.22.0-3+deb12u3 |
| Debian:13 | gst-plugins-base1.0 | 0 | 1.24.10-1 |
| Debian:14 | gst-plugins-base1.0 | 0 | 1.24.10-1 |
| Red Hat:enterprise_linux:8::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-5.el8_10 |
| Red Hat:enterprise_linux:8::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-5.el8_10 |
| Red Hat:enterprise_linux:8::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-5.el8_10 |
| Red Hat:enterprise_linux:8::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-5.el8_10 |
| Red Hat:enterprise_linux:8::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-5.el8_10 |
| Red Hat:enterprise_linux:9::appstream | gstreamer1-plugins-base | 0 | 0:1.22.1-3.el9_5 |
| Red Hat:enterprise_linux:9::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.22.1-3.el9_5 |
| Red Hat:enterprise_linux:9::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.22.1-3.el9_5 |
| Red Hat:enterprise_linux:9::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.22.1-3.el9_5 |
| Red Hat:enterprise_linux:9::appstream | gstreamer1-plugins-base-tools | 0 | 0:1.22.1-3.el9_5 |
| Red Hat:enterprise_linux:9::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.22.1-3.el9_5 |
| Red Hat:rhel_aus:8.2::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-2.el8_2 |
| Red Hat:rhel_aus:8.2::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-2.el8_2 |
| Red Hat:rhel_aus:8.2::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-2.el8_2 |
| Red Hat:rhel_aus:8.2::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-2.el8_2 |
| Red Hat:rhel_aus:8.2::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-2.el8_2 |
| Red Hat:rhel_aus:8.4::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_aus:8.4::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_aus:8.4::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_aus:8.4::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_aus:8.4::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_aus:8.6::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_aus:8.6::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_aus:8.6::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_aus:8.6::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_aus:8.6::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_e4s:8.4::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_e4s:8.4::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_e4s:8.4::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_e4s:8.4::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_e4s:8.4::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_e4s:8.6::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_e4s:8.6::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_e4s:8.6::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_e4s:8.6::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_e4s:8.6::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_e4s:9.0::appstream | gstreamer1-plugins-base | 0 | 0:1.18.4-7.el9_0 |
| Red Hat:rhel_e4s:9.0::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.18.4-7.el9_0 |
| Red Hat:rhel_e4s:9.0::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.18.4-7.el9_0 |
| Red Hat:rhel_e4s:9.0::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.18.4-7.el9_0 |
| Red Hat:rhel_e4s:9.0::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.18.4-7.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-base | 0 | 0:1.16.1-3.el8_8 |
| Red Hat:rhel_eus:8.8::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-3.el8_8 |
| Red Hat:rhel_eus:8.8::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-3.el8_8 |
| Red Hat:rhel_eus:8.8::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-3.el8_8 |
| Red Hat:rhel_eus:8.8::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-3.el8_8 |
| Red Hat:rhel_eus:9.2::appstream | gstreamer1-plugins-base | 0 | 0:1.18.4-7.el9_2 |
| Red Hat:rhel_eus:9.2::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.18.4-7.el9_2 |
| Red Hat:rhel_eus:9.2::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.18.4-7.el9_2 |
| Red Hat:rhel_eus:9.2::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.18.4-7.el9_2 |
| Red Hat:rhel_eus:9.2::appstream | gstreamer1-plugins-base-tools | 0 | 0:1.18.4-7.el9_2 |
| Red Hat:rhel_eus:9.2::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.18.4-7.el9_2 |
| Red Hat:rhel_eus:9.4::appstream | gstreamer1-plugins-base | 0 | 0:1.22.1-3.el9_4 |
| Red Hat:rhel_eus:9.4::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.22.1-3.el9_4 |
| Red Hat:rhel_eus:9.4::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.22.1-3.el9_4 |
| Red Hat:rhel_eus:9.4::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.22.1-3.el9_4 |
| Red Hat:rhel_eus:9.4::appstream | gstreamer1-plugins-base-tools | 0 | 0:1.22.1-3.el9_4 |
| Red Hat:rhel_eus:9.4::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.22.1-3.el9_4 |
| Red Hat:rhel_tus:8.4::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_tus:8.4::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_tus:8.4::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_tus:8.4::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_tus:8.4::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-3.el8_4 |
| Red Hat:rhel_tus:8.6::appstream | gstreamer1-plugins-base | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_tus:8.6::appstream | gstreamer1-plugins-base-debuginfo | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_tus:8.6::appstream | gstreamer1-plugins-base-debugsource | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_tus:8.6::appstream | gstreamer1-plugins-base-devel | 0 | 0:1.16.1-3.el8_6 |
| Red Hat:rhel_tus:8.6::appstream | gstreamer1-plugins-base-tools-debuginfo | 0 | 0:1.16.1-3.el8_6 |
| Rocky Linux:8 | gstreamer1-plugins-base | 0 | 0:1.16.1-5.el8_10 |
| Rocky Linux:9 | gstreamer1-plugins-base | 0 | 0:1.22.1-3.el9_5 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | gstreamer-plugins-base | 0 | 1.22.0-150500.3.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | gstreamer-plugins-base | 0 | 1.22.0-150500.3.11.1 |
| SUSE:Linux Enterprise Micro 5.3 | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| SUSE:Linux Enterprise Micro 5.4 | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| SUSE:Linux Enterprise Micro 5.5 | gstreamer-plugins-base | 0 | 1.22.0-150500.3.11.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | gstreamer-plugins-base | 0 | 1.24.0-150600.3.8.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP6 | gstreamer-plugins-base | 0 | 1.24.0-150600.3.8.1 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | gstreamer-plugins-base | 0 | 1.8.3-13.18.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | gstreamer-plugins-base | 0 | 1.22.0-150500.3.11.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | gstreamer-plugins-base | 0 | 1.8.3-13.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | gstreamer-plugins-base | 0 | 1.22.0-150500.3.11.1 |
| SUSE:Manager Proxy 4.3 | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| SUSE:Manager Server 4.3 | gstreamer-plugins-base | 0 | 1.20.1-150400.3.11.1 |
| Ubuntu:16.04:LTS | gst-plugins-base0.10 | 0 | No fix |
| Ubuntu:20.04:LTS | gst-plugins-base1.0 | 0 | 1.16.3-0ubuntu1.4 |
| Ubuntu:22.04:LTS | gst-plugins-base1.0 | 0 | 1.20.1-1ubuntu0.4 |
| Ubuntu:24.04:LTS | gst-plugins-base1.0 | 0 | 1.24.2-1ubuntu0.2 |
| Ubuntu:24.10 | gst-plugins-base1.0 | 0 | 1.24.8-1ubuntu0.1 |
| Ubuntu:Pro:16.04:LTS | gst-plugins-base0.10 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | gst-plugins-base1.0 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | gst-plugins-base1.0 | 0 | 1.8.3-1ubuntu0.3+esm2 |
| Ubuntu:Pro:18.04:LTS | gst-plugins-base1.0 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | gst-plugins-base1.0 | 0 | 1.14.5-0ubuntu1~18.04.3+esm1 |
| openSUSE:Leap 15.6 | gstreamer-plugins-base | 0 | 1.24.0-150600.3.8.1 |
| openSUSE:Tumbleweed | gstreamer-plugins-base | 0 | 1.24.10-2.1 |
Related vulnerabilities
- CVE-2024-47607 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-base
- CVE-2024-47538 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-base
- CVE-2024-4453 GStreamer EXIF Metadata Parsing Integer Overflow Remote Code Execution Vulnerability. Also affects gstreamer1-plugins-base
- CVE-2023-37328 GStreamer PGS File Parsing Heap-based Buffer Overflow Remote Code Execution Vulnerability. Also affects gstreamer1-plugins-base
- CVE-2024-47835 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-base
- CVE-2024-47600 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-base
- CVE-2024-47541 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-base
- CVE-2024-47542 GStreamer is a library for constructing graphs of media-handling components. Also affects gstreamer1-plugins-base