SlideShare a Scribd company logo
Javaセキュアコーディングセミナー東京
第3回
入出力と例外時の動作
演習

2012年11月11日(日)
JPCERTコーディネーションセンター
脆弱性解析チーム
戸田 洋三




                      1
‣Hands-on Exercises
 ‣ コンパイルエラーに対処しよう
 ‣ ファイルからのデータ入力を実装しよう




              2
Hands-on Exercise(1)

 サンプルコードの
 コンパイルエラーに対処しよう




                       3
以下のコードをコンパイルできるように修正せよ.
class CatFile {
  public static void cat(File file) {
      RandomAccessFile input = null;
      String line = null;

      try {
          input = new RandomAccessFile(file, "r");
          while ((line = input.readLine()) != null) {
              System.out.println(line);
          }
          return;
      } finally {
          if (input != null) {
              input.close();
          }
      }
  }
}
class testCatFile {
  public static void main(String[] args){
    if (args.length >= 1) {
      CatFile.cat(new File(args[0]));
    }
  }
}


                                        4
Hands-on Exercise(2)

(A)以下の testListOfNumbers.java について、コンパイル
  実行できるようにコードを修正せよ
(B) ListOfNumbers クラスで出力されるファイル
  OutFile.txt から整数を読み込み, その総和を計算す
  るコードを書け
(C)データを読み込んだ後の OutFile.txt を削除するよ
  うに修正せよ. symlink 攻撃を防ぐにはどうすればよ
  いか?


                       5
testListOfNumbers.java (1/3)
/*
 * Copyright (c) 1995, 2008, Oracle and/or its affiliates.
 * All rights reserved.
 */

import java.io.*;
import java.util.Vector;

class ListOfNumbers {
    private Vector<Integer> victor;
    private static final int SIZE = 10;

    public ListOfNumbers () {
        victor = new Vector<Integer>(SIZE);
        for (int i = 0; i < SIZE; i++)
            victor.addElement(new Integer(i));
    }




                                     6
testListOfNumbers.java (2/3)
    public void writeList() {
        PrintWriter out = null;
        try {
             System.out.println("Entering try statement");
             out = new PrintWriter(new FileWriter("OutFile.txt"));
             for (int i = 0; i < SIZE; i++)
                 out.println(victor.elementAt(i));
          } finally {
             if (out != null) {
                 System.out.println("Closing PrintWriter");
                 out.close();
             } else {
                 System.out.println("PrintWriter not open");
             }
        }
    }
}




                                     7
testListOfNumbers.java (3/3)
class testListOfNumbers {
  public static void main(String[] args){
    ListOfNumbers lon = new ListOfNumbers();
    lon.writeList();
  }
}




                                     8

More Related Content

PDF
Javaセキュアコーディングセミナー東京第3回演習の解説
PPTX
テスト事始め phpblt #3
PDF
from old Java to modern Java
PDF
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
PPTX
Junit4
PDF
JavaScript 講習会 #1
PPTX
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
PDF
from old java to java8 - KanJava Edition
Javaセキュアコーディングセミナー東京第3回演習の解説
テスト事始め phpblt #3
from old Java to modern Java
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
Junit4
JavaScript 講習会 #1
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
from old java to java8 - KanJava Edition

What's hot (19)

