Source: zstd-jni-java
Version: 1.5.2-5+ds-8
Severity: grave
Tags: security upstream
Justification: user security hole
X-Debbugs-Cc: [email protected], Debian Security Team <[email protected]>

Hi,

The following vulnerabilities were published for zstd-jni-java.

CVE-2026-87795[0]:
| 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.


CVE-2026-87823[1]:
| 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-87824[2]:
| 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-87825[3]:
| 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-87877[4]:
| 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-89045[5]:
| 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.


CVE-2026-89046[6]:
| 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, causing out-of-bounds memory reads that
| lead to information disclosure or JVM crashes.


If you fix the vulnerabilities please also make sure to include the
CVE (Common Vulnerabilities & Exposures) ids in your changelog entry.

For further information see:

[0] https://security-tracker.debian.org/tracker/CVE-2026-87795
    https://www.cve.org/CVERecord?id=CVE-2026-87795
[1] https://security-tracker.debian.org/tracker/CVE-2026-87823
    https://www.cve.org/CVERecord?id=CVE-2026-87823
[2] https://security-tracker.debian.org/tracker/CVE-2026-87824
    https://www.cve.org/CVERecord?id=CVE-2026-87824
[3] https://security-tracker.debian.org/tracker/CVE-2026-87825
    https://www.cve.org/CVERecord?id=CVE-2026-87825
[4] https://security-tracker.debian.org/tracker/CVE-2026-87877
    https://www.cve.org/CVERecord?id=CVE-2026-87877
[5] https://security-tracker.debian.org/tracker/CVE-2026-89045
    https://www.cve.org/CVERecord?id=CVE-2026-89045
[6] https://security-tracker.debian.org/tracker/CVE-2026-89046
    https://www.cve.org/CVERecord?id=CVE-2026-89046

Please adjust the affected versions in the BTS as needed.

Regards,
Salvatore

Reply via email to