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

7
Struts1.x ののののCVE-2014-0114 のののの SDE のののwrap ののの のののののののの () のののののののの 2014 の 6 の 17 の

description

Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供). 日本電気株式会社 2014 年 6 月 17 日. 対処 内容の 概要. SDE が独自に Struts を拡張している「 BeanUtils を操作しているクラス」にチェック処理を追加し、問題のあるパラメータを排除します。 ※ 監視 のために排除時 にエラーログ を 出力 します 。. ブラウザ. StrutsV1.x. リクエスト. リクエスト. abc =123 class.ClassLoader.xxx = yyy. - PowerPoint PPT Presentation

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

Page 1: Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供)

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

(パッチのご提供)

日本電気株式会社2014 年 6 月 17 日

Page 2: Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供)

© 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

エラーログを出力

Page 3: Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供)

© NEC Corporation 2014

適用要件および注意事項

Page 3

▐ 本対処を適用した場合、リクエストパラメータの属性名(一部を含む)に対して下記の正規表現に該当する文字列は使用できなくなります。該当する場合は属性名の見直しをお願いします。

▐ チェック対象となる文字列例を下記に記載いたします。 チェック対象外の文字列

• classic• FirstClass

チェック対象の文字列• .Class.

Grep ツールの仕様 チェック用正規表現

\W( 英数字および” _” 以外 ) をサポート

(^|\W)[cC]lass\W

\W を未サポート (.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*

Page 4: Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供)

© NEC Corporation 2014

適用手順:開発環境への適用

Page 4

①  下記の情報を添えて SDE 問い合わせ窓口( [email protected] )へ パッチ提供を要求する

   ・お客様名   ・プロジェクト名   ・ご利用の SDE のバージョン(リビジョンまで Ver x.x.x )   ・適用済みの SDE 製品パッチのパッチ ID   ・標準の SDE に対するテーラリング状況( RPQ の適用など)

② 提供されたパッチインストーラを起動し、インストールする

Page 5: Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供)

© 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 ファイルをデプロイ

Page 6: Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供)

© 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 メソッドの場合

Page 7: Struts1.x の脆弱性( CVE-2014-0114 ) に対する SDE の対処: wrap タイプ (パッチのご提供)