コンテンツ・マネジメント・システム「Drupal」は、2019年2月20日、認証無しに遠隔からのコード実行(Remote Code Execution、RCE)が可能になるDrupal coreの脆弱性「CVE-2019-6340」に対処するよう促すセキュリティ勧告「SA-CORE-2019-003」を公開しました。CVE-2019-6340の危険度は、Drupalのセキュリティチームが定義した5段階の中で最高の「Highly critical」に分類されています。この脆弱性は、広く利用されている「RESTful Web Services(rest)」モジュールに起因するため、かなりの割合のDrupalが影響を受けると考えられます。影響を受ける条件は以下の両方を満たしていることです。
- 8.6.10より前のDrupal 8.6.Xまたは8.5.11より前のDrupal 8.5.Xを使用していること
- RESTful Web Servicesなどのモジュールを有効化していること
■「CVE-2019-6340」を突く攻撃手法
概要
CVE-2019-6340はデシリアライゼーションモジュールを含むREST APIに存在します。攻撃者は、RESTリクエストを通してシリアライズされたコンテンツを送信し、問題のモジュールにデシリアライズさせることで認証無しに任意のコードを実行することが可能です。
具体的には「FieldItemBase」クラスのサブクラス「LinkItem」クラスを利用します。「LinkItem」クラスは「link」フィールドとそれに関連するプロパティを定義するクラスです。このクラスには「link」フィールドの「options」プロパティとして受け取った値をデシリアライズするコードが含まれています。ツールバーまたはメニュー項目を介して頻繁に使用するページへのショートカットリンクを表示する「Shortcut」モジュールは「link」フィ=ルドを利用するため、最終的にユーザからの任意のデータをデシリアライズさせることが可能になります。
手順
攻撃者は、「Shortcut」タイプを参照し「options」プロパティにシリアライズしたPHPを含む細工したリクエストを送信します。この時、シリアライズされたコンテンツは、認証されていないユーザからのものであっても処理されてしまいます。
図1:シリアライズされたコンテンツはユーザが認証されていなくても処理される
図2のレスポンスを見ると、対象PC上で「cat /etc/passwd」というコマンドの実行に成功したことが確認できます。このコマンドは任意のものに変更することができます。例えば、バックドアの1つ「WebShell」をダウンロードしたり、マルウェアやその他の手段によって活動を持続したりするようなコマンドを実行することも可能でしょう。実行されるコマンドはDrupalを実行しているユーザの権限を継承します。
図2:遠隔からのコード実行に成功
別のリサーチャによって指摘されているように、Drupal 8はPHP HTTPクライアント「Guzzle」を使用するため、「PHPGGC(PHP Generic Gadget Chains)」を利用してペイロードを生成することが可能です。また、その他のAPIエンドポイントを使用した同様の攻撃も容易に実行することができます。
図3:その他のAPIエンドポイントを使用した攻撃も可能
■トレンドマイクロの対策
ユーザは、Drupalを最新のバージョンに更新することによりこの脆弱性に対処することが可能です。また、GET、PUT、PATCH、およびPOSTメソッドを無効化、あるいはWeb Servicesモジュールを無効化することにより、この脆弱性を利用した攻撃を防ぐことができます。
ゲートウェイやサーバから、ネットワークおよびエンドポイントにいたるまで、プロアクティブで多層的なアプローチを取ることが脆弱性を利用する脅威に対抗する鍵となります。トレンドマイクロのサーバ向け総合セキュリティ製品「Trend Micro Deep Security™」および「Trend Micro Virtual Patch for Endpoint(旧 Trend Micro 脆弱性対策オプション)」は、重要なアプリケーションやWebサイトの脆弱性を悪用する脅威からサーバとエンドポイントを保護します。
エンドポイントセキュリティ対策製品「ウイルスバスター™ コーポレートエディション XG」、「ウイルスバスター™ ビジネスセキュリティ」、および「ウイルスバスター™ ビジネスセキュリティサービス」は、不正なファイルを検出し、関連する不正なURLをすべてブロックすることによって法人組織をこのような脅威から保護します。
サーバ向け総合セキュリティ製品「Trend Micro Deep Security™」および「Trend Micro Virtual Patch for Endpoint(旧 Trend Micro 脆弱性対策オプション)」をご利用のお客様は、以下の DPIルールによってこの脆弱性を利用する脅威から保護されています。
- 1009541 – Drupal Core Remote Code Execution Vulnerability (CVE-2019-6340)
ネットワーク脅威防御ソリューション「TippingPoint」では、以下のMainlineDV filterにより今回の脅威をブロックします。
- 34578: HTTP: Drupal RESTful Web Services Code Injection Vulnerability
ネットワーク挙動監視ソリューション「Deep Discovery™ Inspector」は、以下の DDIルールによってこの脅威を検知します。
- 2833: CVE-2019-6340 Drupal8 RESTful Web Services Remote Code Execution – HTTP (Request)
参考記事:
- 「Drupal Vulnerability (CVE-2019-6340) Can Be Exploited for Remote Code Execution」
by Branden Lynch (Threats Analyst)
翻訳: 澤山 高士(Core Technology Marketing, TrendLabs)