- ひとことでPHPUnit の一部のファイルが外から使え、PHP のコードを実行される弱点です。
- 深刻度9.8 緊急CVSS v3.1
- まずやることPHPUnit を 4.8.28 以降に更新する
基本情報(データから表示)
| CVE番号 | CVE-2017-9841 |
|---|---|
| 製品 | PHPUnit PHPUnit |
| 深刻度(CVSS) | 9.8 緊急CVSS v3.1 NVD による評価 詳細(ベクター)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| KEVへの追加日 | 2022-02-15 |
| 米国政府機関の対応期限 | 2022-08-15 |
| ランサムウェアでの悪用 | 不明(確認されていない) |
| 弱点の種類(CWE) | CWE-94(コードインジェクション) |
何が起きた
PHP のプログラムをテストするための道具 PHPUnit に含まれるファイル eval-stdin.php が、送られてきたデータを PHP のコードとして実行してしまう弱点が見つかりました。Web サイトの vendor フォルダーが外から見える状態だと、離れた場所の攻撃者に、任意の PHP のコード(攻撃者が好きに選べるプログラム)を実行される可能性があります。NVD の評価では、ネットワーク経由で、ログインも利用者の操作もなしに悪用できるとされています。CISA によると、実際の悪用が確認されています。
攻撃の流れ
データをもとに、AIを使用して作成した図です。実際の攻撃は、これと異なる場合があります。
誰が影響を受ける
PHPUnit が入った状態で Web サイトを公開している組織が対象です。NVD の説明では、4.8.28 より前と、5.x 系の 5.6.3 より前が影響を受けます。
何をすればいい
PHPUnit が 4.8.28 以降(5.x 系では 5.6.3 以降)に更新されているか確認してください。外から vendor フォルダーの中のファイルにアクセスできる状態になっていないかも見直してください。メーカーの公式の案内も確認してください。
やることチェックリスト
- PHPUnit を 4.8.28 以降に更新する
- 5.x 系なら 5.6.3 以降に更新する
- 更新後の PHPUnit の版を確かめる
用語メモ
- PHPUnit
- PHP で書かれたプログラムが正しく動くかを自動で確かめる、テスト用の道具です。
- vendor フォルダー
- PHP の部品管理ツールが、外部の部品をまとめて置くフォルダーです。
- eval-stdin.php
- PHPUnit に含まれるファイルの一つで、受け取った内容を PHP のコードとして実行します。
次に読む
公式情報と元データ
公式情報
- 公式の対策の出典(github.com)
- 公式の対策の出典(cveawg.mitre.org)
- 公式の対策の出典(api.github.com)
- NVD(米国の脆弱性データベース)
- CISA KEV カタログ
元データ(英語・CISA KEV より)を開く
PHPUnit Command Injection Vulnerability
概要
PHPUnit allows remote attackers to execute arbitrary PHP code via HTTP POST data beginning with a "<?php " substring, as demonstrated by an attack on a site with an exposed /vendor folder, i.e., external access to the /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php URI.
推奨対応
Apply updates per vendor instructions.
この元データの出どころ: CISA KEV カタログで見る