Struts1.xの脆弱性(CVE-2014-0114) に対するSDEの対処:wrapタイプ

Download Report

Transcript Struts1.xの脆弱性(CVE-2014-0114) に対するSDEの対処:wrapタイプ

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