ooooooo_qの日記

脆弱性の話とか

モバイル向けとPC向けの切り替えボタンでDom Based XSS

ほぼタイトル通りですが、これも数年前なのでちょっと古い話です。

数年前、まだスマートフォンが今ほどのシェアでない時代、PC向けの画面表示とモバイル向けのページが混在しているような状況でした*1。そんな状態でモバイルからPC向けのページを見たい人向けにはそれ用の導線があったり、間違えてPC向けのページに来てしまった人向けの導線が用意されていました。

サンプル

モバイルのuser agentでのモバイル向けの表示

f:id:ooooooo_q:20170805234206p:plain

モバイルのuser agentでPC表示

f:id:ooooooo_q:20170805234158p:plain

ここで問題となっていたのが、"スマートフォン版へ"のリンクの内容です。PC版とモバイル版でほぼ同じURLを使っているような場合、javascriptでボタンが生成されている事があります。

f:id:ooooooo_q:20170805235027p:plain

このケースの場合、一度PC版向けの表示をさせなければ行けないということで結構面倒だったのですが手順を踏むとXSSが可能でした。*2

f:id:ooooooo_q:20170805234851p:plain

時報告先がわからなかったので、運営元のlivedoor ブログの(確か)問い合わせフォーム経由で報告したのですが、数日ほどで対応されました。

htmlを動的に組み立てるのは問題が起きやすいので、何かしらのライブラリでエスケープするか、aタグのDOMを生成して操作するのが無難ですね。*3

(記事公開当初、サンプル画像がPC向けとモバイル向けで逆になっていたのを修正しました。)

*1:今もそうですが

*2:余談ですが、ちょうど同時期にmixiでの脆弱性報告制度があり、そこで見つけた脆弱性がヒントになりました。こちらは影響が軽微のため報奨金対象外

*3:この手の実装は最近はそれほど見ないので、あまり問題になるケースはなさそうですが