Apache Strutsの脆弱性とWAFによる対策

 2023.10.19  2024.04.23

Apache Strutsは、オープンソースソフトウェアとして提供されているWebアプリケーションフレームワークです。ゼロからWebアプリケーションを開発するよりも効率的に開発を進めることができるため、個人、法人かかわらず多くのWebサイトの開発で利用されています。しかし、Apache Strutsでは、度々深刻な脆弱性が発見されているという問題も抱えています。

本稿ではStruts2の脆弱性を解説し、Webアプリケーションを保護するためのWAF(Web Application Firewall)による対策ついてご紹介します。

なぜ、Apache Struts2には脆弱性が多いのか?

Struts2では、コンパイルなしでコードを実行するOGNL (Object-Graph Navigation Language) と呼ばれるJavaに似たライブラリが多用されています。2017年3月に発生した多くの情報漏えい事件の原因となったS2-045においてもOGNLの機能が使用されていました。この脆弱性は大きな話題となり「OGNLインジェクション」という言葉を見聞きした方も多いと思います。

OGNLは自由度が高く非常に便利な機能ですが、この自由度が攻撃者から標的になり、脆弱性があるとHTTPリクエストに埋め込まれた悪意のあるコードがOGNLによって実行されることになります。ユーザー入力によってOGNLを操作、実行されてしまうのは非常に危険であることは言うまでもありません。OGNLはStruts2の随所で使用されており、切り離すことはできない存在です。今後も主要機能の1つである以上、新たな改良においてもOGNLが使用されていくでしょうし、まだ知られていない箇所を含めて脆弱性が発見される可能性を否定することはできません。

Struts2には、OGNLに起因するRCE(Remote Code Execution)の脆弱性、攻撃が多いという実情があります。

 
 

WAFとは

WAFとは

Webアプリケーションファイアウォール(WAF:Web Application Firewall)は、ウェブサイトに対するアプリケーションレイヤの攻撃対策に特化したセキュリティ対策です。

詳細はこちら

こんなにある?Apache Struts2の脆弱性

Struts2の脆弱性には影響の大小、国内では報道されなかったものを含めて多数存在しています。サイバー攻撃から企業・組織を守る取り組みや国民に向けた情報セキュリティ対策の普及啓発などを行っている情報処理推進機構(IPA)では、Struts2の脆弱性を一覧で紹介しています。

<Apache Struts脆弱性一覧:抜粋>

 

 

番号

脆弱性対策情報

影響を受けるバージョン

S2-016

任意のコマンドを実行される脆弱性

2.0.0 - 2.3.15

S2-020

複数の脆弱性

2.0.0 - 2.3.16.1

S2-021

ClassLoader を操作される脆弱性

2.0.0 - 2.3.16.3

S2-022

ClassLoader を操作される脆弱性

2.0.0 - 2.3.16.3

S2-032

任意のコードを実行される脆弱性

2.3.20 - 2.3.28 (2.3.20.3 および 2.3.24.3 を除く)

S2-033

任意のコードを実行される脆弱性

2.3.20 - 2.3.28 (2.3.20.3 および 2.3.24.3 を除く)

S2-037

任意のコードを実行される脆弱性

2.3.20 - 2.3.28.1

S2-045

任意のコードを実行される脆弱性

2.3.5 - 2.3.31

2.5 - 2.5.10

S2-046

Jakarta Multipart パーサに関する脆弱性(S2-045と同様)

2.3.5 - 2.3.31

2.5 - 2.5.10

S2-048

任意のコードを実行される脆弱性

2.1.x - 2.3.x

S2-052

任意のコードを実行される脆弱性

2.1.2 - 2.3.33

2.5 - 2.5.12

S2-053

任意のコードを実行される脆弱性

2.0.0 - 2.3.33

2.5 - 2.5.10.1

S2-057

任意のコードを実行される脆弱性

2.3 - 2.3.34

2.5 - 2.5.16

サポートされていないバージョンも影響を受けるおそれがあります。

S2-058

影響を受けるリリースバージョンの変更のお知らせ

2.0.0 - 2.5.12

S2-059

任意のコードを実行される脆弱性

2.0.0 - 2.5.20

S2-060

サービス運用妨害 (DoS) の脆弱性

2.0.0 - 2.5.20

S2-061 

