Description
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.
Published: 2026-09-09
Score: 7 High
EPSS: < 1% Very Low
KEV: No
Impact: Use-After-Free leading to memory corruption, potential crash or code execution
Action: Immediate Patch
AI Analysis

Impact

The zstd-jni library contains a use‑after‑free bug where calling setDict, setLongMax, setLevel, or setRefMultipleDDicts after a stream has been closed dereferences freed native pointers. This can corrupt memory, crash the JVM, and may allow arbitrary code execution. The flaw is a classic CWE‑416 scenario.

Affected Systems

All zstd‑jni versions from 1.3.8‑4 through 1.5.7‑13 released by the luben project are vulnerable. The issue is present in BaseZstdBufferDecompressingStreamNoFinalizer and ZstdInputStreamNoFinalizer sources, affecting any Java application that uses these streams and invokes the setter methods after close.

Risk and Exploitability

With a CVSS score of 7, the vulnerability is considered high severity. No EPSS score is reported, so current exploitation probability is unknown, though the flaw has not been listed in CISA KEV. In practice, an attacker would need to trigger the setter methods on a closed stream, which could be achieved through insecure application logic or crafted input. Given the native pointer misuse, the risk to system integrity and confidentiality is significant, especially in trusted or privileged runtimes.

Generated by OpenCVE AI on September 9, 2026 at 16:00 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the zstd‑jni library to version 1.5.7‑14 or later where the close check is added
  • Review application code to ensure no setter methods are called after a stream is closed; add defensive checks or refactor to eliminate the pattern
  • If an immediate upgrade is not possible, isolate the vulnerable library in a separate JVM or container and enable monitoring for abnormal crashes or core dumps

Generated by OpenCVE AI on September 9, 2026 at 16:00 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 10 Sep 2026 20:30:00 +0000

Type Values Removed Values Added
First Time appeared Luben
Luben zstd-jni
Vendors & Products Luben
Luben zstd-jni

Thu, 10 Sep 2026 12:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Wed, 09 Sep 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 09 Sep 2026 14:45:00 +0000

Type Values Removed Values Added
Description 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.
Title zstd-jni 1.3.8-4 through 1.5.7-13 Use-After-Free via Setters Called After close()
Weaknesses CWE-416
References
Metrics cvssV3_1

{'score': 7.7, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H'}

cvssV4_0

{'score': 7, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-09T15:57:53.652Z

Reserved: 2026-09-09T14:02:07.708Z

Link: CVE-2026-87877

cve-icon Vulnrichment

Updated: 2026-09-09T15:57:47.831Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-09T15:17:28.070

Modified: 2026-09-09T20:16:54.383

Link: CVE-2026-87877

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-09T14:32:45Z

Links: CVE-2026-87877 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-10T20:10:17Z

Weaknesses