---
title: "PHPUnit 13.4.0〜13.4.3 に脆弱性（CVE-2026-119193）: PHPT テストをカバレッジ付きで実行すると、共有の一時ディレクトリ経由で別のローカルユーザーにコードを実行される恐れ"
url: https://n-t-p.io/worldsecurity/articles/phpunit-phpt-coverage-shared-tmp-directory-local-code-execution-2026-119193
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年11月7日
updated: 2026年11月7日
severity: 中
cve: CVE-2026-119193
---

# PHPUnit 13.4.0〜13.4.3 に脆弱性（CVE-2026-119193）: PHPT テストをカバレッジ付きで実行すると、共有の一時ディレクトリ経由で別のローカルユーザーにコードを実行される恐れ

> **TL;DR:** PHPUnit の CVE-2026-119193（GitHub 評価 Medium、CVSS v4.0 5.4、CWE-379）。13.4.0〜13.4.3 は、PHPT テストをカバレッジ付きで実行すると共有の一時ディレクトリ（固定名）を使い、別のローカルユーザーがテストのコードを差し替えて、開発者の権限でコードを実行できる。13.4.4（10/27）で修正済みで、修正はリリース前のコミットに入っている。KEV 掲載なし、EPSS 0.11%。

**要点**
- CVE-2026-119193: PHPUnit 13.4.0〜13.4.3 が、PHPT テストのカバレッジ取得用ファイルを共有の一時パスの固定名ディレクトリに置き、他ユーザーが作ったものでも使う（CVSS v4.0 5.4、CWE-379）
- 条件は、PHPT をカバレッジ付きで実行し、一時パスが共有で、攻撃者が同じマシンのアカウントを持ち、先にディレクトリを作ること。macOS・Windows の既定、単独利用のコンテナや CI は対象外
- 影響範囲は 13.4.0 以上 13.4.4 未満、修正版は 13.4.4（10/27）。12.5 以前は影響なし。修正コミットはリリースの 23 分前
- 成功すると開発者の権限で任意のコードが動く一方、テストは成功し、カバレッジも欠けない。勧告は可能性を低いと評価
- NVD は未確認。KEV 掲載なし。EPSS は 0.11%（10/30）

PHP のテストフレームワーク PHPUnit に、2026 年 10 月 30 日（UTC）に脆弱性 CVE-2026-119193 が公開されました。GitHub Advisory の深刻度は Medium、CVSS v4.0 は 5.4（CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N）、CWE-379 です。GitHub の勧告に CVSS v3 の値は付いていません。CISA の KEV には載っていません。EPSS は 0.11%（10/30 時点）です。

## 何が起きるか

- PHPUnit 13.4.0 以降は、PHPT テストをコードカバレッジ付きで実行するとき、OS の一時ファイル用パス（Linux なら `/tmp`）の下の固定名のディレクトリ `phpunit-phpt` に、テストのコード（`.php`）とカバレッジのデータ（`.coverage`）を書き出して実行します。
- このディレクトリが他のユーザーによってすでに作られていても、所有者や権限を確かめずにそのまま使います。新しく作る場合の権限は `0777`（umask 適用前）で、sticky ビットもありません。
- 同じマシンのほかのローカルユーザーが先にこのディレクトリを作っておくと、開発者が PHPUnit を動かしたときにテストのコードを自分のコードに差し替えられ、開発者の権限で任意のコードを実行できます。元のコードも実行させられるため、テストは成功し、カバレッジのレポートも欠けません。気づきにくい攻撃です。
- `.coverage` ファイルも差し替えられますが、こちらは PHPUnit 自身のクラスのオブジェクトしか復元しないため、カバレッジ値の改ざんにとどまります。

## 悪用の条件

勧告が挙げる条件は次の 4 つで、すべて満たす場合に限られます。

1. PHPT テストを、PCOV や Xdebug などのカバレッジ取得ドライバー付きで実行している。
2. 一時ファイル用パスがユーザー間で共有されている。Linux などで `/tmp` を共有している場合が該当します。systemd の `PrivateTmp`、`pam_namespace`、ユーザーごとの `TMPDIR` を使っていれば当てはまりません。macOS と Windows は、既定ではユーザーごとの一時ディレクトリなので対象外です。
3. 攻撃者が同じマシンのアカウントを持つか、別アカウントで動くプロセス（サービスなど）を操作できる。
4. 一時ファイル用パスを最後に掃除してから、開発者が初めてカバレッジ付きで PHPT テストを動かすより前に、攻撃者がディレクトリを作る。

1 人のユーザーしか使わないコンテナや使い捨ての CI 実行環境のように、ほかのユーザー（サービス用アカウントを含む）が一時ファイル用パスに書き込めない環境は対象外です。勧告は可能性を低いと評価しています。成功した場合の影響は大きく、開発者がアクセスできるソースコード、認証情報、SSH 鍵などに及びます。

## 影響を受ける版と修正

- 勧告の影響範囲は 13.4.0 以上 13.4.4 未満、修正版は 13.4.4 です。PHPUnit 12.5 以前は、一時ファイルを PHPT テストファイルの隣に書くため影響を受けません。
- 13.4.4 では、一時ファイル用のディレクトリを予測できない名前で、現在のユーザーだけがアクセスできる権限で作ります。すでに存在するディレクトリは使いません。
- 修正のコミットは 10 月 27 日 02:54（UTC）、13.4.4 のリリースは同日 03:17（UTC）で、修正はリリースの前に入っています。リリースノートにも同じ内容が書かれています。12.5 系にも同日にリリースがありますが、この問題の影響は受けません。
- 13.4.4 のリリースノートには、静的解析キャッシュ用ディレクトリが他のユーザーによって作られていても使われる問題の修正も含まれています。

## 対応

1. `composer show phpunit/phpunit` で、使っている版を確認します。
2. 13.4.0〜13.4.3 なら、13.4.4 以降へ更新します（10 月 27 日には 13.4.5 も出ています）。
3. すぐ更新できない場合は、PHPT テストをカバレッジ付きで動かす環境で、ユーザーごとの `TMPDIR` や `PrivateTmp` を使う、または `/tmp/phpunit-phpt` が自分の所有であることを確かめてから実行します。
4. 共有サーバーで該当する構成を使っていた場合は、`/tmp/phpunit-phpt` の所有者を確かめます。

## 未確認の点

- NVD の記載は確認できていません（公開直後）。
- 悪用の報告は見つかっていません（KEV 掲載なし、EPSS は低い水準）。


## 出典
- [GitHub Advisory GHSA-9vw2-f4vp-x7gf](https://github.com/advisories/GHSA-9vw2-f4vp-x7gf) — GitHub
- [PHPUnit 13.4.4 リリースノート](https://github.com/sebastianbergmann/phpunit/releases/tag/13.4.4) — PHPUnit
- [PHPUnit 修正コミット ae31c78a](https://github.com/sebastianbergmann/phpunit/commit/ae31c78a) — PHPUnit
- [NVD CVE-2026-119193](https://nvd.nist.gov/vuln/detail/CVE-2026-119193) — NIST NVD
- [FIRST EPSS API](https://api.first.org/data/v1/epss?cve=CVE-2026-119193) — FIRST
- [CISA Known Exploited Vulnerabilities Catalog（JSON）](https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json) — CISA

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/phpunit-phpt-coverage-shared-tmp-directory-local-code-execution-2026-119193