任意のコードを実行される脆弱性 2.0.0 - 2.5.25

S2-062

任意のコードを実行される脆弱性

2.0.0 - 2.5.29

S2-063

サービス運用妨害 (DoS) の脆弱性

2.0.0 - 6.1.2

S2-064

サービス運用妨害 (DoS) の脆弱性

2.0.0 - 6.1.2

S2-065

サービス運用妨害 (DoS) の脆弱性

2.5.31
6.1.2.1 - 6.3.0

引用:IPA『Apache Struts2 の脆弱性対策情報一覧

一覧には「任意のコードを実行される脆弱性」と記載されたものが多くなっていますが、前述のRCEに分類される脆弱性です。

いかがでしょうか?Struts2にはRCEだけでなく、様々なタイプの脆弱性があり、常に最新バージョンを使用するように努めないとサイバー攻撃の被害に遭う危険性があります。

Apache Struts2の脆弱性(S2-045)による被害事例

2017年3月6日(日本時間)に脆弱性が公開され、翌3月7日には脆弱性を悪用した攻撃が始まり、情報公開から数時間で情報漏えい被害が確認されています。

公表日

企業・団体

被害情報

流出件数

2017年3月9日

チケット販売サイト

住所・氏名・電話番号・生年月日・ログイン ID・パスワード・メールアドレス

14万7093件

2017年3月10日

東京都

クレジットカード番号、有効期限、メールアドレス

67万6290件

2017年3月10日

住宅金融支援機構

クレジットカード番号、有効期限、セキュリティコード、申込日、住所、氏名、電話番号、生年月日、メールアドレス

4万3540件

2017年3月14日

日本郵便

送り状、メールアドレス

3万220件

WAFによるApache Struts2のセキュリティ対策

Struts2のセキュリティ対策として、Strutsを「使わない」または「別のフレームワークに切り替える」という対策が示されることがあります。根本的な対処であり、新しくWebサービスを提供していくにあたり、わざわざStruts2を使用することはないと言えます。しかしながら、Struts2は業種・業態を問わず幅広く利用されており、現実的に今すぐ変えることはできないと考えられます。また、サポートが終了しているStruts1のまま運用を続けているサイトも存在するくらいですので、運用上の理由でStruts2を使用し続けなければならないサイトも多数存在すると考えられます。

そこで、WAFというセキュリティ製品の有効活用をおすすめしています。WAFはクライアントからWebサイトへのアクセスを検査し、WAFを経由する通信1つ1つをチェックします。SQLインジェクションクロスサイトスクリプティング、RCEなどの脆弱性を悪用した攻撃がないか通信内容をチェックして、検出・防御してくれるのです。脆弱性の有無にかかわらず、独立したかたちでWebアプリケーションを保護することができ、Webサイトのセキュリティを大幅に強化できます。

WAF

2017年に公開されたS2-045の脆弱性は、日本時間の3月6日に脆弱性が公開されました。短時間でPoC(Proof of Concept)が確認されると、日本国内でも数多くの被害が発生し、3月8日にはIPAからの注意喚起がありました。このとき、多くのWAFベンダーは3月7日時点で脆弱性を悪用する攻撃に対するシグネチャをリリースしており、セーフティネットとしてWAFが大きな役割を果たしました。

もちろん、最新バージョンの利用やパッチの適用という根本的な対策が第一です。しかし、すぐにバージョンアップできない、テストに時間を要するなど、運用上の課題があるのも事実です。攻撃者は待ってくれません。Apache Strutsのセキュリティ対策の一つとして、WAFの有効活用をぜひご検討ください。

導入事例

導入事例

WAF製品/SiteGuard(サイトガード)シリーズの導入事例をご紹介しています。

詳細はこちら

RECENT POST「WAF」の最新記事


WAF

WAFはなぜ導入が必要?利用目的とメリット・デメリットを解説

WAF

WAF導入と運用のポイント!WAFのチューニングに必要なものとは

WAF

証明書はどうするの?WAFによるSSL通信の検査

WAF

ModSecurityとは?オープンソースWAFのメリット・デメリットを解説

Apache Strutsの脆弱性とWAFによる対策
5分でまるわかり!WAFによるサイバー攻撃対策
1分でわかる「SiteGuardシリーズ」
RECENT POST 最新記事
ブログ無料購読
RANKING人気記事ランキング