1.4のキーワードハイライト機能にXSS脆弱性

メッセージ

1.4のキーワードハイライト機能にXSS脆弱性が存在します。 1.3.3にはこの機能がないため問題ありません。

http://pukiwiki.sourceforge.jp/dev/?word=%3Cscript%3Ealert%28%29%3C%2Fscript%3E

原因

キーワードの文字列がサニタイズされていないため。

対策案

html.phpの76行目あたりの

foreach ($keys as $key) {
  $to = "<strong class=\"word{$words[$key]}\">$key</strong>";
  $body = preg_replace("/(?:^|(?<=>))([^<]*)/e",'str_replace($key,$to,\'$1\')',$body);
  $search_word .= ' '.$to;
}

となっている部分を

foreach ($keys as $key) {
  $sanitized_key = htmlspecialchars($key);
  $to = "<strong class=\"word{$words[$key]}\">$sanitized_key</strong>";
  $body = preg_replace("/(?:^|(?<=>))([^<]*)/e",'str_replace($sanitized_key,$to,\'$1\')',$body);
  $search_word .= ' '.$to;
}

のように書き換えます。

副次効果

今まで正しくハイライトされていなかった<,>などを含む文字列が正しくハイライトされるようになります。



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2003-02-27 (木) 21:14:05
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.436 sec.

SourceForge