{"id":"CVE-2026-112934","kind":"vulnerability","aliases":["CVE-2026-112934"],"related":[],"title":"filelock: local user can stall or write through Python file locks","description":"filelock is a platform-independent file lock for Python. From 4.0.0 until 4.2.1, SoftReadWriteLock refreshes holder records by name, allowing another local user with rename access to the lock directory to replace a record with a named pipe and stall the lock, or under a permissive hard-link policy to link a reachable target file and cause the lock user to write through it. This issue is fixed in version 4.2.1.","summary":"Versions 4.0.0 through 4.2.1 of the filelock Python package let another local user with rename access to the lock directory swap a holder record for a named pipe, stalling the lock. Under a permissive hard-link policy, the same user can link a target file so the lock user writes through it.","severity":"medium","cvss":6.1,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"tox-dev filelock","fixed":["4.2.1"],"affected":">= 4.0.0, < 4.2.1","ecosystem":"vendor"}],"ecosystems":["vendor"],"tags":["filelock","package","python","self-hosted","shared-hosts"],"not_affected_if":["no-softreadwritelock","non-shared-lock-directory","single-user-host"],"how_to_check":"- Run `pip show filelock` or `python -c \"import filelock; print(filelock.__version__)\"` and check whether the version is `4.0.0` to `4.2.1`.\n- Check whether the project or service uses `SoftReadWriteLock` (grep the code for `SoftReadWriteLock`).\n- Check whether the lock directory is writable by other local users.","fix":"- Upgrade filelock to `4.2.1` or later (`pip install --upgrade \"filelock>=4.2.1\"`).\n- Restrict the lock directory so only the service account can rename or create files in it.","status":"open","published_at":"2026-10-20T15:17:16+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","triaged_at":"2026-10-25T04:04:09+00:00","updated_at":"2026-10-25T04:04:09+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T04:04:09Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade filelock to `4.2.1` or later (`pip install --upgrade \"filelock>=4.2.1\"`).\n- Restrict the lock directory so only the service account can rename or create files in it.","reach":"local","title":"filelock: local user can stall or write through Python file locks","impact":"medium","summary":"Versions 4.0.0 through 4.2.1 of the filelock Python package let another local user with rename access to the lock directory swap a holder record for a named pipe, stalling the lock. Under a permissive hard-link policy, the same user can link a target file so the lock user writes through it.","category":"package","nicknames":[],"who_cares":["python","filelock","self-hosted","shared-hosts"],"confidence":0.8,"needs_auth":"yes","worst_case":"Local user stalls the lock or overwrites a file the lock user writes","analyst_note":"","how_to_check":"- Run `pip show filelock` or `python -c \"import filelock; print(filelock.__version__)\"` and check whether the version is `4.0.0` to `4.2.1`.\n- Check whether the project or service uses `SoftReadWriteLock` (grep the code for `SoftReadWriteLock`).\n- Check whether the lock directory is writable by other local users.","needs_analyst":false,"not_affected_if":["single-user-host","no-softreadwritelock","non-shared-lock-directory"],"who_is_affected":"Systems running Python code that imports filelock between 4.0.0 and 4.2.1 and use SoftReadWriteLock with a lock directory that other local users can write to. The attacker must already have a local account on the same machine. Single-user machines and containers without shared lock directories can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000647,"input_tokens":3379,"output_tokens":619,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-112934':14A,17A '-2026':13A,16A '4.0.0':32B,93C '4.2.1':34B,95C,154C 'access':46B,108C 'allow':102C 'anoth':41B,103C 'caus':140C 'cve':12A,15A 'dev':20A 'directori':50B,112C 'file':10A,76B,88C,138C 'filelock':1A,21A,22B,37B,82C 'fix':151C 'hard':66B,130C 'hard-link':65B,129C 'holder':53B,98C 'host':27B,30B 'independ':87C 'issu':149C 'let':40B 'link':67B,73B,131C,134C 'local':2A,42B,104C 'lock':11A,49B,61B,79B,89C,111C,124C,142C 'name':57B,101C,119C 'packag':23B,39B 'permiss':64B,128C 'pipe':58B,120C 'platform':86C 'platform-independ':85C 'polici':68B,132C 'python':9A,24B,38B,91C 'reachabl':136C 'record':54B,99C,116C 'refresh':97C 'renam':45B,107C 'replac':114C 'self':26B 'self-host':25B 'share':29B 'shared-host':28B 'softreadwritelock':96C 'stall':5A,59B,122C 'swap':51B 'target':75B,137C 'tox':19A 'tox-dev':18A 'user':3A,43B,71B,80B,105C,143C 'version':31B,153C 'write':7A,81B,145C","nicknames":[],"mitigations":[],"who_affected":"Systems running Python code that imports filelock between 4.0.0 and 4.2.1 and use SoftReadWriteLock with a lock directory that other local users can write to. The attacker must already have a local account on the same machine. Single-user machines and containers without shared lock directories can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-20T15:17:16+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-112934","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-112934","severity":null,"published_at":"2026-10-20T15:17:16+00:00","modified_at":"2026-10-22T22:18:02+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","fetched_at":"2026-10-23T22:28:58+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}