CVE-2026-112914
Medium · 5.3CVSS
5.3
EPSS
0.2%
Published
Oct 20, 2026
CISA due date
—
Cloudanix analysis
A bug in a common Python tool for safely locking files lets another user on the same computer secretly redirect the lock so that files end up in the wrong place, which could let them change or expose data.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Data Tampering
- Component
- Library
- Class
- Path Traversal
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
SoftFileLock in filelock 4.1.0-4.2.0 restores a stale marker by name after moving it aside, permitting a local attacker with rename access in a non-sticky directory to substitute a symlink; on link-following runtimes sharing the filesystem this causes the lock process to hard-link an attacker-chosen file into the lock directory, resulting in unauthorized file placement with integrity impact.
Why it matters to the business
Local users on shared systems can cause unexpected file modifications or placements through the locking mechanism, potentially leading to data corruption, unauthorized access to files, or disruption of processes relying on file locks; urgency is moderate given the six-day-old public exploit and local attack requirements.
How an attack unfolds
An attacker with local rename access in the lock directory moves the marker aside, replaces it with a crafted symlink pointing to a target file on the same filesystem, and waits for the victim process using SoftFileLock to restore the marker; the runtime follows the link and performs a hard-link operation that places the attacker's chosen file into the lock directory.
How to fix it
Upgrade filelock to version 4.2.1 or later for all affected Python environments; where immediate upgrade is not possible restrict lock-directory permissions to sticky-bit mode or isolate processes that require file locking.
How to confirm the fix worked
Confirm the installed filelock version is 4.2.1 or newer via package metadata; review application code and dependency manifests for any pinned older versions and test lock behavior in a controlled directory without symlink traversal.
Typical attack path
- Identify a non-sticky directory used for SoftFileLock markers by a target Python process
- Obtain rename access in that directory as a local user
- Move the existing marker aside and substitute a symbolic link to a chosen target file
- Trigger or wait for the victim process to perform lock acquisition which follows the link
- Achieve hard-link of the target file into the lock directory
How to detect it
Review application logs for unexpected hard-link operations or file creations inside lock directories; inspect process execution and file-system events around SoftFileLock usage for symlink creation or marker manipulation by non-owner users.
What your security team should do
- Immediately audit all Python environments for filelock versions between 4.1.0 and 4.2.0 and schedule upgrades to 4.2.1
- Enforce sticky-bit permissions on directories used for file locks where feasible
- Monitor for new exploit code leveraging the public availability and reassess KEV status
- Restrict local user rename access to shared lock directories as a compensating control
The record
filelock is a platform-independent file lock for Python. From 4.1.0 until 4.2.1, SoftFileLock can restore a stale marker by name after moving it aside, allowing another local user with rename access in a non-sticky lock directory to swap in a symbolic link and, on a runtime that follows the link and a same-filesystem target, make the lock user hard-link one of its files into the lock directory. This issue is fixed in version 4.2.1.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119336 Pi-hole is a DNS sinkhole that protects devices from unwanted content without installing… CWE-59
- CVE-2026-119334 Pi-hole is a DNS sinkhole that protects devices from unwanted content without installing… CWE-59
- CVE-2026-116250 In server mode pgAdmin 4 validates a path a user gives for a file in their storage… CWE-59
- CVE-2026-119704 Bastille through 1.4.4 contains a symlink following vulnerability in the cp.sh, rcp.sh… CWE-59
- CVE-2026-119291 Zuke is a code-first, strongly typed build automation system for Deno. CWE-59
- CVE-2026-118990 CallBackery versions before 0.62.0 for Perl leave a world-readable dump of the… CWE-59
- CVE-2026-119364 ProFTPD through 1.3.9e and 1.3.10rc1 through 1.3.10rc4 contains a link-following… CWE-59
- CVE-2026-119168 HashiCorp Nomad and Nomad Enterprise are vulnerable to symlink following during… CWE-59