Trusted Design

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

AIを使った解説

解説:

CVE-2019-11043について、以下の観点で解説します。

1. 脆弱性の概要

CVE-2019-11043は、PHPのFastCGI Process Manager (PHP-FPM) におけるリモートコード実行 (RCE) の脆弱性です。この脆弱性は、PHP-FPMの env_path_info 関数におけるバッファアンダーフローに起因します。不適切な入力検証により、FPMモジュールが割り当てられたバッファを超えてFastCGI (FCGI) プロトコルデータ用に予約された領域に書き込むことが可能となり、結果としてリモートからのコード実行につながります。

1.1 影響

  • リモートコード実行 (RCE): 認証されていないリモートの攻撃者が、細工されたリクエストを送信することで、ターゲットシステム上で任意のOSコマンドを実行できるようになります。
  • PHP実行環境変数の上書き: 攻撃者はPHPの実行環境の変数を上書きし、WebShellを読み込ませるなどして任意のPHPファイルに対して任意のコードを実行させることが可能になります。
  • サービス拒否 (DoS): メモリ破損が発生する可能性があり、製品のクラッシュや予期しない結果につながる可能性があります。
  • 実環境での悪用: この脆弱性はCISAのKnown Exploited Vulnerabilities (KEV) カタログに掲載されており、実際に悪用されていることが確認されています。
  • ランサムウェアキャンペーン: この脆弱性がランサムウェアキャンペーンで使用された記録があります。

1.2 深刻度

  • CVSS v3: 基本スコア 9.8 (Critical)
  • CVSS v2: 基本スコア 7.5 (High)
  • Red Hat Product Securityチームは、ネットワークに公開されたソフトウェア上でリモートコード実行を引き起こす可能性があるため、この問題を「Critical」なセキュリティ影響と評価しています。

2. 対象となる環境

本脆弱性は、NginxとPHP-FPMを組み合わせた環境に影響します。

2.1 影響を受けるOSバージョン

以下のPHPバージョンが影響を受けます。

  • PHP 7.1.x (7.1.33未満)
  • PHP 7.2.x (7.2.24未満)
  • PHP 7.3.x (7.3.11未満)
  • サポートが終了しているバージョンも同様に影響を受ける可能性があります。

2.2 影響を受ける設定

NginxサーバーでPHP-FPMが有効になっており、かつ以下の4つの条件がすべて満たされる場合に脆弱性が悪用可能となります。

  1. location ディレクティブでリクエストがPHP-FPMに転送されるようになっている。
  2. PATH_INFO 変数を割り当てる際に fastcgi_param ディレクティブが使用されている。
  3. fastcgi_split_path_info ディレクティブが存在し、^ で始まり $ で終わる正規表現が用いられている。
  4. 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. 影響を受けた時の兆候

  • 攻撃者が細工されたHTTP GETリクエストを送信することで、任意のOSコマンドが実行され、その実行結果がWebブラウザなどに表示される可能性があります。
  • Webサーバーのログに、通常では見られないような不正な形式のHTTPリクエスト(特にURLに改行コードなどが含まれるもの)が記録される可能性があります。
  • PHPの設定が予期せず上書きされ、不審なPHPファイルが実行される、または作成される兆候が見られる場合があります。
  • WebサーバーまたはPHP-FPMプロセスがクラッシュする、あるいは不安定になる可能性があります。

4. 推奨対策

4.1 本対策

PHPを以下の修正済みバージョンまたはそれ以降にアップグレードしてください。

  • PHP 7.1.33 以降
  • PHP 7.2.24 以降
  • PHP 7.3.11 以降

4.2 暫定回避策(緩和策)

即座にPHPのアップグレードができない場合は、以下の緩和策を適用することで攻撃のリスクを低減できます。

  • Nginx設定の変更:

    • fastcgi_param PATH_INFO $fastcgi_path_info; の記述を、fastcgi_param PATH_INFO $fastcgi_path_info if_not_empty; に変更してください。これにより、PATH_INFOが空の場合に処理がスキップされます。
    • Nginxの location ブロック内に try_files $uri =404; ディレクティブを追加し、$uri 変数がファイルとして解決されない場合にリクエストを404 Not Foundとして拒否するようにします。
  • WAFによる防御:

    • Web Application Firewall (WAF) を導入し、この脆弱性を悪用するような不正なHTTP GETリクエスト(特にURLに改行コードやコマンドインジェクションパターンを含むもの)を検知・ブロックするルールを設定します。

参照したサイト

NVDサイト

NVDでCVEの詳細を見る

戻る