Massimiliano Brasile による CVE-2017-9841 検出スクリプト
何が起こったのか
2020年1月6日、PrestaShop のほとんどのバージョンに影響すると思われるセキュリティ問題について知らされました(警告は PS チームから2020年1月3日に社内のみで共有されました)。調査の結果、この問題は PHPUnit と呼ばれるテストフレームワークライブラリ [1] に関連していることがわかりました。これは Prestashop 1.7 で使用される一部の運用モジュールに誤って含まれており(Prestashop API 経由または PrestaShop インストールに同梱されて配布されています)。PHPUnit の問題は CVE-2017-9841 [2] [3] として識別されましたが、Prestashop に対する警告は現在も有効です。なぜなら、まさにこの問題を狙って PS ウェブサイトをスキャンするボット( XsamXadoo )が少なくとも1つ存在するからです [4]。
仕組み
技術的には、CVE-2017-9841 は、バグのあるバージョンの phpunit/phpunit を使用するすべてのアプリケーションでリモートコード実行が可能になることを指します。また、2020年1月8日には別の問題が発見されました ( 4.8.28 より前および 5.x の 5.6.3 より前 7.x では 7.5.19 より前、8.x では 8.5.1 より前のバージョンに関連 [5] )。phpunit は有名なフレームワークであるため、この問題は主要な PHP CMS (Prestashop、Wordpress、Drupal、..) とそのプラグインに影響を与えるようです。ただし、それらが phpunit を使用している場合に限ります。これらのバックドアを見つけるには、Web ルートのすべてのサブフォルダーにこのテストフレームワークが含まれていないか確認することが必須です。そこで、全体を高速化するために、担当している Prestashop または Wordpress のすべてのインスタンスを管理できる、この小さな quick&dirty スクリプトを作成しました。
確認すべき場所
PS フォーラム [4] によると、以下のモジュールを確認する必要があります:
しかし、私のテストでは ps_facetedsearch v3.2.1 モジュールにも存在することがわかりました。autoupgrade v4.9+ には存在しませんでした。
スクリプトの使い方
修正方法
phpunit インスタンスのバグのあるバージョンが見つかった場合は、可能であれば親モジュールを更新するか、開発者がサポートしていない場合はそれらを削除(フォルダーを削除)してください。PS フォーラムによると、これらのモジュール内のすべての vendor フォルダーを完全に削除する必要がありますが、要確認です!
参照
[2] https://nvd.nist.gov/vuln/detail/CVE-2017-9841
[3] https://www.cvedetails.com/cve/CVE-2017-9841
[4] https://www.prestashop.com/forums/topic/1012095-hack-prestashop-avec-xsamxadoo-bot
[5] まだ公式ではありません!! https://github.com/PrestaShop/PrestaShop/issues/17059#issuecomment-572114133 を参照