アカウント名:
パスワード:
今回の 2ch の XSS については、2chのサーバが外部のサービス経由のデータをHTMLに組み入れる際に、Shift_JIS において文字として完結していない半端バイトと、HTMLタグの属性値のダブルクォート (") が結合して Shift_JIS の2バイト文字としてブラウザが扱うことにより、属性値の終了を意味するダブルクォート (") が消失してしまい、メールアドレスとして入力した不正な JavaScript コードが実行されてしまうというものです。
5日前にもコメント [srad.jp] しましたが、詳しくは、文字コードの脆弱性はこの3年間でどの程度対策されたか? [slideshare.net] を読んでいただけると、原因と対策が分かりやすいで
そういうバグが原因だとしたら、埋め込んだ文字列からスクリプトを介するとかしないと「投稿に任意の文字列を埋め込み」は不可能ですね。好き放題やられる状況だったという結論は変わりませんけど。
確かに、JavaScript コードで使える文字種が制限されますので(ダブルクォートや半角スペースが使えない)、「任意のJavaScriptコード」ではなく「一部文字種が制限されたJavaScriptコード」ですね。
2ちゃんねるは、メールアドレス欄に入れた文字列が、a要素のhref属性の中に入る仕組みになっています。
普通は、こんな感じになります。
<a href="mailto:sage">名無しさん@アレゲいっぱい</a>
マルチバイトXSSの脆弱性がある場合、1回メールアドレスに「【マルチバイト文字の1バイト目 (0x82)】」だけいれて書き込みをした後、 メールアドレス欄に「 onload=alert(document.title)」と
全ての文字列の最後に半角スペースを入れておけば解決ですよ。※P言語は文字コードの探査が可能だから、定型文書くならそっちだろぅに・・・
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
文字エンコーディングの validation をしないのが原因 (スコア:5, 参考になる)
今回の 2ch の XSS については、2chのサーバが外部のサービス経由のデータをHTMLに組み入れる際に、Shift_JIS において文字として完結していない半端バイトと、HTMLタグの属性値のダブルクォート (") が結合して Shift_JIS の2バイト文字としてブラウザが扱うことにより、属性値の終了を意味するダブルクォート (") が消失してしまい、メールアドレスとして入力した不正な JavaScript コードが実行されてしまうというものです。
5日前にもコメント [srad.jp] しましたが、詳しくは、文字コードの脆弱性はこの3年間でどの程度対策されたか? [slideshare.net] を読んでいただけると、原因と対策が分かりやすいで
Re: (スコア:0)
そういうバグが原因だとしたら、埋め込んだ文字列からスクリプトを介するとかしないと「投稿に任意の文字列を埋め込み」は不可能ですね。
好き放題やられる状況だったという結論は変わりませんけど。
「一部文字種が制限されたJavaScriptコード」 (スコア:2)
確かに、JavaScript コードで使える文字種が制限されますので(ダブルクォートや半角スペースが使えない)、「任意のJavaScriptコード」ではなく「一部文字種が制限されたJavaScriptコード」ですね。
2ちゃんねるは、メールアドレス欄に入れた文字列が、a要素のhref属性の中に入る仕組みになっています。
普通は、こんな感じになります。
マルチバイトXSSの脆弱性がある場合、1回メールアドレスに「【マルチバイト文字の1バイト目 (0x82)】」だけいれて書き込みをした後、 メールアドレス欄に「 onload=alert(document.title)」と
Re:「一部文字種が制限されたJavaScriptコード」 (スコア:0)
全ての文字列の最後に半角スペースを入れておけば解決ですよ。
※P言語は文字コードの探査が可能だから、定型文書くならそっちだろぅに・・・