Struts1.xの脆弱性(CVE ) に対するSDEの対処:推奨タイプ (サンプルソースコードの公開)

Slides:



Advertisements
Similar presentations
Outlook メール文字化けの原因と対策 Exchange Server 環境編. 目次はじめに文字化けのよくある原因と回避策 1. A:半角英数字、ヨーロッパ言語などが混在した 文字化け B : 送信済みメールの宛先や CC の文字化け 2. 返信、転送時の、ユーザー名や件名の文字化け 3. 日本語が半角英数字に文字化け.
Advertisements

Web アプリケーション開発 ~図書館管理システム~ 北海道情報大学 情報メディア学 部 情報メディア学科 新井山ゼミ 高橋 隼.
1 JSP の作成 JSF による Web アプリケーション 開発 第 4 回. 2 ここでの内容 JSF での JSP の作り方と動かし方につい て学ぶ。
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
TeX で数式を書くための PowerPoint アドイン Ver (2011/06/26) Ver. 0.1 (2007/5/30)
Generic programming と STL
JPAを利用した RESTful Webサービスの開発
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
JSFによるWebアプリケーション開発 第9回
Applet 岡部 祐典 鈴木 敬幸.
Struts1.xの脆弱性(CVE ) に対するSDEの対処:wrapタイプ (パッチのご提供)
エンタープライズアプリケーション II 第10回 / 2006年7月23日
Servlet J2EE I 第8回 /
Step-by-Step Guide on How to Start ALICE Analysis
Servlet入門(2) 入力フォームをつかったWebアプリ
Struts1.xの脆弱性(CVE ) の詳細と原因
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
WagbyR6.5 Update 12 PPT版 更新情報
JavaServlet&JSP入門 01K0018 中村太一.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
BlueBeanClientを用いた連携の概要
PHP 実用的なサンプル 浅川 和久 2017/3/18 PHP 実用的なサンプル.
クラス図(1) 後半 FM13010 村上 太一.
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
JSFによるWebアプリケーション開発 第6回
HTTPプロトコル J2EE I 第7回 /
エンタープライズアプリケーション II 第7回 / 2006年7月9日
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
JSPの作成 J2EE II 第3回 2005年4月10日.
データベース設計 第9回 Webインタフェースの作成(1)
第8章 Web技術とセキュリティ   岡本 好未.
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
New accessory hardware Global Platform Division
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
セキュリティ(6) 05A2013 大川内 斉.
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
Javaによる Webアプリケーション入門 第6回
Java Bytecode Modification and Applet Security
制作技術ー3 双方向通信 : CGIシステムと環境変数
Jakarta Struts (2) ソフトウェア特論 第11回.
Javaによる Webアプリケーション入門 第11回
Servlet ソフトウェア特論 第7回.
お客様各位 ONE WEB PICK UP システム アカウント(利用ID)登録マニュアル.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
コーディングパターンの あいまい検索の提案と実装
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとプログラミング (Algorithms and Programming)
Annotation EJB 3.0 コース 第3回 2006年8月4日.
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
JSPの基本 データベース論 第2回.
Action Method の実装 J2EE II 第9回 2004年12月2日.
Jakarta Struts (1) ソフトウェア特論 第10回.
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
JSPの基本 J2EE I (データベース論) 第8回 /
統合開発環境のための プログラミング言語拡張 フレームワーク
コンパイラ 2012年10月11日
演算子のオーバーロード.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
JSFによるWebアプリケーション開発 第7回
Presentation transcript:

Struts1.xの脆弱性(CVE-2014-0114) に対するSDEの対処:推奨タイプ (サンプルソースコードの公開) 日本電気株式会社 2014年6月17日

ServletContextListener 対処内容の概要 BeanUtilsを利用した変数コピー処理に対して、拡張機能(override)を利用して操作しているメソッド(populate)内でチェック処理を追加し、問題のあるパラメータを排除します。 ※監視のために排除時に双方式ともエラーログを出力します。 web.xml ServletContextListener ServletContextListener Inner Class SampleBeanUtilsBean ブラウザ StrutsV1.x  パラメータ排除  setAbc(“123”)  getClass().getClassLoader().setXxx(“yyy”) リクエスト リクエスト abc=123 class.ClassLoader.xxx=yyy abc=123 class.ClassLoader.xxx=yyy BeanUtils呼び出し処理 エラーログを出力 通常のリクエスト「abc=123」 以外に 「class.ClassLoader.xxx=yyy」 を付加して送信 setAbc(“123”) getClass().getClassLoader().setXxx(“yyy”) populate() BeanUtilsBean.populate setAbc(“123”) Formクラス Public void setAbc(String abc){ this.abc = abc; }

適用要件および注意事項(1/2) 本対処を適用した場合、リクエストパラメータの属性名(一部を含む)に対して「class」あるいは「Class」という単語を含むことができなくなります。該当の属性名を使用している場合は、属性名の見直しをお願いします。 チェック対象となる文字列例を下記に記載いたします。 チェック対象外の文字列 classic FirstClass チェック対象の文字列 .Class. Grepツールの仕様 チェック用正規表現 \W(英数字および”_”以外)をサポート (^|\W)[cC]lass\W \Wを未サポート (.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*

適用要件および注意事項(2/2) 以下のメソッドの動作が変更されるために、該当メソッドに依存する機能がある場合は影響調査する必要があります。 org.apache.commons.beanutils.BeanUtils#populate(Object bean, Map properties) 具体的には、引数properties中に“class”または“Class”が含まれるキー属性のエントリーは引数beanに対して移送処理が行われなくなります。本条件に該当しない場合、本回避策による影響はございません。

適用手順 ① 本対処を実現したソースコードを実装する ※実装サンプルは下記にて公開しています。    ★http://jpn.nec.com/SystemDirectorEnterprise/dl/notice/SampleServletContextListener.java ② web.xml の web-app.listener 要素に Servletコンテキストリスナの設定を 追記する ③ ビルド・デプロイを実施する

テスト実施手順 GETメソッドの場合 正常動作する画面のURLに「?class.ClassLoader.xxx=yyy」を付加して実行 例:正常に動作するURL「http://localhost/Sample/TestAction.do」の場合 「http://localhost/Sample/TestAction.do?class.ClassLoader.xxx=yyy」をブラウザで表示 上記URLを実行した場合に正常に画面が表示され、ログファイルに以下の文字列が出力されるかを確認 「malicious access detected, key = class.ClassLoader.xxx value = yyy」 POSTメソッドの場合 正常動作する画面に以下のhidden項目を追加 <input type=“hidden” name=“class.ClassLoader.xxx” value=“yyy”> 上記画面を実行した場合に正常に画面が表示され、ログファイルに以下の文字列が出力されるかを確認 「malicious access detected, key = class.ClassLoader.xxx value = yyy」

“Empowered by Innovation”は、「イノベーションを、あなたのチカラに。そして、あなたと共に歩むNECグループの原動力に。」という意味を込めたNECグループのブランドステートメントです。 私たちが活動するあらゆる分野におけるイノベーションを通じて、お客さまと共に理想を実現するNECグループのあくなき情熱を、ここに表しています。