Your SlideShare is downloading. ×

Jvn5132565

381

Published on

AVTokyo2011 …

AVTokyo2011
Web-talk資料
JVN5132565 IEの文字化けでXSS
hoshikuzu|star_dust
※スッカスカ資料ですみません

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
381
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JVN#51325625 Internet Explorer における XSS の脆弱性 不確か且つ勝手に解説バージョン 11/14/11
  • 2. JVN#51325625
    • JVN#51325625 Internet Explorer における XSS 脆弱性
    • IE6 には、 EUC-JP で記述された特定の文字列の処理に問題があり、クロスサイトスクリプティングの脆弱性が存在します。
    • http://jvn.jp/jp/JVN51325625/
    11/14/11
  • 3. JVN#51325625
    • 文献 1: 文字と XSS の関係 (2006/06)
    • ↑ 寺田健 氏
    • http://ux.nu/UXAJh+
    11/14/11
    • 文献 2: 「 鷗 」が「乗ス」に化けるメカニズム (2006/11)
    • ↑ 森山 将之氏
    • http://ux.nu/gPGOj+
  • 4. 「鷗」が「乗ス」に化けるメカニズム
    • CP51932 と Unicode との変換の実現方法
    • CP51932 -> Unicode
    • 1. 文字列をアルゴリズム的変換で EUC から SJIS に変換
    • 2.CP932 から Unicode に変換
    11/14/11
  • 5. 「鷗」が「乗ス」に化けるメカニズム
    • ステップ 1
    • x8FxECxBF をアルゴリズム的変換で EUC から SJIS に変換します。
    • ※ JIS X 0208 の 94( 区 )×94( 点 ) の範囲外のコードポイントは、変換されずに SJIS 文字列の中に残るような変換をします。
      • x8F -> x8F
      • xECxBF -> xE6xBD
    11/14/11
  • 6. 「鷗」が「乗ス」に化けるメカニズム
    • ステップ 2
      • x8FxE6xBD を CP932 から Unicode に変換
      • x8FxE6 -> U+4E57 ( 乗 )
      • xBD -> U+FF7D ( ス )
    11/14/11
  • 7. 彅による XSS ベクタ
    • ステップ1
    • 0x8FBCF4 は、 JIS X 0212 (補助漢字)で、 3 バイトで 1 文字「彅」
    • 0x8F  -> 不明バイトなので変換無視
    • 0xBCF4  -> EUC の「儒」が 0x8EF2 ( SJIS の「儒」)に変換
    • できあがったのは 0x8F8EF2
    11/14/11
  • 8. 彅による XSS ベクタ
    • ステップ2
    • 0x8F8EF2 を、 0x8F8E ( SJIS の「庶」)+ 0xF2 と解釈します。
    • 以上が、内部的にはユニコードへの変換時に中間的に発生しているらしい。
    • 余った 0xF2 が、意図せぬ作用(続く「“」文字を破壊するなど)を及ぼします。
    11/14/11
  • 9. 変種のベクタもありうる
    • 「彅」が文字化けしてお尻に 0xF2 が余る。
    • 「 X 」が文字化けしてお尻に 0x3C が余る。
    • 「 X 」が文字化けしてお尻に 0x3E が余る。
    • 「 X 」が文字化けしてお尻に 0x3D が余る。
    • 「 X 」が文字化けしてお尻に 0x22 が余る。
    •   いやぁ、手探りでも当てられるレベル。
    11/14/11
  • 10. JVN#51325625 の ISO-2022-JP 版
    • ISO-2022-JP 版もある。
    • ESC $ B [0xE0 0xA5] ESC ( B ⇒ [0x20 0x22]
    • ESC $ B [0xE0 0xBF] ESC ( B ⇒ [0x20 0x3C]
    • ESC $ B [0xE0 0xC1] ESC ( B ⇒ [0x20 0x3E]
    11/14/11
  • 11. JVN#51325625 の ISO-2022-JP 版
    • ISO-2022-JP 版の詳細は?
    • http://d.hatena.ne.jp/st4rdust/20110712/1310451704
    • 改修後にさらに出た ISO-2022-JP 関連
    • MS10-090 ( http://jvndb.jvn.jp/ja/contents/2010/JVNDB-2010-000065.html )
    11/14/11
  • 12. JVN#51325625 怖いですね
    • ありがとうございました 勝手な解説なので 重要ポイントが抜けています。
    • パッチが完全ではない恐れがあります。
    11/14/11
  • 13. 補遺( LT 当日説明しきれなかったこと)
    • EUC-JP 対策 後方互換も考えた上での提案
      • http://ux.nu/UXAJh
        • 3.2.2  文字集合の定義より
        • 使用する文字集合を以下に絞るのが最善
          • 改行・半角空白
          • JIS X 0201 (ラテン文字)
          • JIS X 0208 (第一・二水準文字など
          • 上記以外は REPLACEMENT CHARACTER に代替
    11/14/11
  • 14. 補遺( LT 当日説明しきれなかったこと)
    • ISO-2022-JP 対策 後方互換込みの提案
        • 使用する文字集合を以下に絞るのが最善
          • 改行・半角空白
          • JIS X 0201 (ラテン文字)
          • JIS X 0208 (第一・二水準文字など
          • 上記以外は REPLACEMENT CHARACTER に代替
    •  ※全て文字参照にするのもひとつの方法
      • ユーザビリティに欠ける恐れがあることを忘れずに
    11/14/11

×