Dec 12, 2005

[Misc] Unicode の取り扱いについて

ついでに以前読んで気になっていた Unicode 問題も試してみた。 ここでは、Unicode 制御文字や似通ったグリフを持つ文字を利用して「表示上」簡単に区別できない文字列を生成出来てしまうことが問題点として取り上げられている。

Black Hat Japan 2005 - Unicode文字によるDirectory Traversal攻撃
http://pcweb.mycom.co.jp/articles/2005/11/07/blackhat/

実験環境

  • Windows XP Professional
  • Java 1.5.0_05

サンプルコード

public static void main(final String[] args) {

    File file0 = new File("dummy"); // "dummy"
    File file1 = new File("dummy\ufeff"); // "dummy"の後に表示されない文字を付加
    File file2 = new File("\u202eymmud\u202c"); // "ymmud"を逆に表示

    System.out.println("" + file0.mkdirs());
    System.out.println("" + file1.mkdirs());
    System.out.println("" + file2.mkdirs());
}

実行結果

[エクスプローラの表示]
エクスプローラでは全く見分けが付かない("dummy" に見える)ディレクトリが 3 つ作成された。

[CMDの表示]
cmd で見ると違うディレクトリであることが分かる。

というわけで、簡単に利用者を欺くようなファイル/ディレクトリを生成できてしまった。 具体的にどういう被害が想定できるか思いつかないが、いたずらくらいは簡単に出来てしまいそう。

Posted in Misc | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |