本文へ移動
情シスのミカタ
ニュース約4分で読めます

Pythonのfilelockに脆弱性2件 共用のディレクトリのロックが破られる 4.2.1へ

Pythonのファイルのロックの部品filelockで、SoftFileLockなどの「ソフトロック」に脆弱性2件が公表されました。同じサーバーの別の利用者が、共用のディレクトリを使ってロックを破ったり、自分のファイルへのハードリンクを作らせたりできます。対象は4.1.0〜4.2.0で、4.2.1で直っています。

公開 情シスのミカタ編集部AIにより執筆チェック済み
文字
Pythonのfilelockに脆弱性2件 共用のディレクトリのロックが破られる 4.2.1へ

この記事のまとめ

  • Pythonの部品filelockのSoftFileLockなどの「ソフトロック」に、脆弱性2件(CVE-2026-112906・CVE-2026-112914、どちらもMedium)が公表されました。対象は4.1.0〜4.2.0で、4.2.1で直っています。
  • どちらも、同じサーバーにアカウントを持つ別の利用者が、共用のディレクトリを使って起こすものです。ロックが二重に取られてデータが壊れる、または利用者自身のファイルへのハードリンクを作らされる恐れがあります。
  • 対象の版がPyPIに出ていたのは10月9日〜17日の約1週間です。filelockはvirtualenv・tox・huggingface-hub・PyTorchなどの依存に入っているため、その間に作った環境の版を確かめます。
こんな方に#20代#30代#40代#50代実務

Pythonで、複数のプロセスが同じファイルを同時に書かないようにする部品「filelock」に、脆弱性2件が公表されました。どちらも、SoftFileLockなどの「ソフトロック」の処理にあり、同じサーバーにアカウントを持つ別の利用者が、共用のディレクトリを使って起こすものです。対象は4.1.0〜4.2.0で、4.2.1で直っています。

GitHubの勧告のデータベースに載ったのは2026年10月23日(米国時間)です。2件とも、AnthropicのOSSの検査の道具が10月15日に報告し、保守の担当が確かめたものです。

GitHubの勧告のデータベースのGHSA-2g95-wg33-c5x2の画面。題はfilelock: SoftFileLock evicts a fresh lock file whose watched age another local user's pre-dated file passed on through inode reuse。深刻度はModerate、パッケージはfilelock(pip)、対象の版は4.1.0以上4.2.0以下、修正版は4.2.1、CVSSは4.7。
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の指定を使ったロックの処理です。どちらも、攻撃する側が同じマシンにアカウントを持つ「ローカル」の脆弱性で、ネットワークの外からは起こせません。

GitHubの勧告のデータベースのGHSA-crv4-6mhj-j5jhの画面。題はfilelock: SoftFileLock stale-break restore follows a swapped-in symbolic link and hard-links a file of the user running the lock into the lock directory。深刻度はModerate、パッケージはfilelock(pip)、対象の版は4.1.0以上4.2.0以下、修正版は4.2.1、CVSSは5.3。
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を取らない

影響する会社・しない会社

  • 影響する: 複数の人がログインして使う開発用のサーバー、分析用のサーバー(JupyterHubなど)、共用のCIの実行機で、filelock 4.1.0〜4.2.0とソフトロックを使っている会社
  • 確かめる: 10月9日〜17日に、Pythonの仮想環境やコンテナのイメージを作り直した会社。依存として対象の版が入っていないかを見ます
  • 影響しにくい: 1人だけが使う端末や、ほかの利用者のいないコンテナで動かしている場合。どちらの脆弱性も、同じマシンの別の利用者が前提です(当社の見立て)
  • 影響しない: filelockの4.0.x以前か、4.2.1以降を使っている場合

情シスが今日やること

  1. 版を確かめます。 共用のサーバーやCIの実行機で、pip show filelock やロックファイル(requirements.txt、poetry.lockなど)で、filelockの版を一覧にします。とくに10月9日〜17日に作った環境やイメージを優先します。
  2. 4.2.1以降に上げます。 対象の版が入っていれば、4.2.1以降(確かめた時点の最新は4.2.4)に上げ、コンテナのイメージは作り直します。
  3. 共用のディレクトリの使い方を見直します。 複数の利用者がいるサーバーで、キャッシュやロックのファイルを/tmpのような共用の場所に置く設定がないかを、開発の部門と確かめます。置き場所は利用者ごとのディレクトリにします。
  4. 依存の入れ直しの記録を残します。 どの日にどの版の部品を入れたかが分かると、今回のように短い期間だけ出ていた版を追いやすくなります。ロックファイルとイメージの作成の記録を残す運用にします(当社の見立て)。

よくある質問

QふつうのFileLockも危ないですか。

A勧告の対象は、SoftFileLock・MarkerSoftFileLock・SoftFileLease、lifetimeの指定といった「ソフトロック」の処理です。ただし2件目の勧告は、4.2.0では、別の利用者が作らせた名前にあとからFileLockを取ると、ファイルの中身が消されたとしています。

Q1人で使うパソコンでも影響しますか。

Aどちらも、同じマシンにアカウントを持つ別の利用者が前提です(ローカル)。1人だけが使う端末や、ほかの利用者がいないコンテナでは、勧告の条件に当てはまりにくくなります(当社の見立て)。

出典・参考

チェック済み。この記事は監修者によってチェックされました。(2026年10月25日)

執筆

情シスのミカタ編集部AIにより執筆

書いた AI: AI記者(解説)

法令・官公庁の発表・企業の公式発表などの一次情報を調べて、情シス向けの解説・比較・テンプレの記事を書きます。数字と日付は出典と照らして確かめ、記事の最後に出典を載せています。使っているAI: Anthropic Claude。

監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

メモ: 掲載時に自動で(しばらくの間)

記事は AI が一次情報を調べて書き、機械の検査を通してから公開しています。人が見ているもの・見ていないものはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします