Apache Struts 2 は、Java EE Web アプリケーションを開発するためのオープンソースの Web アプリケーションフレームワークです。これは、2006年10月10日に初めてリリースされた Struts フレームワークの第2世代です。Struts フレームワークは、MVC アーキテクチャを利用する Web アプリケーションの作成を支援するように設計されています。
Apache Struts は広く使用されているフレームワークであり、2017年には Fortune 100 企業の65パーセント以上が Apache Struts フレームワークを使用していました。
この脆弱性は、2017年10月3日に NVD によって初めて公開され、Base Score の最高値である10(Critical)が付与されました。最高の脆弱性スコアとなった主な要因は、アプリケーションがネットワーク経由で最小限の複雑さで悪用され、完全性と可用性に大きな影響を与える可能性があることです。
この脆弱性により、攻撃者は Object Graph Navigation Library(OGNL)式を HTTP ヘッダーに導入することで、アプリケーション上で RCE を実行できました。
影響を受けるフレームワークのバージョンは、Apache Struts 2 の 2.3.x(2.3.32 より前)および 2.5.x(2.5.10.1 より前)です。
.png)
脆弱なコードは Jakarta Multipart Parser にあります。エクスプロイトを実行するために、攻撃者は LocalizedTextUtil.findText 関数の脆弱性を利用しました。この関数は、提供されたメッセージ内の ${…} を Object Graph Navigation Library(OGNL)式として解釈します。攻撃者はこの OGNL 式を使用して、システムコマンドを実行し、/etc/password や /etc/shadow などの機密ファイルの内容を漏えいさせることができ、攻撃者に完全な制御を与えます。さらに、アプリケーションは攻撃者が実行したコマンドの出力を返すため、攻撃を容易にしました。
次の画像は、攻撃者が悪用できた OGNL 式を含む HTTP リクエストを示しています。

2017年3月、CVE-2017-5638 の脆弱性が Apache Struts フレームワークで初めて発見されたとき、Apache 財団はこの脆弱性のパッチをリリースしましたが、Equifax は脆弱なシステムを検出するためのスキャンが機能しなかったため、脆弱性のあるシステムにパッチを適用しませんでした。
2017年5月から7月にかけて、攻撃者は複数の Equifax データベースにアクセスし、何百万人もの人々の情報を暴露しました。この攻撃は1億4300万人に影響を与え、20万人以上のクレジットカード情報も漏えいさせました。
攻撃者は76日間、気付かれることなく攻撃を続けることができました。
同社はこの大規模なデータ侵害後、セキュリティの強化に14億ドルを費やしました。
頻繁なアップデート
アプリケーションで使用されるフレームワークを含むすべてのコンポーネントの更新
頻繁なペネトレーションテスト
脆弱性を発見するためのバウンティプログラム