Submit Search
Javaセキュアコーディングセミナー東京第2回演習の解説
1 like
564 views
J
JPCERT Coordination Center
1 of 18
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
More Related Content
PDF
Javaセキュアコーディングセミナー東京第2回演習
JPCERT Coordination Center
PDF
Javaセキュアコーディングセミナー東京第3回演習の解説
JPCERT Coordination Center
PDF
Async design with Unity3D
Kouji Hosoda
PPTX
An other world awaits you
信之 岩永
PDF
Slide
Takefumi MIYOSHI
PDF
Javaセキュアコーディングセミナー東京第3回講義
JPCERT Coordination Center
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
PDF
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
Javaセキュアコーディングセミナー東京第2回演習
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第3回演習の解説
JPCERT Coordination Center
Async design with Unity3D
Kouji Hosoda
An other world awaits you
信之 岩永
Slide
Takefumi MIYOSHI
Javaセキュアコーディングセミナー東京第3回講義
JPCERT Coordination Center
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
What's hot
(20)
PPTX
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
KEY
Objc lambda
matuura_core
PDF
Unit test in android
Tatsuya Maki
PDF
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Takefumi MIYOSHI
PPTX
async/await のしくみ
信之 岩永
PDF
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
Mr. Vengineer
PDF
Cloud TPU Driver API ソースコード解析
Mr. Vengineer
PPTX
Junit4
ichikaz3
PDF
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
PDF
Visual C++コード分析を支えるSAL
egtra
PDF
VerilatorとSystemC
Mr. Vengineer
PDF
64ビット対応Dllインジェクション
Shinichi Hirauchi
PPTX
[CB16] マイクロソフトウィンドウズカーネルのデスノート by Peter Hlavaty & Jin Long
CODE BLUE
PDF
Javaセキュアコーディングセミナー東京第1回演習の解説
JPCERT Coordination Center
PDF
effective modern c++ chapeter36
Tatsuki SHIMIZU
PDF
Effective modern-c++#9
Tatsuki SHIMIZU
PPTX
Sharing Deep Dive
Takaaki Suzuki
PDF
LINQソースでGO!
Kouji Matsui
PDF
Rx java x retrofit
Shun Nakahara
PDF
Shibuya JVM Groovy 20150418
Uehara Junji
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
Objc lambda
matuura_core
Unit test in android
Tatsuya Maki
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Takefumi MIYOSHI
async/await のしくみ
信之 岩永
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
Mr. Vengineer
Cloud TPU Driver API ソースコード解析
Mr. Vengineer
Junit4
ichikaz3
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
Visual C++コード分析を支えるSAL
egtra
VerilatorとSystemC
Mr. Vengineer
64ビット対応Dllインジェクション
Shinichi Hirauchi
[CB16] マイクロソフトウィンドウズカーネルのデスノート by Peter Hlavaty & Jin Long
CODE BLUE
Javaセキュアコーディングセミナー東京第1回演習の解説
JPCERT Coordination Center
effective modern c++ chapeter36
Tatsuki SHIMIZU
Effective modern-c++#9
Tatsuki SHIMIZU
Sharing Deep Dive
Takaaki Suzuki
LINQソースでGO!
Kouji Matsui
Rx java x retrofit
Shun Nakahara
Shibuya JVM Groovy 20150418
Uehara Junji
Ad
Viewers also liked
(9)
PDF
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
PDF
ソフトウェアセキュリティ保証成熟度モデル
JPCERT Coordination Center
PPTX
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
JPCERT Coordination Center
PDF
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
JPCERT Coordination Center
PDF
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
JPCERT Coordination Center
PDF
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
JPCERT Coordination Center
PDF
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
JPCERT Coordination Center
PDF
脆弱性情報はこうしてやってくる
JPCERT Coordination Center
PDF
クロスサイトリクエストフォージェリ(CSRF)とその対策
JPCERT Coordination Center
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
ソフトウェアセキュリティ保証成熟度モデル
JPCERT Coordination Center
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
JPCERT Coordination Center
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
JPCERT Coordination Center
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
JPCERT Coordination Center
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
JPCERT Coordination Center
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
JPCERT Coordination Center
脆弱性情報はこうしてやってくる
JPCERT Coordination Center
クロスサイトリクエストフォージェリ(CSRF)とその対策
JPCERT Coordination Center
Ad
Similar to Javaセキュアコーディングセミナー東京第2回演習の解説
(20)
PDF
Javaセキュアコーディングセミナー東京第1回 演習
JPCERT Coordination Center
PDF
Java SE 7 InvokeDynamic in JRuby
Hiroshi Nakamura
PPTX
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
PPTX
Java Puzzlers JJUG CCC 2016
Yoshio Terada
PPTX
競技プログラミングのためのC++入門
natrium11321
PPTX
C#6.0の新機能紹介
Kazunori Hamamoto
KEY
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
PDF
Boost Tour 1.53.0 merge
Akira Takahashi
KEY
ひのきのぼうだけで全クリ目指す
AromaBlack
ODP
Introduction of Python
Tomoya Nakayama
PDF
Pfi Seminar 2010 1 7
Preferred Networks
PPTX
Visual C++で使えるC++11
nekko1119
PDF
Android Lecture #03 @PRO&BSC Inc.
Yuki Higuchi
PPTX
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
PDF
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
PPT
20010901
小野 修司
PDF
Zynq VIPを利用したテストベンチ
Mr. Vengineer
PDF
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
PDF
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
Masahiro Sakai
PDF
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
Javaセキュアコーディングセミナー東京第1回 演習
JPCERT Coordination Center
Java SE 7 InvokeDynamic in JRuby
Hiroshi Nakamura
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
Java Puzzlers JJUG CCC 2016
Yoshio Terada
競技プログラミングのためのC++入門
natrium11321
C#6.0の新機能紹介
Kazunori Hamamoto
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
Boost Tour 1.53.0 merge
Akira Takahashi
ひのきのぼうだけで全クリ目指す
AromaBlack
Introduction of Python
Tomoya Nakayama
Pfi Seminar 2010 1 7
Preferred Networks
Visual C++で使えるC++11
nekko1119
Android Lecture #03 @PRO&BSC Inc.
Yuki Higuchi
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
20010901
小野 修司
Zynq VIPを利用したテストベンチ
Mr. Vengineer
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
Masahiro Sakai
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
More from JPCERT Coordination Center
(19)
PDF
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
JPCERT Coordination Center
PDF
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
JPCERT Coordination Center
PDF
DLL読み込みの問題を読み解く
JPCERT Coordination Center
PDF
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
JPCERT Coordination Center
PDF
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
JPCERT Coordination Center
PDF
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
JPCERT Coordination Center
PDF
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
JPCERT Coordination Center
PDF
Android Secure Coding
JPCERT Coordination Center
PDF
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JPCERT Coordination Center
PDF
Apache Axis2におけるXML署名検証不備
JPCERT Coordination Center
PDF
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
JPCERT Coordination Center
PDF
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
JPCERT Coordination Center
PDF
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
PDF
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
PDF
MySQL Connector/J における SQL インジェクションの脆弱性
JPCERT Coordination Center
PDF
Blojsom におけるクロスサイトスクリプティングの脆弱性
JPCERT Coordination Center
PDF
Apache Struts2 における任意の Java メソッド実行の脆弱性
JPCERT Coordination Center
PDF
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
JPCERT Coordination Center
PDF
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
JPCERT Coordination Center
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
JPCERT Coordination Center
DLL読み込みの問題を読み解く
JPCERT Coordination Center
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
JPCERT Coordination Center
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
JPCERT Coordination Center
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
JPCERT Coordination Center
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
JPCERT Coordination Center
Android Secure Coding
JPCERT Coordination Center
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JPCERT Coordination Center
Apache Axis2におけるXML署名検証不備
JPCERT Coordination Center
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
JPCERT Coordination Center
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
JPCERT Coordination Center
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
MySQL Connector/J における SQL インジェクションの脆弱性
JPCERT Coordination Center
Blojsom におけるクロスサイトスクリプティングの脆弱性
JPCERT Coordination Center
Apache Struts2 における任意の Java メソッド実行の脆弱性
JPCERT Coordination Center
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第2回演習の解説
1.
Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説 2012年10月14日(日) JPCERTコーディネーションセンター 脆弱性解析チーム 戸田 洋三
1
2.
‣Hands-on Exercises ‣
サンプルコード Unzip を修正しよう ‣ サンプルコード AltConst を修正しよう 2
3.
Hands-on Exercise(1) ‣サンプルコード Unzip
を ‣修正しよう 3
4.
ZipBombの影響を受けるコード例 class Unzip {
static final int BUFFER = 512; public static void main(String[] args) throws FileNotFoundException,IOException { BufferedOutputStream dest = null; ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(args[0]))); ZipEntry entry; while ((entry = zis.getNextEntry()) != null){ System.out.println(“Extracting: “ + entry); int count; byte data[] = new byte[BUFFER]; FileOutputStream fos = new FileOutputStream(entry.getName()); dest = new BufferedOutputStream(fos, BUFFER); while ((count=zis.read(data,0,BUFFER)) != -1){ dest.write(data, 0, count); } dest.flush(); dest.close(); } zis.close(); } } 4
5.
コード例 Unzip の問題点 (A)
解凍後のサイズをチェックしていない (B) 例外 ArrayIndexOutOfBoundsException が発生 する可能性がある (C) 既存ファイルを上書きする可能性がある (D) その他? これらの問題点を解決せよ!! 5
6.
コード例 Unzip の問題点 (A)
解凍後のサイズをチェックしていない (B) 例外 ArrayIndexOutOfBoundsException が発生 する可能性がある (A)の対応 (C) 既存ファイルを上書きする可能性がある セミナ内で説明済み (D) その他? 6
7.
コード例 Unzip の問題点 (A)
解凍後のサイズをチェックしていない (B) 例外 ArrayIndexOutOfBoundsException が発生 する可能性がある (C) 既存ファイルを上書きする可能性がある (B)の対応 (D) その他? 例外 ArrayIndexOutOfBoundsException の発生原因は? ⇒ コマンドライン引数にファイル名が与えられることを想定して いるため, 引数がない場合に例外が発生する ⇒ 引数の数をチェックしましょう 7
8.
コード例 Unzip の問題点 (A)
解凍後のサイズをチェックしていない (B) 例外 ArrayIndexOutOfBoundsException が発生 する可能性がある (C) 既存ファイルを上書きする可能性がある (B)の対応 (D) その他? 例外 ArrayIndexOutOfBoundsException の発生原因は? ⇒ コマンドライン引数にファイル名が与えられることを想定して いるため, 引数がない場合に例外が発生する ⇒ 引数の数をチェックしましょう あるいは… 引数の数だけ処理を繰り返す (引数がなければそのまま終了) 8
9.
コード例 Unzip の問題点 (A)
解凍後のサイズをチェックしていない (B) 例外 ArrayIndexOutOfBoundsException が発生 する可能性がある (C) 既存ファイルを上書きする可能性がある (D) その他? (C)の対応 ファイル出力の前に, すでにファイルが存在していないかどう かチェックする 9
10.
修正コード例(1/2) class Unzip {
static final int TOOBIG = 10000000; static final int BUFFER = 512; public static void main(String[] args) throws FileNotFoundException,IOException { if (args.length <= 0) return; BufferedOutputStream dest = null; ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(args[0]))); ZipEntry entry; while ((entry = zis.getNextEntry()) != null){ if (entry.getSize () > TOOBIG) { throw new IllegalStateException( “uncompressed size too huge: “ + entry.getName()); } if (entry.getSize() == -1){ throw new IllegalStateException(“uncompressed size unknown”); } (…次のページに続く…) 10
11.
修正コード例(2/2) (… 前のページから…)
System.out.println(“Extracting: “ + entry); int count; byte data[] = new byte[BUFFER]; Path path = FileSystems.getDefault().getPath(entry.getName()); Files.createFile(path); // exception if file already exists FileOutputStream fos = new FileOutputStream(entry.getName()); dest = new BufferedOutputStream(fos, BUFFER); while ((count=zis.read(data,0,BUFFER)) != -1){ dest.write(data, 0, count); } dest.flush(); dest.close(); } zis.close(); } } 11
12.
Hands-on Exercise(2) ‣サンプルコード AltConst
を ‣修正しよう 12
13.
Q. 以下のコードの問題点は何か? class AltConst
{ int i; AltConst(){ this(10); } AltConst(int i0){ if (checkarg(i0)) { this.i = i0; } } boolean checkarg(int i) throws IllegalArgumentException { if (i<0 || 100<i) { throw new IllegalArgumentException("arg should be positive < 100."); } return true; (A) コンパイルエラーに なる } } (B) checkarg() による引数のチェックは役に立たない (C) コンストラクタが二つ定義されている (D) フィールド i に初期化子がない 13
14.
A. 以下のコードの問題点は何か? class AltConst
{ int i; AltConst(){ this(10); } AltConst(int i0){ if (checkarg(i0)) { this.i = i0; } } boolean checkarg(int i) throws IllegalArgumentException { if (i<0 || 100<i) { throw new IllegalArgumentException("arg should be positive < 100."); } return true; (A) コンパイルエラーに なる } } (B) checkarg() による引数のチェックは役に立たない (C) コンストラクタが二つ定義されている (D) フィールド i に初期化子がない 14
15.
A. 以下のコードの問題点は何か? AltConst のサブクラスをつくることにより,
checkarg() による チェックの後でフィールド i の値を変更できる. class attack extends AltConst { attack(int arg) { super(); this.i = arg; } public static void main(String[] args) { AltConst a = new attack(101); System.out.println("attack.i: " + a.i); } } 15
16.
A. 以下のコードの問題点は何か? AltConst のサブクラスをつくることにより,
checkarg() による チェックの後でフィールド i の値を変更できる. class attack extends AltConst { attack(int arg) { super(); サブクラス化による攻撃への対策を this.i = arg; 行え!! } public static void main(String[] args) { AltConst a = new attack(101); System.out.println("attack.i: " + a.i); } } 16
17.
サブクラス化による攻撃への対策 A) サブクラスをつくれないように final
ク ラスにする B) 初期化後の i フィールドを変更されない よう final 宣言あるいは private 宣言する B)の場合, checkarg() もオーバーライ ドされないように final 宣言すべし 17
18.
Altconst クラスに対するコメント
そもそも checkarg() メソッドって検証成 功で true を返し, 検証失敗では例外を投 げるってなんかアンバランスだよね. 検証結果を true/false で返すか, void型の メソッドにして検証失敗のときは例外を 投げるってしたほうがきれいだよね. 例外を投げるタイプだと, オブジェクトの 初期化が途中終了しちゃうからファイナ ライザ攻撃の危険あるかもね. 18
Download