Skip to main content

filelock EUVDEUVD-2026-105018

| CVE-2026-112911 MEDIUM
Unverified Ownership (CWE-283)
2026-10-20 GitHub_M
6.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Local account on shared multi-user host
  2. Delivery
    Pre-create protocol directory in shared parent
  3. Exploit
    Victim adopts attacker-owned lock directory
  4. Execution
    Alter protocol state and admit concurrent holders
  5. Impact
    Corrupt resource protected by the lock

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Ownership verification
Exploitation Conditions

Exploitation requires: (1) a local attacker account on the same host as the victim; (2) use of the opt-in StrictSoftFileLock (3.30.0 through <4.2.1) or SoftReadWriteLock (4.0.0 through <4.2.1) classes - the default FileLock is not affected; (3) the lock's protocol directory ('<path>.filelock'/claims or '<path>.rw'/gen/holders) placed in a parent directory writable by other local users; and (4) the attacker creating that protocol directory before the victim acquires the lock, winning the ordering race. Limiting factors that reduce realistic risk: no remote vector (local access only), no confidentiality impact, the need for a shared writable/non-sticky parent directory, reliance on non-default lock classes, and the race/ordering requirement reflected in AC:H. The fix refuses coordination directories owned by a foreign account under sticky parents such as /tmp and opens directories with O_NOFOLLOW, so default sticky-directory deployments are already partially protected.

Impact

This is a medium-severity, local-only issue whose signals are internally consistent and point to limited real-world urgency. The CVSS vector (AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H, base 6.3) requires an attacker to already have a local account on the same host (PR:L) and to win an ordering/race condition by creating the protocol directory before the victim (AC:H), with no confidentiality impact (C:N) but high integrity and availability impact because mutual exclusion is broken and concurrent holders are admitted. No EPSS score, CISA KEV listing, or POC is present in the supplied intelligence, so there is no public exploit identified at time of analysis and no evidence of active exploitation. These signals do not conflict: a local-only, race-dependent lock-bypass in an opt-in Python lock class is characteristically low-probability and situational rather than mass-exploitable. One inconsistency must be flagged: the input Tags include 'Information Disclosure', but the CVSS vector explicitly sets C:N and the description describes a locking/concurrency integrity failure, not data leakage - the tag appears mislabeled and should not drive triage. Net priority is moderate for multi-tenant Linux hosts that use StrictSoftFileLock or SoftReadWriteLock in a world-writable shared directory, and low elsewhere.

Exploit ScenarioDerived

On a multi-user Linux host where filelock's StrictSoftFileLock or SoftReadWriteLock places its coordination directory in a shared, non-sticky parent directory, a local attacker pre-creates the expected protocol directory (e.g. '<path>.filelock'/claims or '<path>.rw') before the victim process acquires the lock. The victim adopts the attacker-owned directory and its protocol state, letting the attacker admit concurrent lock holders and corrupt the resource the lock was meant to serialize. No public exploit code was identified in the provided data, and exploitation depends on winning the directory-creation race.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 20, 2026

The Python filelock package's opt-in StrictSoftFileLock (3.30.0 through <4.2.1) and SoftReadWriteLock (4.0.0 through <4.2.1) can adopt a protocol directory (<path>.filelock/claims or <path>.rw/gen/holders) that another local account created first inside a shared, non-sticky parent directory, letting that account tamper with protocol state and admit two concurrent lock holders. Only local attackers on the same host who win the creation race can exploit it; the default FileLock class is not affected, there is no confidentiality impact, and the race/ordering requirement raises attack complexity. No public exploit code was identified at time of analysis, and the issue is fixed in filelock 4.2.1.

RemediationAI

Upgrade filelock to 4.2.1 or later, which is the vendor-released patch containing the ownership verification and O_NOFOLLOW/dir_fd hardening introduced in https://github.com/tox-dev/filelock/pull/839 (commit https://github.com/tox-dev/filelock/commit/bfa066d65a1ba9106f86ee9d027f7588b9c77e03) and documented at https://github.com/tox-dev/filelock/releases/tag/4.2.1. Until upgrading, avoid the opt-in StrictSoftFileLock and SoftReadWriteLock classes and use the default FileLock, and never place lock paths in a shared directory writable by other accounts; only sticky parents such as /tmp or directories writable exclusively by the lock's users are acceptable, since the new checks only reject foreign-owned protocol directories under a sticky parent. Note that after upgrading, directories previously created with wider permissions by an old release are narrowed automatically only when the current account owns them; leftovers owned by another account must be removed manually, so operators should audit and delete stale <path>.filelock/claims or <path>.rw/gen/holders trees before re-acquiring locks. Windows hosts should additionally confirm no junction sits at the protocol directory path, as the patched code refuses such junctions.

