はてなダイアリーでJavaScriptが発動した(過去形)

2月8日の続き。

1月9日に長々と書いたように、はてなダイアリーはセキュリティを保つため様々な対策を行っています。その一つがはてなダイアリーXSS対策です。

昨日書いた脆弱性の内容を一言で言うと、はてなダイアリーの引用に関する機能でここで示された手順が守られていない部分があったということになります。具体的には第3段の次の箇所です。

href,src,cite,background 属性で外部 URL が参照される場合、URL が適切な文字で構成されているかチェックを行ないます。

2月7日に書いたように、はてなダイアリーでは引用の際に自動的に引用元にリンクを張る機能があります。この自動的に生成されるリンクで、上のチェックが行われていませんでした。そのため「JavaScript:」で始まるURIも通ってしまい、結果的にJavaScriptが利用できることになります。はてなJavaScriptが利用できるというのは、そのページを閲覧した他のはてなユーザのアカウントを奪取できるということとほぼイコールです。

そのような可能性に気付いて、試し、実際にJavaScriptのアラートボックスが出現したときには、非常に驚きました。そして、しばらくしてからセキュリティ的に問題があることに思い当たりました。試していたのは過去の日記上でしたので、見る人は少ないだろうとはいえ自分以外にJavaScript発動を目撃した人がいる可能性がありました。だとすると早急にはてなサイドに知らせる必要があるだろうと思い、あわててメールを書きました。あせっていたため、どこにメールすべきかいろいろなところを見たもののよくわからず、結局info@hatena.ne.jpあてにメールするまでに10分以上かかってしまいました。人間混乱すると何をすべきかわからなくなるものです。

はてなダイアリー上でアラートボックスを見るのはもちろんこれが初めてでしたし、最後であってほしいと思います。この脆弱性は8日にすでに修正され、現在は安全なものになっています。すばやく対応して下さったはてなの近藤さん、そしてこれを発見するきっかけを作って下さり脆弱性の追試もして下さったhoshikuzuさんに、改めてお礼申し上げます。