DigiCertが、現実の問題を解決するために、デジタルトラストの確立、管理、拡大をどのように支援しているかをご覧ください。
世界のIT・情報セキュリティリーダーたちが、デジタル技術の信頼性を欠いたセキュリティはセキュリティではないと考えている理由とは?
2023年8月15日よりCertCentralのサインインではユーザ名とパスワードのほかにワンタイムパスワード(OTP)もしくはクライアント証明書の二要素認証による提示が必要となりました。 設定等についてはこちらのKnowledgeを参照ください。
概要
Apache Struts2(2.0.0-2.3.15)には、外部から指定した任意のプログラムを許してしまう脆弱性S2-016(CVE-2013-2251)があります。これはすなわち、インターネット経由で、攻撃者がサーバー上で勝手にプログラムを実行できるという意味です。その結果、情報漏洩、データやページの改ざん、他のサーバーへの攻撃、サービスの停止などさまざまな影響を受ける可能性があります。
Struts2には、OGNL(Object-Graph Navigation Language)というJavaに似た言語がサポートされ、Web開発をサポートしています。OGNLはStruts2の様々な場所で使えますが、外部からOGNLが指定できてしまうとセキュリティ上問題なので、外部から指定できないように制限されています。
しかし、一部に制限漏れがあり、細工したURLを閲覧することで、外部からOGNL式を指定できる箇所が見つかりまた。式には「プログラム実行」を指定することもできるため、この脆弱性は、前述のような大きな影響があります。攻撃のイメージと影響
Struts2のサンプルアプリblankに対して、サーバー上で3 * 4の計算をするには下記のURLを実行します。
http://example.jp/struts2-blank/example/X.action?action:%25{3*4}
3 * 4のかけ算をサーバー上で計算しても実害はありませんが、同様の手順によりサーバー側で「任意のプログラム」を実行することができます。
脆弱性による影響
この脆弱性による影響の例として下記がありますが、これらに限りません。脆弱性の有無の確認方法
S2-016は外部からの診断で見つけることは難しいとされており、Struts2が設置されているサーバー上で下記のコマンドを実行する方法が確実です。
# find / -name 'struts2-core*.jar' /var/lib/tomcat7/webapps/struts2-blank/WEB-INF/lib/struts2-core-2.3.15.jar
上記の赤字の部分がStruts2のバージョンです。上記の実行例では、2.3.15となります。2.3.15以下の数字であれば当該脆弱性があります。2.3.15.1以降であれば対策されたバージョンです。対策
Struts2をバージョンアップすることで対策となります。前述のように2.3.15.1以降で対策されていますが、特別な事情がなければ最新版のStruts2(本稿執筆時点では2.3.16)の導入を推奨します。
Struts2のバージョンアップ自体はjarファイルの入れ替えのみであり短時間で終わりますが、バージョンアップによるアプリケーションの影響の検証が必要であり、検証には時間を要する場合があります。すぐに検証が終わらない場合や、検証の結果アプリケーションに不具合が生じてアプリケーションの改修が必要な場合は、回避策を導入する必要があります。回避策の1つとして、WAF(Web Application Firewall)の導入があります。S2-016による攻撃は特徴的であるため、WAFによる防御は有効です。
なお、デジサートの「クラウド型WAF」では、S2-016の脆弱性からウェブサイトが攻撃を受けるのを防ぐことができます。参考文献
Apache Struts の脆弱性 (S2-016) に関する注意喚起(JPCERT/CC)
http://www.jpcert.or.jp/at/2013/at130033.html修正の上再掲しました。
© 2024 DigiCert, Inc. All rights reserved.
リーガルリポジトリ Webtrust 監査 利用条件 プライバシーポリシー アクセシビリティ Cookie 設定 プライバシーリクエストフォーム