CVE-2024-5197
NoneCVSS
—
EPSS
0.8%
Published
Jun 3, 2024
CISA due date
—
Cloudanix analysis
A flaw in a widely used video library can let attackers corrupt memory inside programs that play or create certain video files, potentially crashing the software or taking control of it.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Data Tampering
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Integer overflows in vpx_img_alloc() and vpx_img_wrap() when supplied large d_w, d_h, align or stride_align values cause incorrect buffer size/offset calculations and leave fields of the returned vpx_image_t struct invalid, enabling subsequent memory corruption.
Why it matters to the business
Applications that decode or encode VP8/VP9/WebM video streams may crash or allow arbitrary memory writes, leading to service outages or remote code execution in media pipelines and browsers.
How an attack unfolds
An attacker supplies a malicious image descriptor containing oversized width, height or alignment values to vpx_img_alloc or vpx_img_wrap; the resulting integer overflow produces an undersized or misaligned buffer that later write operations corrupt adjacent memory.
How to fix it
Upgrade webmproject/libvpx to commit 12f3a2ac603e8f10742105519e0cd03c3b8f71dd (version 1.14.1) or newer in all dependent builds; rebuild and redeploy any statically linked binaries or containers.
How to confirm the fix worked
Confirm the installed libvpx shared object or source tree reports version 1.14.1 or later; fuzz allocation paths with maximum-size d_w/d_h parameters and verify no invalid vpx_image_t fields are produced.
Typical attack path
- Identify a target process that links against a vulnerable libvpx version and accepts attacker-controlled video parameters
- Craft a VPX image allocation call or incoming bitstream that triggers vpx_img_alloc/vpx_img_wrap with large d_w/d_h/align values
- Trigger subsequent library operations that dereference the corrupted vpx_image_t fields to achieve memory corruption
- Leverage the corruption primitive for code execution or denial of service
How to detect it
Review process creation logs and library load events for unexpected invocations of vpx_img_alloc or vpx_img_wrap; inspect crash dumps for invalid image descriptor values; correlate with inbound video streams containing anomalous dimension fields.
What your security team should do
- Inventory all products and containers that statically or dynamically link libvpx and schedule upgrades within 30 days
- Add libvpx version checks to build pipelines and dependency scanners
- Monitor EPSS and KEV feeds for any future rise in exploit maturity
The record
There exists interger overflows in libvpx in versions prior to 1.14.1. Calling vpx_img_alloc() with a large value of the d_w, d_h, or align parameter may result in integer overflows in the calculations of buffer sizes and offsets and some fields of the returned vpx_image_t struct may be invalid. Calling vpx_img_wrap() with a large value of the d_w, d_h, or stride_align parameter may result in integer overflows in the calculations of buffer sizes and offsets and some fields of the returned vpx_image_t struct may be invalid. We recommend upgrading to version 1.14.1 or beyond
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | libvpx | 0 | 1.7.0-11.el8_10 |
| AlmaLinux:8 | libvpx-devel | 0 | 1.7.0-11.el8_10 |
| AlmaLinux:9 | libvpx | 0 | 1.9.0-8.el9_5 |
| AlmaLinux:9 | libvpx-devel | 0 | 1.9.0-8.el9_5 |
| Debian:10 | libvpx | 0 | 1.7.0-3+deb10u3 |
| Debian:11 | libvpx | 0 | 1.9.0-1+deb11u3 |
| Debian:12 | libvpx | 0 | 1.12.0-1+deb12u3 |
| Debian:13 | libvpx | 0 | 1.14.1-1 |
| Mageia:9 | libvpx | 0 | 1.12.0-1.3.mga9 |
| Red Hat:enterprise_linux:8::appstream | libvpx | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::appstream | libvpx-debuginfo | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::appstream | libvpx-debugsource | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::appstream | libvpx-devel | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::appstream | libvpx-utils-debuginfo | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::crb | libvpx | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::crb | libvpx-debuginfo | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::crb | libvpx-debugsource | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::crb | libvpx-devel | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:8::crb | libvpx-utils-debuginfo | 0 | 0:1.7.0-11.el8_10 |
| Red Hat:enterprise_linux:9::appstream | libvpx | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::appstream | libvpx-debuginfo | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::appstream | libvpx-debugsource | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::appstream | libvpx-devel | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::appstream | libvpx-utils-debuginfo | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::crb | libvpx | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::crb | libvpx-debuginfo | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::crb | libvpx-debugsource | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::crb | libvpx-devel | 0 | 0:1.9.0-8.el9_5 |
| Red Hat:enterprise_linux:9::crb | libvpx-utils-debuginfo | 0 | 0:1.9.0-8.el9_5 |
| Rocky Linux:8 | libvpx | 0 | 0:1.7.0-11.el8_10 |
| Rocky Linux:9 | libvpx | 0 | 0:1.9.0-8.el9_5 |
| SUSE:Enterprise Storage 7.1 | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP5 | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP6 | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP5 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP6 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | libvpx | 0 | 1.6.1-150000.6.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Manager Proxy 4.3 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| SUSE:Manager Server 4.3 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| Ubuntu:20.04:LTS | libvpx | 0 | 1.8.2-1ubuntu0.3 |
| Ubuntu:22.04:LTS | libvpx | 0 | 1.11.0-2ubuntu2.3 |
| Ubuntu:23.10 | libvpx | 0 | 1.12.0-1ubuntu2.1 |
| Ubuntu:24.04:LTS | libvpx | 0 | 1.14.0-1ubuntu2.1 |
| Ubuntu:24.10 | libvpx | 0 | 1.14.1-1ubuntu1 |
| Ubuntu:Pro:14.04:LTS | libvpx | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | libvpx | 0 | 1.3.0-2ubuntu0.1+esm3 |
| Ubuntu:Pro:16.04:LTS | libvpx | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | libvpx | 0 | 1.5.0-2ubuntu1.1+esm3 |
| Ubuntu:Pro:18.04:LTS | libvpx | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | libvpx | 0 | 1.7.0-3ubuntu0.18.04.1+esm2 |
| openSUSE:Leap 15.5 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| openSUSE:Leap 15.6 | libvpx | 0 | 1.11.0-150400.3.7.1 |
| openSUSE:Tumbleweed | libvpx | 0 | 1.14.1-1.1 |
Related vulnerabilities
- CVE-2023-6349 A heap overflow vulnerability exists in libvpx - Encoding a frame that has larger… Also affects libvpx
- CVE-2017-13194 A vulnerability in the Android media framework (libvpx) related to odd frame width. Also affects libvpx
- CVE-2026-2447 Heap buffer overflow in libvpx. Also affects libvpx
- CVE-2026-110264 An issue has been discovered in GitLab CE/EE affecting all versions from 7.0 before… CWE-190
- CVE-2026-53615 util-linux is a random collection of Linux utilities. CWE-190
- CVE-2026-106574 ImageMagick is free and open-source software used for editing and manipulating digital… CWE-190
- CVE-2026-106571 ImageMagick is free and open-source software used for editing and manipulating digital… CWE-190
- CVE-2026-75820 GNU Aspell contains an integer truncation vulnerability in the WritableDict::add()… CWE-190