CVE-2026-89045
MediumCVSS 4.0Exploitation Probability (EPSS)
Low risk2th percentile - higher than 2% of all known CVEs
Summary
zstd-jni versions 1.4.8-4 through 1.5.7-13 fail to validate negative length parameters in ZstdInputStreamNoFinalizer.read(). This allows an attacker to trigger an infinite loop that holds the stream monitor and blocks all other threads from accessing the stream.
Risk Assessment
An attacker can cause application hangs by blocking stream access for all threads, resulting in denial of service. This is especially relevant in multithreaded applications processing data from untrusted sources.
Recommendation
Upgrade zstd-jni to a version later than 1.5.7-13 once available, and validate lengths passed to read methods. Until patched, consider restricting processing of untrusted input in applications using this library.
Other vulnerabilities in zstd-jni
See all- CVE-2026-90852High
A vulnerability has been found in luben zstd-jni up to 1.5.7-13. It affects the ZstdCompressCtx.loadDict function in ZstdCompressCtx.java of the Dictionary Sharing component. The manipulation leads to use after free. The attack can be executed remotely. Upgrading to version 1.5.7-14 resolves the issue.
- CVE-2026-90560High
zstd-jni versions 1.2.0 through 1.5.7-13 contain an out-of-bounds read vulnerability in the ZstdDictDecompress constructor because offset and length arguments are never validated against the dictionary array bounds. Attackers can supply arbitrary offset or length values to read memory past the end of the supplied array, potentially causing JVM termination.
- CVE-2026-89046High
zstd-jni versions 1.5.5-6 through 1.5.7-13 contain an out-of-bounds read vulnerability in Zstd.getFrameContentSize that fails to validate negative srcPosition arguments. Attackers can supply negative offset values that bypass bounds checks and reach the native frame-header parser.
- CVE-2026-87877High
zstd-jni versions before 1.5.7-14 fail to validate closed state in setDict, setLongMax, setLevel and setRefMultipleDDicts methods of stream classes. Attackers can call these methods on closed streams to write through freed native pointers, corrupting unrelated objects or crashing the JVM.
- CVE-2026-87825High
zstd-jni before 1.5.7-14 contains a use-after-free vulnerability where streams and contexts hold a dictionary's shared lock only during the load call, allowing the dictionary to be closed while still referenced. Attackers can close a dictionary after associating it with a stream or context, causing subsequent read or write operations to access freed native memory, resulting in silent data corruption or JVM crashes.
- CVE-2026-87824High
zstd-jni before 1.5.7-14 fails to validate the samples buffer capacity in Zstd.trainFromBufferDirect, allowing attackers to read past buffer boundaries by supplying oversized per-sample lengths. Attackers can trigger out-of-bounds memory access by providing crafted sample length arrays that cause the native implementation to walk past the buffer allocation, resulting in JVM termination.
- CVE-2026-87823High
zstd-jni before 1.5.7-14 performs 32-bit signed bounds checks on three direct-ByteBuffer frame-size native methods, allowing out-of-bounds memory reads via negative or overflowing offsets. Attackers can supply negative offset values near Integer.MIN_VALUE to read unmapped memory, causing JVM termination or extracting arbitrary frame size data from unintended memory locations.
- CVE-2026-87795High
zstd-jni versions before 1.5.7-14 fail to validate offset and length parameters in the ZstdDictCompress constructor, allowing out-of-bounds memory reads. Attackers can supply untrusted offset or length values to read native heap memory into the compression dictionary, typically causing JVM crashes.
Original NVD description (English source)
zstd-jni versions 1.4.8-4 through 1.5.7-13 fail to validate negative length parameters in ZstdInputStreamNoFinalizer.read(), allowing attackers to trigger infinite loops. Attackers can pass negative length values to cause the read method to spin indefinitely while holding the stream monitor, blocking all other threads from accessing the stream.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

