Jvn5132565
Upcoming SlideShare
Loading in...5
×
 

Jvn5132565

on

  • 497 views

AVTokyo2011

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

Statistics

Views

Total Views
497
Views on SlideShare
496
Embed Views
1

Actions

Likes
1
Downloads
3
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Jvn5132565 Jvn5132565 Presentation Transcript

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