Struts 2 S2-066 の脆弱性(CVE-2023-50164)を悪用した攻撃試行の観測
はじめに
Apache Struts は、世界中の企業や組織で使用されている、強力なオープンソース Web アプリケーションフレームワークです。Apache Struts は広く使われていることから、ハッカーの主な標的となっています。重大なリモートコード実行(RCE)の脆弱性が発表された場合、セキュリティチームと IT チームはシステムを保護するために直ちに対処する必要があります。
2023 年 12 月 7 日に、CVE-2023-50164 が公開されました。この脆弱性を悪用することで、攻撃者はファイル・アップロード・パラメーターを操作して、パストラバーサルを有効にし、悪性ファイルをアップロードできます。これにより、攻撃者はシステムを完全に制御できるようになります。
12 月 11 日に初めて攻撃の概念実証(PoC)が公開され、広く利用されるようになりました。その後、12 月 12 日に攻撃が試行されました(図 1)。
CVE について
CVE-2023-50164 は、Java EE Web アプリケーションの開発および構築に広く使用されているオープン・ソース・フレームワークである Apache Struts 2 内で発見された重大な脆弱性です。Apache Struts はその堅牢性と柔軟性が評価されており、多くの商用およびオープンソース Web プロジェクトのアーキテクチャにおいて重要な役割を担っています。そのため、この脆弱性は、金融、ヘルスケア、行政サービスなどの主要産業を含むさまざまなセクターで深刻な懸念事項となっています。
CVE-2023-50164 の問題の核心は、パストラバーサルの欠陥を利用した RCE の可能性があることです。具体的には、Apache Struts フレームワークによるファイルアップロード処理の方法を悪用します。ファイル・アップロード・パラメーターを操作することで、攻撃者は認可されていなくても Web サーバーのディレクトリ構造を効果的にトラバースすることができます。
このトラバーサルを使用すると、本来はユーザーがアップロードしたファイルコンテンツを配置することを目的としておらずアクセスもできないディレクトリや場所に、悪性ファイル(通常は Java Server Page(JSP)ベースの Web シェル)を配置できます。この攻撃は、アプリケーション開発者が予想していなかった方法でサーバー側のセキュリティメカニズムをバイパスする機能を利用します。
攻撃プロセス
攻撃プロセスは次のとおりです。
1.攻撃者は最初に偵察を実行し、脆弱なバージョンの Apache Struts とファイルアップロード URL パスを使用する Web サイトまたは Web アプリケーションを特定します。
2.攻撃者は、悪性ファイル(通常は JSP ファイルまたは Web シェル)を準備します。
3.次に、攻撃者はファイルをアップロードする特別な要求を行います。この要求には操作されたデータ(ファイルの名前やパスなど)が含まれており、ファイルのアップロードパラメーターが操作されます。
4.手順 3 のアップロード要求には、パストラバーサルの脆弱性を悪用するシステムコマンドが含まれています。このコマンドは、ファイルを通常のアップロードディレクトリの外に配置するようサーバーに指示します。これがパストラバーサル段階です。
5.攻撃者は、脆弱なバージョンの Apache Struts を実行しているサーバーにアップロード要求を送信します。これが成功した場合、サーバーは悪性のファイルまたは Web シェルを、それらを実行できる場所またはディレクトリに保存します。
6.続いて、攻撃者は Web ブラウザーまたは自動スクリプトを介してアップロードされた悪性ファイルにアクセスします。このファイルにアクセスすると、Web サーバー上で悪性のコードまたは Web シェルが実行されます。
7.手順 6 でコードが実行されると、攻撃者はサーバーに対して追加のアクションを実行できます。機微な情報の窃取、Web サイトのコンテンツの変更、Web サーバーの完全な制御など、さまざまなアクションが考えられます。
8.攻撃者の意図や動機によっては、今後の悪用のために密かにアクセスを維持したり、侵害されたサーバーを使用してさらなる攻撃を開始したりする可能性があります。
影響
CVE-2023-50164 の影響は広範囲に及びます。RCE の脆弱性は、Web アプリケーションにおける最も深刻で重大な脅威の 1 つです。なぜなら、その影響を受けるサーバー上で攻撃者が任意のコマンドを実行できるようになるからです。これは、不正なアクセス、データの窃取、そしてシステム全体の侵害につながる可能性があります。
Apache Struts は幅広く統合されているため、これらのリスクが増大し、CVE-2023-50164 が世界中の組織にとって優先度の高い課題となっています。
攻撃試行を観測
12 月 12 日、攻撃の PoC が広く利用可能になってから 1 日が経ち、公開された攻撃の PoC に似た攻撃が試行され始めました(図 2)。この攻撃試行は本物ですが、成功する可能性はありません。攻撃を成功させるためには、標的となるエンドポイントにファイルアップロード機能がなければなりません。
期待どおりの PoC スキャンに加えて、公開された PoC とは一致しない、この脆弱性を悪用しようとする要求が観測されるようになりました。このバリアントは、元の /login.action ではなく、/s2/upload.action パスをターゲットにしています(図 2)。興味深いことに、パラメーター名「fileFileName」が、元の「uploadFileName」とは異なるパストラバーサルを含めるために使用されています。
これらのエンドポイントにファイルアップロード機能があるかどうかは不明です。Akamai は、ある IP グループから同じバリアント 2 の攻撃試行が多数の異なる顧客を標的として行われているのを観測しています。
Akamai Security Intelligence Group では、引き続き弊社の Web アプリケーションファイアウォール(WAF)のログを分析して新しいバリアントを探し、新たな情報があればブログのこのセクションを更新する予定です。
App & API Protector による緩和
Akamai Adaptive Security Engine を自動モードで使用していて、「Web Platform Attack」グループを Deny モードにしているお客様は、自動的にこれらの攻撃から保護されます。Adaptive Security Engine を手動モードで使用しているお客様は、「Web Platform Attack」グループまたは以下の個別ルールが Deny モードになっていることを確認する必要があります(図 4)。
3000929- Apache Struts Path Traversal and File Upload Attack Detected(CVE-2023-50164)
まとめ
Akamai App & API Protector は、弊社のセキュリティソリューションを利用するお客様に対するこれらの攻撃の試みを、適切に緩和してきました。また、標的となるエンドポイントに実際にファイルアップロード機能があるかどうかは断定できませんでした。そのため、攻撃が成功した後に攻撃者が実行する可能性のある後続の攻撃行為は観測していません。
最も効果的な防御策はソースコードを即座に更新することですが、セキュリティチームが脆弱なコンポーネントを迅速に特定して安全に更新するためには多大な労力を要します。この課題は、増え続けるアプリケーションの数と、このような環境の動的な性質によって、さらに複雑化しています。
「セキュリティはレイヤーにあり」という格言は陳腐に聞こえるかもしれませんが、全体的なセキュリティを強化するためには、追加の補完的な方法を検討することが重要なのです。攻撃者は新たに公開される PoC に迅速(多くの場合は 24 時間以内)に適応しており、防御者にとっての課題が大幅に増大しています。
Akamai App & API Protector などの WAF を実装することで、防御レイヤーが追加され、新たに発見された CVE に対する防御と追加のセキュリティバッファーがもたらされます。