mobile security

【CVE-2017-5638】都税クレジット情報67万件流出はまたstruts2の脆弱性

投稿日: カテゴリー: セキュアコーディング
Pocket

「都税クレジットカードお支払サイト」が不正アクセスを受け、67万6290件のクレジットカード情報(内61万4629件はメールアドレスとセット)が流出したApache Struts Jakarta Multipart parser Remote Code Executionについて今回は書いていきます。

カード番号どころかセキュリティコードや有効期限まで漏れている可能性があるとの事で利用した人はまずカードを止めた方が良いと言えるだろう。

不正アクセスに関するご報告と情報流出のお詫び

結論から言うと、ファイルアップロード時にContent-Typeヘッダのパースに失敗した際、 エラーメッセージの構築でcom.opensymphony.xwork2.util.LocalizedTextUtil.findTextを使用していることが原因です。以下のバージョンが影響をうけます

Apache Struts 2.3.5から2.3.31までのバージョン
Apache Struts 2.5から2.5.10までのバージョン

 

確認方法

※通常サービス以外のすべてのアクセスは良かれと思っていても違法行為です。すべて自分が許可を得た環境と言い切れる場合でのみ検証してみてください。

Content-Type: %{#context[‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’].addHeader(‘X-Qualys-Struts’,3195*5088)}.multipart/form-data

 に対して以下を返す時点で脆弱です。(3195*5088=16256160)

 X-Qualys-Struts :16256160

根本対策:最新版struts-2.5.10.1にアップデート

保険対策:以下条件でWAFなどでフィルタリング

request.path EQUAL "/struts2-showcase/index.action" request.header 

"Content-Type" NOT.EQUAL "multipart / form-data"

・PoCはこんな感じもOKです。

Content-Type: %{(#test='multipart/form-data').(new java.lang.String(“Hello World”))}

この記事を機に見直しのきっかけになれば幸いです。

以上です。お役にたてれば幸いです。