« 第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