DOM Based XSS の報告
実は、自分は以前 CGI 配布などやっておりまして、5年くらい前にメンテナンスも停止していたのですが、このたび、その CGI に関して、XSS の脆弱性が見つかったので、こちらでも報告したいと思います。
該当する CGI は dopvSTAR* と dopvCOMET* の 2 つです。いずれもサーバサイドに CGI、Web ページに JavaScript コードを追記してログを取得し、アクセス解析が行えるものです。
問題があったのは、配布サイトに掲載していたログ取得用の JavaScript コードです。現在は、問題点を修正済みです(CGI自体のダウンロードは数年前から停止しています)。現在もご利用の方がいらっしゃいましたら、ただちに対処をお願いいたします。
DOM Based XSS
XSS の内容は、いわゆる DOM Based XSS というものに該当し、ログ取得用の JavaScript コードが不適切でした。以下のようなコードが該当します。
var rf = document.referrer;
document.write(rf);
document.referrer
はブラウザのリンク元なわけですが、ユーザ自身の書き換えや、第三者によっても、例えばリンクやリダイレクトを介して入力値がコントロール可能です。つまり、外部入力に該当する document.referrer
をそのまま document.write に渡してはいけないということになりますが、考慮が漏れておりました。
対応としては、以下のようにエスケープをします。
var rf = encodeURIComponent(document.referrer);
document.write(rf);
大変お手数ですが、該当ツールをご利用中の皆様は、ただちに上記対応をよろしくお願いいたします。