脆弱性の内容
記事編集画面にて以下の文字列を入力すると、XSSが発生するリンクが生成されます。
[xss](\ javascript:alert(1))
脆弱性の解説
[title](http://~)
という記法は、Markdownでリンクを生成するときに使用します。
通常記事編集画面では、javascript:
から始まる文字列はリンクにならないように対策が施されています。
しかし、今回はMarkdownのエスケープ文字である\
と半角スペースを組み合わせることによりXSSが発生するリンクが生成されてしまいました。
aタグのhref属性には、スキーム名の先頭に半角スペースを入れてもリンクとして認識されてしまうという特性があります。
<a href=" javascript:alert(1)">xss</a>
これを利用して、以下のような正規表現を回避することができます。
/^javascript:/
最後に
この脆弱性を報告したのは本日(2014/08/09)の08:03頃で、修正完了とのメールが来たのは同日の11:07頃でした。
対応が凄く早くて驚きです。
他にも2つの脆弱性を発見してQiitaに報告をしました。
その2つはわりとよくある脆弱性なので、公開はしないことにします。
Qiitaにも脆弱性報奨金制度があったら良かったと思った日でした。