NOEMBLEM/エンブレムが設定されていません。

メールの詳細(トピック表示)

新連載 「ここが危ない!Web2.0のセキュリティ」

投稿者:Kanatokoさん  2007/06/27 16:02  MLNo.651   [メール表示]


#噂をすれば何とやらw
IPA賞受賞の福森氏の連載がはじまったみたいです。
http://gihyo.jp/dev/serial/01/web20sec/0001?page=1

--
Kanatoko<anvil@…>
Open Source WebAppFirewall
http://guardian.jumperz.net/


 読み込み中...

  • MLNo.652   さん  (1) 2007/06/27 16:56  [メール表示する]
    はせがわです。

    On 6/27/07, Kanatoko wrote:
    > IPA賞受賞の福森氏の連載がはじまったみたいです。
    > http://gihyo.jp/dev/serial/01/web20sec/0001?page=1

    2ページ目前半では、Ajaxでやり取りされるファイルを直接
    IEで開いた場合の、IEのいわゆるContent-Type無視に備えて
    全てのファイルでXSS対策が必要だという話が書いてあります。
    が、手元でいろいろ試した感じでは、少なくとも
    Content-Type: text/xml および application/xml であれば、
    内容やURLがどうであっても、HTMLだと解釈されることは
    なさそうに思います。

    なので Ajax のデータのやり取りには XML を使えば安全だと
    いう気がしたので、[seasurfers:0615]みたいなことを書きました。

    ただし、application/rss+xml や application/atom+xml を
    返している場合、IE6 ではこれらのMIMEタイプを認識できない
    ため、状況によってはHTMLと解釈させてXSSさせることができそう
    です。

    また、text/plain は ambiguous だということだそうです。
    http://msdn2.microsoft.com/en-us/library/ms775147.aspx

    …と、あんまり記事とは関係のない話をとりとめもなく…。

    --
    HASEGAWA Yosuke
    yosuke.hasegawa@…

  • MLNo.653   Kanatokoさん  (0) 2007/06/27 18:10  [メール表示する]

    はせがわさんwrote:
    > 手元でいろいろ試した感じでは、少なくとも
    > Content-Type: text/xml および application/xml であれば、
    > 内容やURLがどうであっても、HTMLだと解釈されることは
    > なさそうに思います。

    なるほど参考になります。

    IEのContent-Type無視の挙動って、拡張子だのContent-Typeだのレジストリだの
    (?)レスポンスボディの内容だのが関係あるみたいで、個人的にいまいち整理
    しきれていません。

    ところでIE7もIE6と同じような動作なのでしょうか?

    --
    Kanatoko
    Open Source WebAppFirewall
    http://guardian.jumperz.net/


  • MLNo.655   sanakiさん  (0) 2007/06/27 18:29  [メール表示する]
    佐名木@クライアント認証がうまくテストできない...orz% という者です。

    少し前に、
    notepad.exe をバイナリエディタで開いて、後半部に「test」を追加して、
    そのファイル名を a.gif にしたどうなるか?
    というのを試したら、
    → メモ帳が起動することはなかった。
    →→ IE はファイル内容をチェックしているというよりも、
    ・content-type で指定したレンダリングエンジンに渡す。
    (この場合は、GIF 画像を画面に表示する関数?ランタイム?)
    ・そいつがエラーを返したので、デフォルトの表示エンジンが表示(※)。
    ・フツーは、text/plain のイメージが強いけど、
    IE は HTML のレンダリングエンジンなので、XSS 発現。
    ではないかと思いました。
    →→→ MS は text/plain の上位互換として text/html 一本で乗り切ろうとしている!?
    →→→ そもそも壊れた Web コンテンツを表示する際(※)に、HTML 解釈するってどうよ!
    と個人的には思う。

    そんなこんなで
    ・IE : WinXP SP2 - IE6 SP2
    IIS : WinXP SP2 - IIS5.1 な環境では、

    拡張子 結果 Content-Type
    zip XSS application/x-zip-compressed
    gif XSS image/gif
    jpg XSS image/jpeg
    pdf XSS application/pdf
    txt XSS text/plain
    wav XSS audio/wav
    mpg XSS video/mpeg
    avi XSS video/x-msvideo
    lzh XSS application/octet-stream
    bak XSS application/octet-stream
    swf NG application/x-shockwave-flash
    flv XSS application/octet-stream
    mov NG(*) video/quicktime
    der NG(*1) application/x-x509-ca-cert
    cer XSS text/html
    csv XSS application/octet-stream

    ・IE : WinXP SP2 - IE7
    IIS : Win2k SP4 - IIS5.0 な環境では、
    doc NG application/msword
    xls NG application/vnd.ms-excel
    ppt NG application/vnd.ms-powerpoint

    (*) 保存ダイアログが出た。QuickTimePlayer をインストールしていないから?
    QuickTimePlayer をインストールすれば、XSS になるかも
    (*1) 保存/実行ダイアログが出た。当然かな

    ほとんどアウト!
    Flash が XSS しないということは、Flash プラグインと IE 間では
    どんなコミュニケーションをしているんだろう!?

    と、私もとりとめもなく...

    ====
    そもそも、サーバ側のモジュールでバイナリが適切であると評価できても、
    IE のプラグインで適切に動作してくれるかは保証されないですよね!?
    サーバ側のモジュールでバイナリが適切であると評価できても、
    IE のプラグインでエラーになれば、XSS 発現というのは、致命的かと...orz

    HASEGAWA Yosuke wrote on 2007-6/27(水) 16:56:33
    >2ページ目前半では、Ajaxでやり取りされるファイルを直接
    >IEで開いた場合の、IEのいわゆるContent-Type無視に備えて
    >全てのファイルでXSS対策が必要だという話が書いてあります。
    >が、手元でいろいろ試した感じでは、少なくとも
    >Content-Type: text/xml および application/xml であれば、
    >内容やURLがどうであっても、HTMLだと解釈されることは
    >なさそうに思います。
    >
    >なので Ajax のデータのやり取りには XML を使えば安全だと
    >いう気がしたので、[seasurfers:0615]みたいなことを書きました。
    >
    >ただし、application/rss+xml や application/atom+xml を
    >返している場合、IE6 ではこれらのMIMEタイプを認識できない
    >ため、状況によってはHTMLと解釈させてXSSさせることができそう
    >です。
    >
    >また、text/plain は ambiguous だということだそうです。
    >http://msdn2.microsoft.com/en-us/library/ms775147.aspx
    >
    >…と、あんまり記事とは関係のない話をとりとめもなく…。

    以上、よろしくお願いします
    2007-6/27(水) 18:10:38 作成開始

    -----------------------------------------------------
    佐名木 智貴(Tomoki Sanaki)
    E-mail=active@…
    PGP FingerPrint
    = 34E5 2A31 45C8 2CB5 3CED 0B46 F328 A402 7182 DCC6

  • MLNo.656   Kanatokoさん  (0) 2007/06/27 18:46  [メール表示する]

    おお、佐名木さんかなり調べてますね。

    ところでこの部分ですが

    > →→ IE はファイル内容をチェックしているというよりも、
    > ・content-type で指定したレンダリングエンジンに渡す。

    http://www.jumperz.net/index.php?i=6&threadId=71731176885492916
    で某氏が書かれている内容によると、まず拡張子が関係している可能性があるよ
    うです。

    --引用--

    拡張子確認 -> 標準の拡張子 ?
    (1 標準の拡張子毎のライブラリに丸投げ -> エラーなし ?
    (1 標準の拡張子毎の処理)
    :
    (0 内容推測 -> 推測した拡張子毎のライブラリに丸投げ)
    )
    :
    (0 内容推測 -> 推測した拡張子毎のライブラリに丸投げ)

    --引用ここまで--

    --
    Kanatoko
    Open Source WebAppFirewall
    http://guardian.jumperz.net/


  • MLNo.657   sanakiさん  (0) 2007/06/27 20:56  [メール表示する]
    佐名木という者です。

    なるほど。
    拡張子と Content-Type を分けた考えは発想しなかったです。... orz

    Kanatoko wrote on 2007-6/27(水) 18:46:57
    >> →→ IE はファイル内容をチェックしているというよりも、
    >> ・content-type で指定したレンダリングエンジンに渡す。
    >
    >http://www.jumperz.net/index.php?i=6&threadId=71731176885492916
    >で某氏が書かれている内容によると、まず拡張子が関係している可能性があるよ
    >うです。
    >
    >--引用--
    >
    >拡張子確認 -> 標準の拡張子 ?
    >(1 標準の拡張子毎のライブラリに丸投げ -> エラーなし ?
    > (1 標準の拡張子毎の処理)
    > :
    > (0 内容推測 -> 推測した拡張子毎のライブラリに丸投げ)
    >)
    >:
    >(0 内容推測 -> 推測した拡張子毎のライブラリに丸投げ)
    >
    >--引用ここまで--

    以上、よろしくお願いします
    2007-6/27(水) 20:54:22 作成開始

    -----------------------------------------------------
    佐名木 智貴(Tomoki Sanaki)
    E-mail=active@…
    PGP FingerPrint
    = 34E5 2A31 45C8 2CB5 3CED 0B46 F328 A402 7182 DCC6

  • MLNo.659   さん  (1) 2007/06/28 16:11  [メール表示する]
    はせがわです。

    On 6/27/07, Kanatoko wrote:
    > IEのContent-Type無視の挙動って、拡張子だのContent-Typeだのレジストリだの
    > (?)レスポンスボディの内容だのが関係あるみたいで、個人的にいまいち整理
    > しきれていません。

    いちおう、MSのドキュメント的には
    「MIME Type Detection in Internet Explorer」
    http://msdn2.microsoft.com/en-us/library/ms775147.aspx

    「Handling MIME Types in Internet Explorer」
    http://msdn2.microsoft.com/en-us/library/ms775148.aspx

    というあたり(特に前者)があります。以下、前者のドキュメントを
    もとにした話です。

    IEではContent-Type: を元に「既知」「未知」「不明瞭」の3タイプに
    分類し、さらに
    - レスポンスのContent-Type: ヘッダ
    - URLを基にしたファイル名拡張子
    - コンテンツの内容
    - レジストリの設定(MIMEとファイルタイプ、アプリケーションの関連付け)
    の4つの情報と合わせてファイルタイプを判断するようです。

    既知、未知、不明瞭は
    既知 - ハードコードされた(現在は26種類)のMIMEタイプ
    未知 - 既知、不明瞭以外
    不明瞭 - text/plain, application/octet-stream, null, empty
    ということだそうで。text/plain は「不明瞭」に分類されます。

    ただし、この文書もあちこちに "typically" と書かれていること
    から、例外的な動作はあちこちにあるのではないかと思います。

    例えば、レジストリに登録されていない Content-Type: を返した
    場合は、1.で示される
    If the "suggested" (server-provided) MIME type is unknown
    (not known and not ambiguous), FindMimeFromData immediately
    returns this MIME type as the final determination.
    になり、ダウンロードダイアログが表示されるはずなのですが、
    実際には PATH_INFO に /*.html を付加し、なおかつ内容もHTMLと
    判断可能な場合には、HTMLだと判断されてXSSすることがあります。

    また、「既知」に挙げられている26種のMIMEタイプに対しても、
    このリスト内での優先順位が不明なので、image/bmp が(ちゃんと
    BMPファイルとして正しくても)HTMLと解釈されることがあるのは
    ご存知のとおりだと思います。

    # image/png がないぢゃん…。

    > ところでIE7もIE6と同じような動作なのでしょうか?

    今のところ動作上の違いはよくわかりません。
    が、少なくとも RSS/Atom に対応したということで、
    application/rss+xml などに対する関連付けがレジストリに
    増えている、ということは確認しました。

    --
    HASEGAWA Yosuke
    yosuke.hasegawa@…

  • MLNo.735   sanakiさん  (0) 2007/12/06 12:49  [メール表示する]
    佐名木という者です。

    先日「IE の HTTP レスポンスの Content-Type を優先しない」
    件で、どうしようもなくなった対象をセキュリティ監査してしまいました。

    この仕様は、極悪でサーバからの Content-Type を最優先で評価するように
    改めるべきだと考えます。
    (IE7 だけではなく、現役の全ての IE について仕様変更すべきだと思います)

    =================
    例1
    -----------------
    対象 : 企業向けのクライアント−サーバ・システム
    クライアント : 自作 (Web ブラウザではない)
    通信 : HTTP
    データ書式 : ただのテキスト(CSV 形式)
    クライアント→サーバのデータ渡しは POST/GET(Query)
    サーバ→クライアントのデータ渡しは HTTP レスポンス・ボディに
    CSV 形式のテキスト
    環境 : 認証はあるが、インターネット環境であるため、
    クライアントのアドレス制御などが困難な状況

    このようにした利点は、サーバ側プログラムに Web アプリ開発経験が生かせる。
    Web サーバ/Web アプリ・サーバのトランザクション管理やデータベース接続機能などが
    使える。
    顧客先の FW も通信の邪魔にならない。

    -----------------
    このシステムのサーバに、インターネット上の IE が間違って
    アクセスすると、XSS 問題が発現してしまう。
    → クライアントのアドレス制御ができないので、発生する可能性がある。
    一応、Content-Type: text/plain にしている。
    → XSS 対策のために HTML エスケープするのは何か筋違い。
    →→ 配布したクライアントを修正する必要がある。(HTML デコード機能を追加する必要がある)

    (そもそもtext/plain なのに HTML エンコード/デコードって話が出る自体が異常だと思う)


    =================
    例2
    -----------------
    対象 : 研究者向け科学計算 CGI
    概要 : 研究者向けの科学計算プログラムであるため、
    入力/出力ともテキスト形式のファイル/または標準出力
    CGI は (1)→(2) の順で実行される
    (1.) プログラムを実行し、結果をテキストファイルとして出力
    (2.) 出力ファイルを読み出し、Web ブラウザ上にグラフィカルな
    グラフ/表を表示する
    (**) テキストファイル自体も研究者が後で個別に料理しやすいように
    閲覧/ダウンロードできるようにしている

    -----------------
    (1.) で出力したテキストファイルを画面に表示する際に XSS 問題が発現する。
    HTML 形式の出力ファイルではないので、Content-Type: text/plain にしている。
    → XSS 対策のために HTML エスケープするのは何か筋違い。
    →→ XSS 対策のために HTML エスケープすると計算結果がおかしくなる。
    ダウンロード後に HTML デコードを行なう必要がある。
    (text/plain なのに HTML エンコード/デコードって話が出る自体が異常だと思う)

    =================

    HASEGAWA Yosuke wrote on 2007-6/28(木) 16:11:35
    >On 6/27/07, Kanatoko wrote:
    >既知、未知、不明瞭は
    > 既知 - ハードコードされた(現在は26種類)のMIMEタイプ
    > 未知 - 既知、不明瞭以外
    > 不明瞭 - text/plain, application/octet-stream, null, empty
    >ということだそうで。text/plain は「不明瞭」に分類されます。
    >
    >ただし、この文書もあちこちに "typically" と書かれていること
    >から、例外的な動作はあちこちにあるのではないかと思います。

    text/plain は「不明瞭」ではなくて、「メモ帳(テキストエディタ)」に分類して欲しいです。

    以上、よろしくお願いします
    2007-12/6(木) 12:24:42 作成開始

    -----------------------------------------------------
    佐名木 智貴(Tomoki Sanaki)
    E-mail=active@…
    PGP FingerPrint
    = 34E5 2A31 45C8 2CB5 3CED 0B46 F328 A402 7182 DCC6




メールへの返信はMLのメンバーしかできません。
4LDK超ってこんなに広い?/SUUMO