Hatena::ブログ(Diary)

hoshikuzu | star_dust の書斎 このページをアンテナに追加 RSSフィード Twitter

hoshikuzu|star_dustの日記について

書く内容の方針とかはフラフラしているのです。あまり考えていないかも知れません。面白いなぁと思うこと、大事なことだなぁと思うことを書いています。あんまり悲しいことは書かない主義。

 | 

2009-09-08

マルチバイト文字の先行文字埋め込みによるXSSへの保険的対策について マルチバイト文字の先行文字埋め込みによるXSSへの保険的対策についてを含むブックマーク マルチバイト文字の先行文字埋め込みによるXSSへの保険的対策についてのブックマークコメント


マルチバイト文字列の先行文字列埋め込みによる攻撃については、長谷川さんによる、http://gihyo.jp/admin/serial/01/charcode/0006

を参照いただくこととして、この記事に書かれていない、とりあえずの間に合わせ的な保険的対策について書いてみたいと思います。

なお、攻撃を「完全に防止できる」ということは証明できませんが、十分に難易度を高めることが可能であると思います。

処置は簡単です。「=」を、数値文字参照化してHTMLに出力するというものです。これにより、onイベント属性の追加が困難になることでしょう。HTMLの各属性をダブルクォート(など)で囲むことを徹底しておくほうがよいことはもちろんですが、時間がかかる場合にはとりあえず、この保険的対策をほどこしてからじっくりと腰を落として本来行うべき対策を行うとよいかもしれません。

※この手法はXSSが有名になりはじめたころから考えてはいたのですが、完璧ではないため、今日はじめて口外しました。

常温核融合への理解を勧めるPDF文書 常温核融合への理解を勧めるPDF文書を含むブックマーク 常温核融合への理解を勧めるPDF文書のブックマークコメント

実はエネルギー問題というよりも、貴重元素の生産のほうに本来の使用目的が出てくるはずと睨んでいます。レアメタルや肥料用途の各種元素など。そういった視点は今はまだ時期が早すぎるのでしょうけれどね。 脱炭素革命だけでは未来はないはずなのですが、あまり人類は考えたくないのでしょう。

邪馬台国の「邪馬台」の語源を考える 邪馬台国の「邪馬台」の語源を考えるを含むブックマーク 邪馬台国の「邪馬台」の語源を考えるのブックマークコメント

疑問

「邪馬台」と言えばその意味は「ヤマト」のこと、と考えることが多いことと見受けられます。字を当てれば「大和」であったり「山門」であったり「山処」であったりといろいろです。ですが、どの説にも個人的にはどうも迫力を感じませんでした。およそ弥生時代末期の日本=倭国を代表する国家である邪馬台国、長い間の内乱を収束させ女王卑弥呼による比較的広域的な統一・平和を構築した邪馬台国が、自分の国の名前をつける時に、山のところにあるから「山処」でいいじゃん、みたいな名前をつけるのでしょうか? ひょっとしたら何かしら美称ではなかったかと思うのです。現代では忘れられた美称を考えることはできないものでしょうか。

現代に残る遺称「ヤボサ」「ヤブサ」と弥生時代の「邪馬台」

魏志倭人伝に記される「邪馬台」は恐らく朝鮮系の通訳者が発音したものを中国側で採録したものでしょうから、倭人の言語でどのように発音したものであるかについて考察する上では、ある程度の発音の揺らぎを考えても良いでしょう。日本の言語の発音の歴史的変化を見据えた上で、私は、現代に残っている「ヤボサ」「ヤブサ」という聖地を意味する語彙が、弥生時代にさかのぼった時に、倭人伝で「邪馬台」と記されたものと考えるに至りました。

(編集中)

masa141421356masa141421356 2009/09/08 21:55 "="に複数の表現方法が存在するエンコーディングを使っている場合はこの対策を回避出来る場合がありそうですね。

hoshikuzuhoshikuzu 2009/09/09 13:41 "<"や">"に複数の表現方法が存在せず"="に複数の表現方法が存在するという例を私は知りたいです。とお茶を濁してみます。すみません。コメントをありがとうございました。

masa141421356masa141421356 2009/09/09 18:53 > "<"や">"に複数の表現方法が存在せず"="に複数の表現方法が存在するという例
そういう視点が欠けていましたね。それは文字コードが連番だということから考えると多分無いと思います。

"<","=",">"に複数の表現方法があって、かつ先行文字による攻撃もできるエンコーディングというのはありそうですけど。

hoshikuzuhoshikuzu 2009/09/10 10:07 そういう場合には、' " 'もまた複数の表現方法があるはずですから、先行文字で喰ってしまう技巧が不要になってしまいます。喰わずに自前で' ”'を用意します。
長谷川さんの記事の例にあがっていた先行文字で喰うケースでは2行分を1行化して悪意ある属性の追加を行うわけですが、"<",">","=",'"'に複数の表現があるケースではそもそも2行も消費せずにinputの1行だけで悪意ある属性追加が可能です。
[quot]攻撃もできるエンコーディングというのはありそうですけど[/quot]というのをもしも発見した(している)場合には、IPA/ISECなどに連絡をしたほうが良いかと思います。
というわけで、長谷川さんの記事のタイトル「先行文字による」うんぬん、というのは、対象を限定していますので、非常に理にかなった題名なのですね。最初見たとき、感動しました。

masa141421356masa141421356 2009/09/10 18:18 色々迂回方法を試していてブラウザのバグと思われる挙動が見つかったのでバグレポートを出しておきました。既知の攻撃方法で攻撃が成功しない条件下で攻撃を成功させることは恐らく不可能無理ですが。

hoshikuzuhoshikuzu 2009/09/11 18:41 おお!なるほど! このへんは実装依存のところがありますから、「こうすればオケ」みたいなことがなかなかいいづらいですね。 情報をありがとうございました。

masa141421356masa141421356 2010/06/10 09:16 「ブラウザのバグと思われる挙動」の1つが先日公開されたSafari (WebKit) のバグ CVE-2010-1390 でした。

masa141421356masa141421356 2010/06/10 09:25 実際のところ、WebKit にコンテンツを UTF-7 と認識させるのは IE より面倒でなので、このバグを突いた攻撃が成功するサイトでは、多分 IE に対してもいわゆる一般的な UTF-7 による XSS が成功してしまうはずです。
元からコンテンツが UTF-7 の場合は全然条件が違いますが、、そもそもそんな変なサイトは存在しないはずです。

 | 
最近のコメント