最近の脆弱性 › CVE-2017-9841

PHPUnit PHPUnit のコマンドインジェクションの脆弱性(CVE-2017-9841)

この解説はAIを使用して作成しています。誤りを含む可能性があり、内容は保証できません。必ず公式情報をご確認ください。

基本情報(データから表示)

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を使用して作成した図です。実際の攻撃は、これと異なる場合があります。

攻撃の流れ: 1. 攻撃者が vendor フォルダーを見つける → 2. eval-stdin.php にデータを送る → 3. 送ったデータが PHP として実行される1攻撃者が vendor フォルダーを見つける2eval-stdin.php にデータを送る3送ったデータが PHP として実行される攻撃の流れ: 1. 攻撃者が vendor フォルダーを見つける → 2. eval-stdin.php にデータを送る → 3. 送ったデータが PHP として実行される1攻撃者が vendor フォルダーを見つける2eval-stdin.php にデータを送る3送ったデータが PHP として実行される

誰が影響を受ける

PHPUnit が入った状態で Web サイトを公開している組織が対象です。NVD の説明では、4.8.28 より前と、5.x 系の 5.6.3 より前が影響を受けます。

何をすればいい

PHPUnit が 4.8.28 以降(5.x 系では 5.6.3 以降)に更新されているか確認してください。外から vendor フォルダーの中のファイルにアクセスできる状態になっていないかも見直してください。メーカーの公式の案内も確認してください。

やることチェックリスト

用語メモ

PHPUnit
PHP で書かれたプログラムが正しく動くかを自動で確かめる、テスト用の道具です。
vendor フォルダー
PHP の部品管理ツールが、外部の部品をまとめて置くフォルダーです。
eval-stdin.php
PHPUnit に含まれるファイルの一つで、受け取った内容を PHP のコードとして実行します。

元データ(英語・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.

公式情報