Pythonで、複数のプロセスが同じファイルを同時に書かないようにする部品「filelock」に、脆弱性2件が公表されました。どちらも、SoftFileLockなどの「ソフトロック」の処理にあり、同じサーバーにアカウントを持つ別の利用者が、共用のディレクトリを使って起こすものです。対象は4.1.0〜4.2.0で、4.2.1で直っています。
GitHubの勧告のデータベースに載ったのは2026年10月23日(米国時間)です。2件とも、AnthropicのOSSの検査の道具が10月15日に報告し、保守の担当が確かめたものです。
1件目の勧告。4.1.0〜4.2.0が対象で、4.2.1で修正出典: GitHub Advisory Database「GHSA-2g95-wg33-c5x2」(引用)
2件の中身
| CVE |
深刻度(CVSS 3.1) |
起きること |
前提の条件 |
| CVE-2026-112906 |
Medium(4.7) |
別の利用者が、ロックのファイルの場所に自分の空のファイルを置いて時刻を細工すると、ロックを持っている人のロックが「古い」と見なされて消される。同じ利用者の2つのプロセスが、エラーも無く同時にロックを持つ |
別の利用者がロックのディレクトリにファイルを作れる(/tmpのような共用のディレクトリを含む)。ext4などinodeの番号をすぐ使い回すファイルシステム。成功の確率は低い |
| CVE-2026-112914 |
Medium(5.3) |
古いロックを破る処理の途中で、別の利用者がシンボリックリンクに差し替えると、ロックを使う人の別のファイルへのハードリンクが、ロックのディレクトリに作られる。中身は読めないが、大きさ・日時・持ち主が見え、名前を動かせる。4.2.0では、あとからその名前にFileLockを取ると中身が消された |
別の利用者が、スティッキービットの無い共用のディレクトリに書ける。LinuxのCPython 3.12以降かmacOS |
対象は、SoftFileLock・MarkerSoftFileLock・SoftFileLease、lifetimeの指定を使ったロックの処理です。どちらも、攻撃する側が同じマシンにアカウントを持つ「ローカル」の脆弱性で、ネットワークの外からは起こせません。
2件目の勧告。リンクの差し替えでハードリンクを作らされる出典: GitHub Advisory Database「GHSA-crv4-6mhj-j5jh」(引用)
対象の版は1週間だけ出ていた
PyPIの記録では、対象の版が出ていた期間は短く、4.2.1からは直っています(10月25日に当社が確かめた時点の最新は4.2.4)。
| 版 |
PyPIに出た日 |
状態 |
| 4.0.0 |
2026年9月17日 |
対象外 |
| 4.1.0 |
2026年10月9日 |
対象 |
| 4.2.0 |
2026年10月14日 |
対象 |
| 4.2.1 |
2026年10月17日 |
修正版 |
filelockは、ほかの多くの道具の依存に入っています。PyPIの登録の情報では、virtualenv(Python 3.10以降でfilelock 3.24.2以上5未満)、tox(3.25以上)、huggingface-hub(3.10.0以上)、PyTorch、datasetsが、filelockを使うとしています。どれも4.1.0〜4.2.0を除いていないため、10月9日〜17日に依存を入れ直した環境には、対象の版が入っている可能性があります(当社の見立て)。これらの道具がソフトロックを使っているかは、勧告には書かれていません。
同じOSSの検査の道具は、virtualenvでも脆弱性を見つけています(virtualenvの脆弱性が6件に 21.14.9へ更新を)。
すぐ上げられないときの対処
勧告は、修正版に上げられない場合の対処として次を挙げています。
- ソフトロックは、ほかの利用者がファイルを作れないディレクトリ(ロックを使う人だけが入れる0700のディレクトリ)に置く。共用の/tmpのような場所に置かない
- 1件目は、inodeの番号を使い回さないtmpfsに置くことでも避けられる。flockが使える手元のext4なら、SoftFileLockより、ふつうのFileLockを使う
- 2件目は、LinuxのCPython 3.11では起きない。別の利用者が決められる名前に、FileLockを取らない