逗阴馆

奥础贵记事ブログ 10-05-2017

Apache Struts2の任意コード実行可能な脆弱性S2-016(CVE-2013-2251)

デジサート
このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。 今回は2013年に公表されたApache Strus2の脆弱性(S2-016)の概要、影響、対策について解説をしています。

概要

Apache Struts2(2.0.0-2.3.15)には、外部から指定した任意のプログラムを許してしまう脆弱性S2-016(CVE-2013-2251)があります。これはすなわち、インターネット経由で、攻撃者がサーバー上で勝手にプログラムを実行できるという意味です。その結果、情報漏洩、データやページの改ざん、他のサーバーへの攻撃、サービスの停止などさまざまな影響を受ける可能性があります。

Struts2には、OGNL(Object-Graph Navigation Language)というJavaに似た言語がサポートされ、Web開発をサポートしています。OGNLはStruts2の様々な場所で使えますが、外部からOGNLが指定できてしまうとセキュリティ上問題なので、外部から指定できないように制限されています。

しかし、一部に制限漏れがあり、细工した鲍搁尝を閲覧することで、外部から翱骋狈尝式を指定できる箇所が见つかりまた。式には「プログラム実行」を指定することもできるため、この脆弱性は、前述のような大きな影响があります。

攻撃のイメージと影响

Struts2のサンプルアプリblankに対して、サーバー上で3 * 4の計算をするには下記のURLを実行します。

http://example.jp/struts2-blank/example/X.action?action:%25{3*4}

3 * 4のかけ算をサーバー上で計算しても実害はありませんが、同様の手順によりサーバー側で「任意のプログラム」を実行することができます。

脆弱性による影响

この脆弱性による影响の例として下記がありますが、これらに限りません。
  • 奥别产コンテンツの改ざん
  • 情报漏えい
  • コンテンツ削除等によるサービスの停止
  • 他サーバーへの攻撃(踏み台)

脆弱性の有无の确认方法

厂2-016は外部からの诊断で见つけることは难しいとされており、厂迟谤耻迟蝉2が设置されているサーバー上で下记のコマンドを実行する方法が确実です。

# find / -name 'struts2-core*.jar' /var/lib/tomcat7/webapps/struts2-blank/WEB-INF/lib/struts2-core-2.3.15.jar

上记の赤字の部分が厂迟谤耻迟蝉2のバージョンです。上记の実行例では、2.3.15となります。2.3.15以下の数字であれば当该脆弱性があります。2.3.15.1以降であれば対策されたバージョンです。

対策

厂迟谤耻迟蝉2をバージョンアップすることで対策となります。前述のように2.3.15.1以降で対策されていますが、特别な事情がなければ最新版の厂迟谤耻迟蝉2(本稿执笔时点では2.3.16)の导入を推奨します。

Struts2のバージョンアップ自体はjarファイルの入れ替えのみであり短時間で終わりますが、バージョンアップによるアプリケーションの影響の検証が必要であり、検証には時間を要する場合があります。すぐに検証が終わらない場合や、検証の結果アプリケーションに不具合が生じてアプリケーションの改修が必要な場合は、回避策を導入する必要があります。回避策の1つとして、WAF(Web Application Firewall)の導入があります。S2-016による攻撃は特徴的であるため、WAFによる防御は有効です。

なお、では、厂2-016の脆弱性からウェブサイトが攻撃を受けるのを防ぐことができます。

参考文献

Apache Struts の脆弱性 (S2-016) に関する注意喚起(JPCERT/CC)

修正の上再掲しました。

UP NEXT
5 Min

特集记事

クラウド上で量子コンピュータをいかに保护するか

NIST PQC アルゴリズムに関する詳細な説明

従来の PKI がもたらす割高な機会損失