水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 情報処理試験でNUL文字攻撃の問題など

情報処理試験でNUL文字攻撃の問題など

2006年4月17日(月曜日)

情報処理試験でNUL文字攻撃の問題など

更新: 2006年4月20日

スラッシュドットに「情報処理試験(2006年春)はどうでしたか (slashdot.jp)」というトピックができていますね。今回、「テクニカルエンジニア(情報セキュリティ)」という試験区分が新たに追加されたとのこと。

情報処理技術者試験センター:問題冊子・配点割合・解答例 (www.jitec.jp)」として問題が公開されているので見てみましたが、ディレクトリトラバーサルSQLインジェクションの攻撃手法を答えさせるものがあったりして、なかなか興味深いです。

個人的に印象深かったのは、拡張子指定を迂回する話ですね。Perl スクリプトで、外部から与えられた $fname という名前に対して '.cep' という文字列を連結してから open に渡しています。$fname は何もサニタイズされていませんが、プログラム内で '.cep' という固定の文字列が連結されてから open に渡りますので、これを書いた人は「拡張子 .cep のファイルにしかアクセスできない」と思っているわけです。そこで「任意のファイルにアクセスする方法を答えよ」というのが問題になります。

まあ、単にファイル名の後ろに NUL文字をつけるだけなのですが、この手法、意外に知られていないように思います。以前、私が社内向けのセミナーで紹介したことがあるのですが、普段から Perl のプログラムを書いていて、XSSなどは知り尽くしているような人にも「初耳」と言われたりしましたので……。

※Perl の open は NUL を含むファイル名を渡されると NUL 以降を無視します。クエリに index.html%00 などと指定すると index.html(NUL).cep という文字列が open に渡ることになりますが、index.html.cep ではなく index.html が開かれます。

※2006-04-20追記: もう少し正確に言うと、Perl は NUL を含むファイル名をそのまま OS に渡すので、結果として NUL 以降が無視されます。Perl が一律に文字列の NUL 以降を無視しているわけではないので注意が必要です。詳しくはコメント欄を参照してください (PANDA さんありがとうございます)。

ところで話は変わりますが、こんなご意見が。

まあIPAが「XSS=クッキー漏洩」としか考えていないことは、脆弱性届け出状況 [ipa.go.jp]とかを見ても明らかなのだがorz

それはあるいは私のせいかも。届出様式には「5) 脆弱性により発生しうる脅威」という項目があって、これは届出者が書いていますので。

関連する話題: セキュリティ

最近の日記

関わった本など