Affected VersionsENISA

filelock 3.30.0, < 4.2.1

Affected Packages

euvd filelock fix: 4.2.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

filelock implements cross-process locking for Python by creating sentinel and coordination files on disk; StrictSoftFileLock uses a <path>.filelock directory containing claims, while SoftReadWriteLock uses <path>.rw with gen and holders records. The root cause is CWE-283 (Unverified Ownership): pre-4.2.1 releases never confirmed that an existing protocol directory belonged to the account running the lock, so a different local user could pre-create it in a writable parent (for example a non-sticky shared directory) and then rewrite claims/generations to make the protocol believe multiple holders were legitimate. The 4.2.1 fix, delivered through PR #839 and commit bfa066d, checks ownership under sticky parents such as /tmp and raises SoftFileLockProtocolError/RuntimeError when the directory belongs to neither the lock owner nor the parent's owner, opens directories with O_NOFOLLOW and reaches children through dir_fd so swapped-in symlinks cannot redirect operations, sets restrictive modes plus the sticky bit on created directories, and on Windows refuses junctions by holding the directories open. Because the protection relies on directory boundaries, the advisory notes that any ancestor writable and non-sticky by another account still undermines the lock regardless of the internal checks.

Know when Filelock gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.3 MEDIUM
AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H
vuln.today AI 6.3 MEDIUM

Local co-tenant needed (AV:L, PR:L) who must win a directory-creation race (AC:H); breaks mutual exclusion affecting integrity and availability (I:H/A:H) with no data leak (C:N).

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H
4.0 AV:L/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 20, 2026 - 16:02 EUVD
CVE Published
Oct 20, 2026 - 14:21 cve.org
MEDIUM 6.3

DescriptionCVE.org

filelock is a platform-independent file lock for Python. From 3.30.0 until 4.2.1, StrictSoftFileLock versions from 3.30.0 and SoftReadWriteLock versions from 4.0.0 can adopt a protocol directory created first by another local user in a shared parent directory, allowing that user to alter protocol state and admit concurrent holders. This issue is fixed in version 4.2.1.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
High
very widely used Python dependency, but affected classes are opt-in soft locks
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
High

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2026-112940 HIGH
7.1 Oct 20

filelock's SQLite-backed ReadWriteLock (versions 3.20.4 through 4.2.0) can be tricked into overwriting or unlinking the

CVE-2026-112936 MEDIUM
6.1 Oct 20

Symlink redirection in filelock's ReadWriteLock and AsyncReadWriteLock (versions 3.20.4 through 4.0.8) allows a local us

CVE-2026-112934 MEDIUM
6.1 Oct 20

SoftReadWriteLock in the Python filelock package (4.0.0 through 4.2.0) refreshes holder records by pathname without veri

CVE-2026-112909 MEDIUM
6.1 Oct 20

Python filelock's UnixFileLock truncates a regular file that a second local user has renamed onto the lock path (or hard

CVE-2026-112937 MEDIUM
6.1 Oct 20

A time-of-check-to-time-of-use (TOCTOU) flaw in the Python filelock library's ReadWriteLock, present from 4.1.0 through

CVE-2026-112915 MEDIUM
5.5 Oct 20

Local denial of service in the Python `filelock` package (versions 3.20.4 through 4.2.0) allows a second local account t

CVE-2026-112914 MEDIUM
5.3 Oct 20

A local, low-privileged user (PR:L) who can rename files in a shared, non-sticky-bit lock directory can abuse the Python

CVE-2026-22701 MEDIUM
5.3 Jan 10

Python's filelock SoftFileLock implementation prior to version 3.20.3 contains a TOCTOU race condition that allows local

CVE-2026-112939 MEDIUM
4.7 Oct 20

SoftFileLock, MarkerSoftFileLock, and SoftFileLease in the Python filelock package from 3.22.0 through 4.2.0 can be tric

CVE-2026-112935 MEDIUM
4.7 Oct 20

The Python filelock library (versions 3.22.0 through 4.2.0) can admit two simultaneous lock holders because its SoftFile

CVE-2026-112906 MEDIUM
4.7 Oct 20

Python's filelock library, versions 4.1.0 through 4.2.0, allows a local attacker who is already contending on the same l

CVE-2026-112941 LOW
3.3 Oct 20

Symlink or junction replacement of the `<path>.rw` lock tree in Python's filelock 4.1.0 through 4.2.0 lets a second, co-

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy