# DOM Based XSS の報告 実は、自分は以前 CGI 配布などやっておりまして、5年くらい前にメンテナンスも停止していたのですが、このたび、その CGI に関して、XSS の脆弱性が見つかったので、こちらでも報告したいと思います。 * [[https://jvn.jp/jp/JVN36339873/|JVN#36339873 dopvSTAR* におけるクロスサイトスクリプティングの脆弱性]] * [[https://jvn.jp/jp/JVN64756004/|JVN#64756004 dopvCOMET* におけるクロスサイトスクリプティングの脆弱性]] 該当する 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); 大変お手数ですが、該当ツールをご利用中の皆様は、ただちに上記対応をよろしくお願いいたします。 ## See Also * [[http://en.wikipedia.org/wiki/Cross-site_scripting#Traditional_versus_DOM-based_vulnerabilities|Cross site scripting: Traditional versus DOM-based vulnerabilities - Wikipedia]]