CVE-2024-11403
NoneCVSS
—
EPSS
0.6%
Published
Nov 25, 2024
CISA due date
—
Cloudanix analysis
A flaw in an image processing library can let attackers who supply specially crafted picture files cause crashes or potentially run malicious code when the software tries to convert those pictures.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Library
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
Out-of-bounds read/write in the JPEG decoder triggered by incomplete Huffman codes during JPEG recompression via JxlEncoderAddJPEGFrame or equivalent jpegli paths, enabling memory corruption or access to uninitialized memory.
Why it matters to the business
Applications relying on libjxl for image encoding or format conversion from untrusted JPEG sources face elevated risk of crashes, information disclosure, or remote code execution; the library's widespread use in image pipelines amplifies exposure across ecosystems processing user-uploaded content.
How an attack unfolds
An attacker crafts a JPEG containing incomplete codes and supplies it as input to JPEG XL recompression functions; the decoder fails to validate bounds, resulting in an out-of-bounds write or reads of uninitialized memory that can be leveraged for further exploitation.
How to fix it
Upgrade libjxl to commit 9cc451b91b74ba470fd72bd48c121e9f33d24c99 or the equivalent aa2df30120b92078ab7b172fadf97dd7a937f51a; rebuild and redeploy all dependent packages and applications; disable JPEG recompression features if immediate patching is not feasible.
How to confirm the fix worked
Verify installed libjxl version or commit hash against the fixed references; run regression tests exercising JPEG recompression paths with malformed inputs; confirm absence of out-of-bounds accesses via memory sanitizers or fuzzing.
Typical attack path
- Identify target application or service that invokes libjxl JPEG recompression on externally supplied images
- Prepare a malformed JPEG file embedding incomplete Huffman codes
- Deliver the file through supported input channels such as uploads, API endpoints, or file imports
- Trigger processing via JxlEncoderAddJPEGFrame or jpegli equivalent
- Exploit resulting memory corruption for code execution or data leakage
How to detect it
Review application and system logs for segmentation faults or memory errors originating from libjxl or jpegli during JPEG processing; inspect crash dumps for evidence of out-of-bounds accesses on image decoder paths; correlate with inbound untrusted image uploads.
What your security team should do
- Apply the listed fixed commits to libjxl immediately given the buffer overflow class and image-processing attack surface
- Inventory all products and services using libjxl for JPEG handling and prioritize update deployment
- Implement input sanitization or sandboxing around image encoding pipelines until upgrades complete
- Monitor for related memory-safety issues in downstream dependents
The record
There exists an out of bounds read/write in LibJXL versions prior to commit 9cc451b91b74ba470fd72bd48c121e9f33d24c99. The JPEG decoder used by the JPEG XL encoder when doing JPEG recompression (i.e. if using JxlEncoderAddJPEGFrame on untrusted input) does not properly check bounds in the presence of incomplete codes. This could lead to an out-of-bounds write. In jpegli which is released as part of the same project, the same vulnerability is present. However, the relevant buffer is part of a bigger structure, and the code makes no assumptions on the values that could be overwritten. The issue could however cause jpegli to read uninitialised memory, or addresses of functions.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:12 | jpeg-xl | 0 | No fix |
| Debian:13 | jpeg-xl | 0 | 0.10.4-2 |
| Mageia:9 | libjxl | 0 | 0.7.2-1.mga9 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP6 | mozjs115 | 0 | 115.4.0-150600.3.6.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP7 | libjxl | 0 | 0.10.3-150700.4.3.1 |
| SUSE:Package Hub 15 SP5 | qt6-webengine | 0 | 6.4.2-bp155.2.6.1 |
| SUSE:Package Hub 15 SP5 | qt6-webengine-docs | 0 | 6.4.2-bp155.2.6.1 |
| SUSE:Package Hub 15 SP6 | libjxl | 0 | 0.8.4-bp156.3.3.4 |
| SUSE:Package Hub 15 SP6 | libjxl-gtk | 0 | 0.8.4-bp156.3.3.4 |
| Ubuntu:24.04:LTS | jpeg-xl | 0 | No fix |
| Ubuntu:24.04:LTS | jpeg-xl | 0 | 0.7.0-10.2ubuntu6.1 |
| Ubuntu:24.10 | jpeg-xl | 0 | No fix |
| openSUSE:Leap 15.5 | qt6-webengine | 0 | 6.4.2-bp155.2.6.1 |
| openSUSE:Leap 15.5 | qt6-webengine-docs | 0 | 6.4.2-bp155.2.6.1 |
| openSUSE:Leap 15.6 | libjxl | 0 | 0.8.4-bp156.3.3.4 |
| openSUSE:Leap 15.6 | libjxl-gtk | 0 | 0.8.4-bp156.3.3.4 |
| openSUSE:Leap 15.6 | mozjs115 | 0 | 115.4.0-150600.3.6.1 |
| openSUSE:Tumbleweed | libjxl | 0 | 0.11.1-1.1 |
| openSUSE:Tumbleweed | mozjs115 | 0 | 115.15.0-4.1 |
| openSUSE:Tumbleweed | mozjs128 | 0 | 128.5.1-3.1 |
Related vulnerabilities
- CVE-2024-11498 There exists a stack buffer overflow in libjxl. A specifically-crafted file can cause the… Also affects jpeg-xl
- CVE-2024-56431 oc_huff_tree_unpack in huffdec.c in libtheora in Theora through 1.0 7180717 has an… Also affects mozjs115
- CVE-2024-50602 An issue was discovered in libexpat before 2.6.4. Also affects mozjs115
- CVE-2024-45491 An issue was discovered in libexpat before 2.6.3. Also affects mozjs115
- CVE-2024-45492 An issue was discovered in libexpat before 2.6.3. Also affects mozjs115
- CVE-2024-45490 An issue was discovered in libexpat before 2.6.3. Also affects mozjs115
- CVE-2026-1837 A specially-crafted file can cause libjxl's decoder to write pixel data to uninitialized… Also affects libjxl
- CVE-2025-12474 A specially-crafted file can cause libjxl's decoder to read pixel data from uninitialized… Also affects libjxl