« 第20回参議院議員通常選挙 | メイン | 仮眠取る »

2007年07月29日

一部のキーワードを入力すると CEEK.JP が表示されない不都合を修正

CEEK.JP に検索キーワードとして、マルチバイト文字の一部(0x82 etc...)を与えると、タグが崩れ、ページが正常に表示されないバグが存在した。起因するセキュリティ上の問題を発見することは出来なかったが、アプリケーションのバグなので修正した。報告者は、前回の脆弱性(XSS)を発見した方だと思う(IPA セキュリティーセンター経由で連絡があった)。

検索用のアドレス書き換えなくとも、キーワード欄に %82 を入力するだけで再現できる(現在は修正済み)。CEEK.JP の仕様であるのだが、文字を組み立てるときに % を無視しているのである。この仕様は、外部からリンクされる際に、二重に URL エンコードされている場合が多いという現状に対処するためである。

Encode::from_to($value, 'euc-jp', 'euc-jp');

pack で文字を組み立てた後に、Encode.pm を利用して不正な文字を ? に置き換えるようにした。別の対処方法としては、変数を HTML に展開する際、必ず後方にスペースを付加するというのもあるだろう(実際にやってた方を知ってる)。

また、何か不都合が見つかりそうだ…。

【関連情報】
・CEEK.JP - 統合型メタサーチエンジン
 http://www.ceek.jp/
・第10回 マルチバイトの落とし穴 - @IT
 http://www.atmarkit.co.jp/fsecurity/rensai/hoshino10/hoshino02.html

2007年07月29日 23:31 | Development

トラックバック

コメント