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