CVE-2019-11043 の詳細
CVEの情報
説明:
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it is possible to cause FPM module to write past allocated buffers into the space reserved for FCGI protocol data, thus opening the possibility of remote code execution.
CVE更新日: 2019-10-28 15:15:13.863000
CVSSバージョン: 3.1
CVSSスコア: 8.7
KEVの情報
KEV更新日: 2022-03-25
EPSSの情報
EPSSは脆弱性が今後30日以内に悪用される確率を予測するスコアリングシステムで、FIRST(Forum of Incident Response and Security Teams)が提供しています。
EPSSのスコアが高いということは、攻撃されるリスクが高いことを意味するので、早めの対策が必要です。
EPSSスコア: 0.997480000
EPSS更新日: 2026-10-16 00:00:00
SSVCの情報
SSVCはカーネギーメロン大学ソフトウェア工学研究所が提案する脆弱性の評価手法です。ステークホルダーごとに脆弱性対応の優先度を決定することを支援します。
本サイトでは、CVE、KEV、EPSSの内容からExploitation(悪用状況)、Technical Impact(技術的影響)、Automatable(自動攻撃の可否)を判定します。
Exploitation: active
Technical Impact: high
Automatable: True
CVE-2019-11043について、以下の観点で解説します。
1. 脆弱性の概要
CVE-2019-11043は、PHPのFastCGI Process Manager (PHP-FPM) におけるリモートコード実行 (RCE) の脆弱性です。この脆弱性は、PHP-FPMの
env_path_info関数におけるバッファアンダーフローに起因します。不適切な入力検証により、FPMモジュールが割り当てられたバッファを超えてFastCGI (FCGI) プロトコルデータ用に予約された領域に書き込むことが可能となり、結果としてリモートからのコード実行につながります。1.1 影響
1.2 深刻度
2. 対象となる環境
本脆弱性は、NginxとPHP-FPMを組み合わせた環境に影響します。
2.1 影響を受けるOSバージョン
以下のPHPバージョンが影響を受けます。
2.2 影響を受ける設定
NginxサーバーでPHP-FPMが有効になっており、かつ以下の4つの条件がすべて満たされる場合に脆弱性が悪用可能となります。
locationディレクティブでリクエストがPHP-FPMに転送されるようになっている。PATH_INFO変数を割り当てる際にfastcgi_paramディレクティブが使用されている。fastcgi_split_path_infoディレクティブが存在し、^で始まり$で終わる正規表現が用いられている。try_files $uri =404のようなファイルの有無を判断するためのチェックがない。具体的なNginx設定例:
nginx location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... }fastcgi_split_path_infoディレクティブに指定されている正規表現が改行コード(%0Aや%0D)を解釈すると、空のPATH_INFOがPHP-FPMサーバーに送られ、これがバッファアンダーフローを引き起こします。3. 影響を受けた時の兆候
4. 推奨対策
4.1 本対策
PHPを以下の修正済みバージョンまたはそれ以降にアップグレードしてください。
4.2 暫定回避策(緩和策)
即座にPHPのアップグレードができない場合は、以下の緩和策を適用することで攻撃のリスクを低減できます。
Nginx設定の変更:
fastcgi_param PATH_INFO $fastcgi_path_info;の記述を、fastcgi_param PATH_INFO $fastcgi_path_info if_not_empty;に変更してください。これにより、PATH_INFOが空の場合に処理がスキップされます。locationブロック内にtry_files $uri =404;ディレクティブを追加し、$uri変数がファイルとして解決されない場合にリクエストを404 Not Foundとして拒否するようにします。WAFによる防御:
参照したサイト