[ 
https://issues.apache.org/jira/browse/KAFKA-20935?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mickael Maison resolved KAFKA-20935.
------------------------------------
    Resolution: Duplicate

CVE-2026-59949 is fixed in lz-java 1.11.1: 
https://github.com/advisories/GHSA-xx22-p4ch-683r

> Kafka: lz4-java ( CVE-2026-59949 ) 
> -----------------------------------
>
>                 Key: KAFKA-20935
>                 URL: https://issues.apache.org/jira/browse/KAFKA-20935
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Krishna Chidrawar
>            Priority: Major
>
> *Aqua Description :* ### Summary
> Insufficient validation of byte array arguments in JNI-based XXHash 
> implementations in lz4-java 1.11.0 and earlier allows callers to crash the 
> JVM by passing an invalid array reference or invalid range to native XXHash 
> methods.
> This affects applications where an attacker can influence the byte array 
> object or the `off` / `len` arguments passed to affected XXHash APIs. It does 
> {*}{{*}}not{{*}}{*} affect the common case where only the contents of a valid 
> byte array are attacker-controlled.
> Java-based XXHash implementations are *not* affected.
>  # 
>  ## 
>  ### Details
> The JNI-backed XXHash implementations pass caller-provided byte array 
> arguments to native code. The affected APIs are:
>  - `XXHashFactory.nativeInstance().hash32().hash(byte[] buf, int off, int 
> len, int seed)`
>  - `XXHashFactory.nativeInstance().hash64().hash(byte[] buf, int off, int 
> len, long seed)`
>  - `XXHashFactory.nativeInstance().newStreamingHash32(seed).update(byte[] 
> bytes, int off, int len)`
>  - `XXHashFactory.nativeInstance().newStreamingHash64(seed).update(byte[] 
> bytes, int off, int len)`
> Before the fix, the streaming JNI implementations did not validate `bytes`, 
> `off`, or `len` before calling `XXHashJNI.XXH32_update` / 
> `XXHashJNI.XXH64_update`. The non-streaming JNI implementations called 
> `SafeUtils.checkRange`, but `SafeUtils.checkRange(byte[], int, int)` skipped 
> all array access when `len == 0`, so a null byte array with a zero length 
> could still reach JNI.
> As a result:
>  - `hash(null, 0, 0, seed)` and `update(null, 0, 0)` could pass a null array 
> reference to JNI, causing a fatal JVM crash in `GetPrimitiveArrayCritical`.
>  - `update(new byte[16], 0, Integer.MAX_VALUE)` could cause native XXHash 
> code to read far beyond the end of the Java array, causing a fatal JVM crash 
> and potentially exposing in-process memory to the native routine before the 
> crash.
> The oversized-length non-streaming `hash(new byte[16], 0, Integer.MAX_VALUE, 
> seed)` case was already rejected in Java before this fix. The missing 
> validation affected the streaming oversized-length case and the zero-length 
> null-array case for both streaming and non-streaming JNI XXHash APIs.
> The impact of this vulnerability depends on how user code uses the XXHash 
> API. Code that hashes attacker-controlled byte contents in a valid, correctly 
> bounded array is not affected. Code may be affected if an attacker can cause 
> the application to pass a null array, an attacker-controlled offset, or an 
> attacker-controlled length to the native XXHash API. The primary impact is 
> denial of service due to JVM termination. For oversized lengths, native code 
> may also read outside the Java array before the process crashes.
>  # 
>  ## 
>  ### Mitigation
> lz4-java 1.11.1 fixes this issue without requiring changes in user code.
> If you cannot upgrade, avoid passing attacker-controlled array references, 
> offsets, or lengths to JNI-backed XXHash APIs. In particular, validate that 
> arrays are non-null and that `off` and `len` describe a range fully contained 
> in the array before calling native XXHash methods.
> Using `XXHashFactory.safeInstance()` avoids the JNI boundary and is not 
> affected by this native crash behavior.
> *NVD URL :* [https://nvd.nist.gov/vuln/detail/CVE-2026-59849]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to