CVE-2017-9841 の詳細
CVEの情報
説明:
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 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.
CVE更新日: 2017-06-27 17:29:00.177000
CVSSバージョン: 3.1
CVSSスコア: 9.8
KEVの情報
KEV更新日: 2022-02-15
EPSSの情報
EPSSは脆弱性が今後30日以内に悪用される確率を予測するスコアリングシステムで、FIRST(Forum of Incident Response and Security Teams)が提供しています。
EPSSのスコアが高いということは、攻撃されるリスクが高いことを意味するので、早めの対策が必要です。
EPSSスコア: 0.999990000
EPSS更新日: 2026-10-16 00:00:00
SSVCの情報
SSVCはカーネギーメロン大学ソフトウェア工学研究所が提案する脆弱性の評価手法です。ステークホルダーごとに脆弱性対応の優先度を決定することを支援します。
本サイトでは、CVE、KEV、EPSSの内容からExploitation(悪用状況)、Technical Impact(技術的影響)、Automatable(自動攻撃の可否)を判定します。
Exploitation: active
Technical Impact: high
Automatable: True
CVE-2017-9841は、PHPで広く使われている単体テストフレームワークであるPHPUnitに存在する深刻なリモートコード実行の脆弱性です。
1. 脆弱性の概要
脆弱性名: PHPUnitの
Util/PHP/eval-stdin.phpにおける任意のPHPコード実行の脆弱性 (PHPUnit Remote Code Execution)PHPUnitの
Util/PHP/eval-stdin.phpファイルには、リモートの攻撃者が任意のPHPコードを実行できる脆弱性が存在します。この脆弱性は、HTTP POSTデータとして"<?php "で始まるPHPコードを送信することによって悪用されます。このeval-stdin.phpファイルはテスト目的でPHPUnitに含まれており、eval('?>' . file_get_contents('php://input'));という行を含んでいるため、認証なしにユーザーが提供した入力を直接実行してしまいます。開発環境でのみ使用されるべきテストユーティリティが、Composerの依存関係として本番環境にデプロイされ、公開されている/vendorフォルダを通じてアクセス可能になっている場合に、この問題が発生します。1.1 影響
.envファイルからの認証情報漏洩や、侵害されたシステムをボットネットに組み込むための悪用も可能です。1.2 深刻度
2. 対象となる環境
2.1 影響を受けるOSバージョン
特定のOSバージョンに限定されるものではなく、PHPUnitを使用しているWebサーバー環境全般に影響します。
2.2 影響を受ける設定
vendorフォルダ(特にvendor/phpunit/phpunit/src/Util/PHP/eval-stdin.phpを含むパス)がインターネットからアクセス可能な状態になっているWebサイトやWebサーバー。3. 影響を受けた時の兆候
/phpunit/src/Util/PHP/eval-stdin.phpまたは/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.phpへの異常なPOSTリクエストが記録される場合があります。4. 推奨対策
4.1 本対策
vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.phpファイルが存在するか確認し、もし存在すれば削除してください。vendorディレクトリ全体、特にeval-stdin.phpへの外部からのHTTPアクセスをWebサーバーの設定(例: Apacheの.htaccessやNginxの設定)でブロックしてください。4.2 暫定回避策(緩和策)
/phpunit/src/Util/PHP/eval-stdin.phpへのリクエストをブロックするルールを設定してください。eval-stdin.phpへのPOSTリクエスト)を検出できるようにしてください。他に解説すべき観点
/vendorディレクトリが意図せず公開されていることが原因です。参照したサイト