PDF
Javaセキュアコーディングセミナー東京第2回演習の解説
PDF
Ext.directことはじめ
PDF
研究生のためのC++ no.7
PDF
研究生のためのC++ no.2
PDF
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
PPTX
基礎構文班19回目 変数のスコープとforの並び替え
PDF
Web講座 第9回
PPTX
C#を始めたばかりの人へのLINQ to Objects
PDF
Java SE 8 lambdaで変わる プログラミングスタイル
PDF
Effective java 勉強会
PDF
Linq To Fun
PDF
JavaScript入門
PDF
Pgunconf pg94-select小ネタ
PDF
Fork/Join Framework。そしてLambdaへ。
PPTX
Java8 Lambda chapter5
PPTX
R spec勉強会
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
PDF
Cocoa勉強会#43-Blocksを使う
PDF
VS勉強会 .NET Framework 入門
Javaセキュアコーディングセミナー東京第2回演習の解説
Ext.directことはじめ
研究生のためのC++ no.7
研究生のためのC++ no.2
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
基礎構文班19回目 変数のスコープとforの並び替え
Web講座 第9回
C#を始めたばかりの人へのLINQ to Objects
Java SE 8 lambdaで変わる プログラミングスタイル
Effective java 勉強会
Linq To Fun
JavaScript入門
Pgunconf pg94-select小ネタ
Fork/Join Framework。そしてLambdaへ。
Java8 Lambda chapter5
R spec勉強会
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Cocoa勉強会#43-Blocksを使う
VS勉強会 .NET Framework 入門
Ad

Viewers also liked (20)

PPTX
Mis redes sociales ricardo yegros
DOCX
Mi apa
PPTX
Trabajo de informática blogspot,bloger
PPTX
Base De Datos
PPT
PPS
\'A AURORA BOREAL
PPS
Estilosmodernos 8ºB
PPT
Trabalho de Artes
PPSX
Creación del huerto de la escuela
PPT
Comunicação Locativa em Zonas Bluetooth: Um estudo do Lugar na Comunicação
PPTX
Amazon web services
PPT
Cartagena, viaje al pasado.
PDF
Nadal jaume 50fotografs
DOCX
Silabo de Informática
PDF
13 th nov yashomani
PPT
Tendências para 2009
PPT
Trabalho de Artes
PPTX
Decisiones éticas en las organizaciones
PPTX
Medicina Humana I
Mis redes sociales ricardo yegros
Mi apa
Trabajo de informática blogspot,bloger
Base De Datos
\'A AURORA BOREAL
Estilosmodernos 8ºB
Trabalho de Artes
Creación del huerto de la escuela
Comunicação Locativa em Zonas Bluetooth: Um estudo do Lugar na Comunicação
Amazon web services
Cartagena, viaje al pasado.
Nadal jaume 50fotografs
Silabo de Informática
13 th nov yashomani
Tendências para 2009
Trabalho de Artes
Decisiones éticas en las organizaciones
Medicina Humana I
Ad

Similar to Javaセキュアコーディングセミナー東京第3回演習 (7)

PDF
プログラミング作法
PPTX
Whileループ
PDF
Javaセキュアコーディングセミナー東京第1回 演習
PPTX
Java Puzzlers JJUG CCC 2016
PDF
プログラマ講習第3回
PDF
Javaセキュアコーディングセミナー東京第4回講義
PPT
Test12 16
プログラミング作法
Whileループ
Javaセキュアコーディングセミナー東京第1回 演習
Java Puzzlers JJUG CCC 2016
プログラマ講習第3回
Javaセキュアコーディングセミナー東京第4回講義
Test12 16

More from JPCERT Coordination Center (20)

PDF
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
PDF
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
PDF
DLL読み込みの問題を読み解く
PDF
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
PDF
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
PDF
脆弱性情報はこうしてやってくる
PDF
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
PPTX
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
PDF
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
PDF
クロスサイトリクエストフォージェリ(CSRF)とその対策
PDF
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
PDF
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
PDF
ソフトウェアセキュリティ保証成熟度モデル
PDF
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
PDF
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
PDF
Android Secure Coding
PDF
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
PDF
Apache Axis2におけるXML署名検証不備
PDF
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
PDF
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
DLL読み込みの問題を読み解く
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
脆弱性情報はこうしてやってくる
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
クロスサイトリクエストフォージェリ(CSRF)とその対策
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
ソフトウェアセキュリティ保証成熟度モデル
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
Android Secure Coding
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
Apache Axis2におけるXML署名検証不備
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性

Javaセキュアコーディングセミナー東京第3回演習