CVE-2026-52834 in jxl-oxideinfo

Summary

by MITRE • 08/19/2026

jxl-oxide is a pure Rust implementation of a JPEG XL decoder. Prior to jxl-grid 0.6.2, decoding a crafted JPEG XL image on a 32-bit platform can overflow length calculations in AlignedGrid::with_alloc_tracker and related grid and subgrid arithmetic. A 65536 x 65536 frame can pass the frame-area limit while overflowing the usize element count, causing modular, VarDCT, or filter rendering paths to allocate a backing buffer smaller than the logical grid. A tiny bitstream-controlled cropped frame combined with a huge canvas or requested region can also reach the vulnerable composition path in crates/jxl-render/src/blend.rs through ordinary render_frame(). Later mutable subgrid and raw-pointer operations can then perform attacker-controlled out-of-bounds writes, causing memory corruption, denial of service, or arbitrary code execution. This issue is fixed in jxl-grid version 0.6.2.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Analysis

by VulDB Data Team • 08/19/2026

The vulnerability identified in the jxl-oxide library, specifically within versions prior to 0.6.2 of its dependency jxl-grid, represents a critical integer overflow flaw that compromises memory safety on 32-bit architectures. This pure Rust implementation of a JPEG XL decoder contains arithmetic errors during the allocation and management of grid structures used for image rendering. The core technical failure occurs in functions such as AlignedGrid::with_alloc_tracker and related subgrid arithmetic operations, where length calculations are susceptible to overflow when processing crafted inputs. Specifically, an attacker can construct a JPEG XL frame with dimensions of 65536 by 65536 pixels. While this specific resolution may technically pass the library's internal frame-area limit checks due to how area is calculated versus linear memory allocation requirements, it causes the usize element count calculation to overflow on platforms where pointers and integers are thirty-two bits wide. This modular arithmetic error results in a significantly smaller allocated backing buffer than what is logically required for the grid structure, creating a severe mismatch between logical size and physical memory reservation.

The operational impact of this vulnerability extends beyond simple data corruption due to its interaction with the rendering pipeline. A tiny bitstream-controlled cropped frame combined with a huge canvas or requested region can trigger vulnerable composition paths within the blend module via ordinary render_frame calls. Once the undersized buffer is allocated, subsequent mutable subgrid operations and raw-pointer manipulations allow for attacker-controlled out-of-bounds writes. Because these memory accesses are not properly bounds-checked against the actual allocation size, an adversary can write data beyond the end of the heap-allocated buffer. This leads to direct memory corruption, which typically manifests as a denial of service through application crashes or segmentation faults in stable environments. However, given the nature of out-of-bounds writes and the potential for controlling written values, this flaw also presents a high-risk vector for arbitrary code execution if an attacker can carefully craft heap layouts and overwrite critical control data such as function pointers or object vtables.

From a classification perspective, this vulnerability aligns with CWE-190 Integer Overflow or Wraparound, which describes the condition where arithmetic operations result in values that exceed the maximum size of the integer type used to store them. Furthermore, because the exploit involves writing to memory locations outside the intended buffer boundary, it is directly associated with CWE-787 Out-of-bounds Write. In terms of offensive security frameworks, this vulnerability facilitates exploitation techniques categorized under MITRE ATT&CK T1203 Exploitation for Client Execution or potentially T1059 Command and Scripting Interpreter if the memory corruption leads to code execution within a host application that processes images. The attack vector is primarily remote via network transmission of malicious JPEG XL files, making it relevant to CWE-434 Unrestricted Upload of File with Dangerous Type when such files are processed by image handling services or applications without strict validation.

Mitigation strategies for this vulnerability focus on immediate software updates and defensive coding practices. The primary remediation is to upgrade the jxl-grid dependency to version 0.6.2 or later, where the arithmetic overflow issues in grid allocation have been resolved through proper bounds checking and use of saturating arithmetic operations that prevent wraparound behavior. For systems unable to update immediately, implementing strict input validation on image dimensions before passing them to the decoder can help mitigate risk, although this is less reliable than patching the underlying library. Developers should also ensure that all integer calculations involving memory allocation sizes utilize checked or wrapping methods appropriate for the target architecture, particularly when supporting 32-bit platforms where usize limits are significantly lower than in 64-bit environments. Regular security audits of image processing libraries and adherence to secure coding standards such as those outlined by OWASP can further reduce exposure to similar integer overflow vulnerabilities in future implementations.

Responsible

GitHub M

Reservation

06/08/2026

Disclosure

08/19/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Might our Artificial Intelligence support you?

Check our Alexa App!