{"id":"DEBIAN-CVE-2026-112938","details":"filelock is a platform-independent file lock for Python. From 3.30.0 until 4.2.1, On POSIX platforms, StrictSoftFileLock and AsyncStrictSoftFileLock validate the coordination directory in _ensure_protocol_directory but later reach the claims directory through _open_directory by pathname, allowing a local account that can rename the coordination name to swap in a symbolic link between check and use during acquisition. That race can create and leave claim files in another writable directory or strand claims in a different strict lock so the second lock times out. Separately, the claims property and force_break follow a resting symbolic link without a race when the lock user inspects or recovers the lock. Claims inspection discloses a file name to the other account only if the resulting exception text or claim_name reaches that account through a shared log, CI output, or error report. A blind force_break recovery that removes live claims from another strict lock can allow two processes into that lock's critical section; this path reaches other strict locks, not arbitrary files. This issue is fixed in version 4.2.1.","modified":"2026-11-06T16:00:06.764674144Z","published":"2026-11-05T22:17:47.213Z","upstream":["CVE-2026-112938"],"references":[{"type":"ADVISORY","url":"https://security-tracker.debian.org/tracker/CVE-2026-112938"}],"affected":[{"package":{"name":"python-filelock","ecosystem":"Debian:12","purl":"pkg:deb/debian/python-filelock?arch=source&distro=bookworm"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.12.2-1","3.12.3-1","3.12.4-1","3.13.1-1","3.13.3-1","3.13.4-1","3.14.0-1","3.15.4-1","3.16.1-1","3.16.1-2","3.17.0-1","3.18.0-1","3.19.1-1","3.20.0-1","3.20.2-1","3.20.3-1","3.24.3-1","3.25.0-1","3.25.2-1","3.29.0-1","3.29.4-1","3.29.5-1","3.29.7-1","3.32.0-1","3.32.2-1","3.32.4-1","3.32.4-2","3.32.5-1","3.32.6-1","3.9.0-1","3.9.0-1+deb12u1","4.0.1-1","4.0.12-1","4.1.1-1","4.2.8-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-112938.json"}},{"package":{"name":"python-filelock","ecosystem":"Debian:13","purl":"pkg:deb/debian/python-filelock?arch=source&distro=trixie"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.18.0-1","3.18.0-1+deb13u1","3.19.1-1","3.20.0-1","3.20.2-1","3.20.3-1","3.24.3-1","3.25.0-1","3.25.2-1","3.29.0-1","3.29.4-1","3.29.5-1","3.29.7-1","3.32.0-1","3.32.2-1","3.32.4-1","3.32.4-2","3.32.5-1","3.32.6-1","4.0.1-1","4.0.12-1","4.1.1-1","4.2.8-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-112938.json"}},{"package":{"name":"python-filelock","ecosystem":"Debian:14","purl":"pkg:deb/debian/python-filelock?arch=source&distro=forky"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.18.0-1","3.19.1-1","3.20.0-1","3.20.2-1","3.20.3-1","3.24.3-1","3.25.0-1","3.25.2-1","3.29.0-1","3.29.4-1","3.29.5-1","3.29.7-1","3.32.0-1","3.32.2-1","3.32.4-1","3.32.4-2","3.32.5-1","3.32.6-1","4.0.1-1","4.0.12-1","4.1.1-1","4.2.8-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-112938.json"}}],"schema_version":"1.9.2","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H"}]}