Description
yawkat LZ4 Java provides LZ4 compression for Java. From 1.7.0 until 1.11.4, net.jpountz.util.Native.load() uses File.createTempFile to create an exclusive temporary .lck file but derives the native-library path by removing the suffix, then FileOutputStream opens that predictable path without exclusive creation, allowing another local user with access to the same shared temporary directory to create or replace the library file before System.load() uses it. Successful exploitation depends on shared-directory permissions, host protections, and winning the race, and can execute native code as the victim; hardened systems may instead cause library loading to fail and fall back to Java implementations. Configurations using a system library, a private java.io.tmpdir, or Java-only implementations are not affected. This issue is fixed in version 1.11.4.
Published: 2026-10-06
Score: 7.3 High
EPSS: n/a
KEV: No
Impact: Local code execution via native library replacement
Action: Update Library
AI Analysis

Impact

The vulnerability in the yawkat LZ4 Java library is a race condition and improper file handling flaw. The library loads a native component by first creating a lock file in the system temporary directory and then writing the native library to a predictable path derived from that file. Because the subsequent file creation does not use exclusive flags, another local user can overwrite the native library before it is loaded. If successfully replaced, the attacker can supply forged native code that will execute with the same privileges as the Java process, potentially granting local code execution and privilege escalation. This flaw is mitigated by hardened systems that detect tampering and fall back to a pure Java implementation, which prevents exploitation without code changes.

Affected Systems

The issue affects the yawkat LZ4 Java library, versions 1.7.0 through 1.11.4 inclusive. Systems using an external native library, a private java.io.tmpdir setting, or the Java-only implementation are not vulnerable. The fix was introduced in 1.11.4.

Risk and Exploitability

With a CVSS v3 score of 7.3, the vulnerability has a medium to high severity. EPSS data is not available, and the vulnerability is not listed in CISA KEV. Successful exploitation requires that the application runs with write access to the shared temporary directory, that the directory is not locked by system protections, and that the attacker can outpace the race condition. If these conditions are met, native code can be executed under the process’s user. Hardened configurations that validate the library path or roll back to Java-only code effectively mitigate the risk.

Generated by OpenCVE AI on October 7, 2026 at 00:52 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade lz4-java to version 1.11.4 or later.
  • Configure the application to use a private java.io.tmpdir that is owned by the application and not writable by other users.
  • If upgrading is not possible, disable the native library load so that the library falls back to the safe Java implementation.

Generated by OpenCVE AI on October 7, 2026 at 00:52 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 07 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
First Time appeared Yawkat
Yawkat lz4-java
Vendors & Products Yawkat
Yawkat lz4-java

Tue, 06 Oct 2026 20:00:00 +0000

Type Values Removed Values Added
Description yawkat LZ4 Java provides LZ4 compression for Java. From 1.7.0 until 1.11.4, net.jpountz.util.Native.load() uses File.createTempFile to create an exclusive temporary .lck file but derives the native-library path by removing the suffix, then FileOutputStream opens that predictable path without exclusive creation, allowing another local user with access to the same shared temporary directory to create or replace the library file before System.load() uses it. Successful exploitation depends on shared-directory permissions, host protections, and winning the race, and can execute native code as the victim; hardened systems may instead cause library loading to fail and fall back to Java implementations. Configurations using a system library, a private java.io.tmpdir, or Java-only implementations are not affected. This issue is fixed in version 1.11.4.
Title yawkat LZ4 Java: Native library extraction to a shared temporary directory is vulnerable to file replacement by another local user
Weaknesses CWE-367
CWE-377
References
Metrics cvssV4_0

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


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-06T19:50:41.915Z

Reserved: 2026-10-06T16:49:40.591Z

Link: CVE-2026-106451

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-06T20:17:27.173

Modified: 2026-10-06T20:17:27.173

Link: CVE-2026-106451

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-07T01:00:09Z

Weaknesses
  • CWE-367

    Time-of-check Time-of-use (TOCTOU) Race Condition

  • CWE-377

    Insecure Temporary File