Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ...
-
Upload
justina-day -
Category
Documents
-
view
45 -
download
0
description
Transcript of Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ...
Struts1.x の脆弱性( CVE-2014-0114 )に対する SDE の対処: wrap タイプ
(パッチのご提供)
日本電気株式会社2014 年 6 月 17 日
© NEC Corporation 2014
対処内容の概要
Page 2
▐SDE が独自に Struts を拡張している「 BeanUtils を操作しているクラス」にチェック処理を追加し、問題のあるパラメータを排除します。
※監視のために排除時にエラーログを出力します。ブラウザ StrutsV1.x
abc=123class.ClassLoader.xxx=yyy
リクエスト
Public void setAbc(String abc){ this.abc = abc;}
Form クラス
通常のリクエスト「 abc=123 」以外に「 class.ClassLoader.xxx=yyy」を付加して送信
abc=123class.ClassLoader.xxx=yyy
リクエスト
パラメータ排除setAbc(“123”)getClass().getClassLoader().setXxx(“yyy”)
populate()
BeanUtils 呼び出し処理
リクエストパラメータ名に「 class 」あるいは「 Class 」が含まれていた場合は BeanUtils 処理対象外とする
setAbc(“123”)
BeanUtilsBean.populate
エラーログを出力
© NEC Corporation 2014
適用要件および注意事項
Page 3
▐ 本対処を適用した場合、リクエストパラメータの属性名(一部を含む)に対して下記の正規表現に該当する文字列は使用できなくなります。該当する場合は属性名の見直しをお願いします。
▐ チェック対象となる文字列例を下記に記載いたします。 チェック対象外の文字列
• classic• FirstClass
チェック対象の文字列• .Class.
Grep ツールの仕様 チェック用正規表現
\W( 英数字および” _” 以外 ) をサポート
(^|\W)[cC]lass\W
\W を未サポート (.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*
© NEC Corporation 2014
適用手順:開発環境への適用
Page 4
① 下記の情報を添えて SDE 問い合わせ窓口( [email protected] )へ パッチ提供を要求する
・お客様名 ・プロジェクト名 ・ご利用の SDE のバージョン(リビジョンまで Ver x.x.x ) ・適用済みの SDE 製品パッチのパッチ ID ・標準の SDE に対するテーラリング状況( RPQ の適用など)
② 提供されたパッチインストーラを起動し、インストールする
© NEC Corporation 2014
適用手順:実行環境への適用
Page 5
▐ 本手順は、すでに実行環境にて動作しているアプリケーションに対して本パッチを直接適用する場合になります。パッチについては、 P4 の①の手順と同様にSDE 問い合わせ窓口より入手ください。
▐ WAR ファイル中にある SDE 提供 Jar ファイルを置換し、 WAR ファイルを再度AP サーバーにデプロイしてください。
WAR ファイル├ xxx.jsp└ WEB-INF ├ web.xml ├ *.xml ├ class │ └ *.class ├ lib │ ├ orteus-struts.jar │ └ *.jar └ tags └ *.tld
WAR ファイル中の Jar ファイルを置換
AP サーバ
WAR ファイルをデプロイ
© NEC Corporation 2014
テスト実施手順
Page 6
▐ 正常動作する画面の URL に「 ?class.ClassLoader.xxx=yyy 」を付加して実行例:正常に動作する URL 「 http://localhost/Sample/TestAction.do 」の場合「 http://localhost/Sample/TestAction.do?class.ClassLoader.xxx=yyy 」をブラウザで表示
▐ 上記 URL を実行した場合に正常に画面が表示され、ログファイルに以下の文字列が出力されるかを確認「 Invalid request parameter detected, key:class.ClassLoader.xxx, value:yyy . 」
GET メソッドの場合
▐ 正常動作する画面に以下の hidden 項目を追加<input type=“hidden” name=“class.ClassLoader.xxx” value=“yyy”>
▐ 上記画面を実行した場合に正常に画面が表示され、ログファイルに以下の文字列が出力されるかを確認「 Invalid request parameter detected, key:class.ClassLoader.xxx, value:yyy . 」
POST メソッドの場合