EN

NRIセキュア ブログ

【検証】PHPのコマンド実行の脆弱性を悪用する攻撃通信の検知 (CVE-2019-11043)

目次

    Digital security lock

    2019年10月25日(日本時間)、PHP開発チームはPHP 7.1、7.2、7.3 において脆弱性 (CVE-2019-11043) を修正したバージョンを公開しました。
    本脆弱性は、nginx と PHP-FPM を組み合わせた環境において以下のような設定がされている場合に、リモートコマンド実行が可能になるというものです。

     

    location ~ [^/]\.php(/|$) {
         fastcgi_split_path_info ^(.+?\.php)(/.*)$;
         fastcgi_param PATH_INFO $fastcgi_path_info;
         fastcgi_pass php:9000;
         ...
    }

     

    nginx側の処理にてURLに改行コード(%0a, %0d)が含まれる際の不備に起因し、攻撃者は細工した悪意のあるリクエストをサーバに送ることで、本脆弱性を悪用してPHPの任意の設定値を上書きすることが可能であり、その結果、リモートから任意のコマンド実行が可能となります。

    本記事では、脆弱性の検証結果や弊社SOCでの検知傾向について解説します。

     

     

    ゼロトラストセキュリティの落とし穴とは? ゼロトラスト環境をより安全にするためのペネトレーションテスト・アプローチ

    報告されている脆弱性

    本脆弱性の影響を受けるバージョンは以下のとおりです。

    • PHP 7.3.10以下
    • PHP 7.2.23 以下
    • PHP 7.1.32 以下

    ※ なお、サポートが終了しているバージョンにおいても同様に影響を受ける可能性があります。

    本脆弱性は公開当初、パッチが存在しないゼロデイの状態でしたが、10月25日(日本時間)に本脆弱性を修正する新しいバージョンが公開されています。パッチの詳細についてはベンダの情報をご参照ください。

    脆弱性の検証結果

    本脆弱性の有無を調査する方法や任意のコード実行を行う手法はすでに公開されています。
    検証の結果、以下のことを確認しました。

    ・本脆弱性を有する環境において、リモートから任意のコマンド実行が可能である。
    ・本脆弱性を対策したバージョンにアップデートすることで攻撃は成立しなくなる。

    検証環境

    以下で公開されているDocker コンポーネントを使用しました。

    検証結果

    今回行った検証は、脆弱性を悪用し対象サーバのPHPの設定を上書きしてWebShellを配置するというものです。
    以下は、脆弱性有無を調査する攻撃リクエストであり、脆弱性を有するサーバは502応答を返します。(図1)


    調査リクエストに対して脆弱な応答を確認した例_21.  調査リクエストに対して脆弱な応答を確認した例

     

    以下は脆弱性を悪用してPHPの設定書き換えを試みる攻撃リクエストです。(図2)
    今回の攻撃コードでは、PHPの設定を書き換えることでエラーログの出力先を変更し、そこにWebShellのペイロードを書き込み、それを読み込ませるということを行っています。
    その結果、配置したWebShellを用いて任意のコードが実行できることを確認しました。(図3)

    なお、PHP実行時にWebShellを読み込ませるようにPHPの設定を書き変えているため任意のPHPファイルに対して任意のコードが実行できるようになります。

    PHPの設定上書きが成功した例

    2. PHPの設定上書きが成功した例

     

    任意のコマンド実行が可能になったことを確認した例_2

    3. 任意のコマンド実行が可能になったことを確認した例

      

    弊社SOCの検知事例

    弊社SOCでは脆弱性を認知して直ちに監視デバイスでの検知検証を行い、既存のシグネチャで攻撃通信の検知が可能であることを確認しました。


    以下は弊社SOC監視環境下における検知傾向です。(図4)
    10月26日より本脆弱性の有無を調査する通信を検知しており、10月29日に大量の調査通信を確認しました。
    なお、弊社SOC監視環境下では11月1日現在脆弱性有無の調査通信にとどまっており、実際に脆弱性を悪用しようとする攻撃の検知はありません。


    CVE-2019-11043の脆弱性有無を調査する通信の検知推移

    4.  CVE-2019-11043 の脆弱性有無を調査する通信の検知推移

    CVE-2019-11043の脆弱性有無を調査するリクエスト検知例

    5.  CVE-2019-11043 の脆弱性有無を調査するリクエスト検知例

    対策

    nginx と PHP-FPM を組み合わせた環境において脆弱性に該当するPHPバージョンを利用している場合は早急にベンダから公開されている修正済みのバージョンにアップデートすることを推奨いたします。
    なお、本脆弱性はURLに改行コード(%0a, %0d) が含まれた際の処理に不備があることに起因しています。
    そのため、早急なアップデートが困難な場合は、IPS/WAFといった監視デバイスでURLに改行コード(%0a, %0d)が含まれるアクセスをブロックする対策も有効ですのでご検討ください。

     

    新規CTA