パスワードを忘れた? アカウント作成
9167 story

IEにWindowsの環境変数を漏らしかねない機能 100

ストーリー by wakatono
仕様かもしれないが…余計すぎる 部門より

jbeef曰く、"「TOTORO(トトロ)の自堕落日記」10月26日のエントリによると、「http://www.pbh.jp/cgi-bin/t.cgi?name=%username%」というURLを、手作業でコピーしてInternet Explorerのアドレスバーにペーストしてアクセスすると、Windowsのログインユーザ名がアクセス先に送信されてしまうという。ただし、リンクをたどってジャンプしたときにはこの現象は起きない。
実際にやってみると、アクセス後のIEのアドレスバーで、「%username%」の部分がユーザ名に展開されていることがわかる。どうやら、アクセス前にIEがこの展開を行うようだ。「%username%」という記法は、Windows内でWindowsの環境変数を参照するもので、バッチファイルなどで使われているが、IEでも使えてしまうということらしい。同日記のコメント欄によると、「MSはこの現象を脆弱性として認めてません」とのこと。発見者と思われる、「luminのコードメモ」によると、「特に実害が発生するわけではないらしい」とされているが、これがMicrosoft社の見解なのだろうか。
ユーザの自衛策としては、怪しげなURLをコピー・ペーストで手入力するのは危ないということになる。"

脆弱性ではなかったとして、かなりIEが余計なことをしてくれてる気がするが、それは気のせいだろうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • どこからがIEなのか (スコア:5, すばらしい洞察)

    by densuke (113) on 2004年11月05日 17時14分 (#648382) 日記
    私もこの日記を読んで、自分なりに確認してみてました。
    10/26の日記の記述 [fuga.jp]に入れてあるのですが、mshtml.dllのレベルでは展開は行わないようです。mshtml.dllをくるんでるシェル部分が展開して、mshtml.dllに渡しているみたいです。

    参考例としては、IE以外をデフォルトブラウザに設定した状態で、「ファイル名を指定して実行」に環境変数入り展開の入ったURLを流しこんでみてください、この状態でfirefoxであってもその時点で展開済みになっています。また、metaタグで転送させる時に環境変数展開入りのURLであっても展開されていません。

    このことから、悪意のある人が「コピペによる環境変数入りのURLの入力」を被害者にやらせないかぎり被害を受けることはないでしょう。
    --
    -- やさいはけんこうにいちば〜ん!
    • by LARTH (14573) on 2004年11月05日 18時45分 (#648450) 日記
      こんな感じの記述があれば、「コピペによる環境変数入りのURLの入力」をやってしまう可能性は高いと思います。
      ttp://www.pbh.jp/cgi-bin/t.cgi?name=%username%
      親コメント
    • by maty (3877) on 2004年11月05日 18時06分 (#648406)
      バッチファイルでいけなかったほうが困ります。

      #何がセキュリティ上問題なのかぜんぜんわからない
      親コメント
    • ただの憶測で未検証だが、ブラウザ (or IE) を起動するアプリに危険なのがあるかも知れない。
      メールにこの URL を仕込んでおくと…とか。
      親コメント
      • by maty (3877) on 2004年11月05日 18時24分 (#648423)
        アプリを動かした段階でフォーマットから内部データ送信から
        何でもできちゃいますよ?

        #ほんとに何がまずいんだろ
        親コメント
        • Re:どこからがIEなのか (スコア:1, すばらしい洞察)

          by Anonymous Coward on 2004年11月05日 18時33分 (#648436)
          httpで始まるURLを「ファイル名を指定して実行」に入れる行為はこれまでは安全と思う人が多かった(?)が、そうではないということですかね。

          まあ、コマンドラインなら環境変数が展開されるのは当然だけど、「ファイル名を指定して実行」がそうなるというのはわからない人もいると。そしてさらには、IEのアドレスバーに入れたときにまでそうなるとは、たいていの人は想像が及ばないよね、と。
          親コメント
          • by Anonymous Coward on 2004年11月06日 1時03分 (#648659)
            「ファイル名を指定して実行」してみた。

            %windir%
            =>Windowsのフォルダが開いた(環境変数が展開された)

            %windir%\system32
            =>Windowsのシステムフォルダが開いた(環境変数が展開された)

            http://www.google.com/search?q=%windir%
            =>指定したURLが開かれた(環境変数が展開されなかった)

            notepad %windir%
            =>notepad曰く「%windir%.txtが見つかりません」(環境変数が展開されなかった)

            先頭以外では展開されないっぽい。
            親コメント
            • by ysksnd (17528) on 2004年11月06日 19時28分 (#649011) 日記
              XPのSP2では、全部展開されましたよ。

              http://www.google.com/search?q=%windir%
              =>C:\WINDOWSの検索結果が開かれた(環境変数が展開された)

              notepad %windir%
              =>notepad曰く「アクセスが拒否されました」(環境変数が展開された)
              親コメント
        • アプリが URL をクリッカブルにしていれば、コピー & ペーストより危険性が高まる可能性がある。
          アプリ自体に問題が無くても。
          意図しないアプリが起動されてしまうとか、そういう話ではない。
          親コメント
  • by Anonymous Coward on 2004年11月05日 19時42分 (#648492)
    環境変数3eにhogeを設定して

    http://.(途中略)..%3e%af...

    にアクセスしたら

    http://..........hogeaf....

    に展開されました。

    よって、16進数表記できる環境変数に大事な情報はつめちゃいけないですね
    • Re:実験してみました (スコア:2, すばらしい洞察)

      by pukupun (9919) on 2004年11月05日 20時52分 (#648514)

      よって、16進数表記できる環境変数に大事な情報はつめちゃいけないですね

      セキュリティ云々は置いとくとして,"%" で囲まれた文字列と同名の環境変数が設定されていた場合にそれが展開されてしまうと,URL が意図せぬ結果になって困るような.

      「ファイル名を指定して実行」もしくは「IE のアドレスバーに入力 (ペースト)」で URL エンコードされた文字列を含む URL を渡すのは潜在的に (意図した結果が得られない可能性があるという意味で) 安全でないということですかね.

      親コメント
  • by Anonymous Coward on 2004年11月05日 17時18分 (#648386)
    %username%をurlに仕込んで、login user nameを収集するwormを流したとする。

    .......................集計中です。しばらくお待ちください。

    3,141,592,653 Administrator
    -----------+---------------
    3,141,592,653 Total
  • by karia (12363) on 2004年11月05日 18時16分 (#648413) ホームページ
    いつも使ってるDonut Pで試してみましたが効きませんでした。
    IE6では有効なので、純粋なIE限定の機能なのでしょうか。
    IEとエクスプローラで動作を共通化させるためのものでは?

    # とはいえ、やはりIEでは使えないようにしたほうが安全だと思うが……。
    • by Anonymous Coward on 2004年11月05日 20時30分 (#648508)
      展開するのは、mshtml.dllの仕様じゃないからです。 つまりIEコンポーネントブラウザは影響を受けない。
      親コメント
    • IE はエクスプローラ「でもある」シロモノなので (現状)、この動作は機能であって脆弱性ではない、という Microsoft の見解は、妥当ではあると思います。

      http: などのスキーマから始まる名前がパスとして指定された場合は環境変数に展開しない、などの改善案はありそうな気がしますが、盛り込まれるとすれば次世代 Windows の新機能として、って感じでしょうかね。

      # そもそもエクスプローラがアドレス欄内で環境変数を展開してくれて嬉しいのか? という疑問もありますが。。。

      --
      むらちより/あい/をこめて。
      親コメント
      • by ttm (8278) on 2004年11月06日 5時42分 (#648742)
        むしろ、エクスプローラとIEを同じソフトウェアにしていること自体の脆弱性が露見した、ということでしょう。

        通常のURLと思ってIEのアドレスバーに入力したら思ったのと違う挙動をし、その結果として環境変数の値が出ていく可能性があるということですから。
        親コメント
  • by seoth (17664) on 2004年11月06日 0時41分 (#648646)
    バグには違いないような。

    http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&c2coff=1&q=%89A%97z&lr=lang_ja

    を開くと、普通は「陰陽」というキーワードでググった検索結果が出ます。が、
    環境変数「89A」に「ああああああ」を設定して、先のURLをアドレスバーから開くと
    「ああああああ97z」の検索結果になります。
    流石にこれはWebブラウザ的に許容される動作ではないでしょ。

    # シェル的には当然の機能、とかいう話とは別問題。
  • なにをいまさら、 (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2004年11月06日 8時29分 (#648754)
    いってるんだよ。
    そんなことはIEとエクスプローラを一体化したときにすでに指摘されていたこと。
    エクスプローラは単なるファイラじゃなくてシェルの機能を持ち合わせているわけだから、環境変数を展開できて当たり前。
    エクスプローラとIEを分けること、これをすればIEの脆弱性がOS全体に脅威を与える可能性はかなり低くなる。
    大体、マイコンピュータやミ田+Eからhtmlを見る人がどれだけいるんだろうか?
  • by Livingdead (18685) on 2004年11月05日 17時16分 (#648384) ホームページ 日記
    エクスプローラのアドレスバーに %TEMP% なんて入力して C:\Windows\Temp を開くなんてことをよくやっていた自分としては、え?それって、当たり前じゃ?って気がしました。
    --
    屍体メモ [windy.cx]
    • by greentea (17971) on 2004年11月06日 5時51分 (#648743) 日記
      展開されることは知ってたけど、普段から%だらけのURL見てるせいか、
      まさかfileプロトコル以外でも展開されるとは思わなかった。

      要するにあんまり深く考えてなかったけど実は危ないかも、と。
      --
      1を聞いて0を知れ!
      親コメント
  • by Anonymous Coward on 2004年11月05日 18時40分 (#648444)
    ttp://www.2chnet.ne.jp/test/bbs.cgI?name=%username%

    このアドレスから.....

    そんなfushianaさんが増えそうな予感
  • 「http://www.pbh.jp/cgi-bin/t.cgi?name=$USER」というURLを、手作業でコピーして、シェルのプロンプトに w3m と入力した後にペーストしてアクセスすると、UNIXでのログインユーザ名がアクセス先に送信されてしまいます。

    ユーザの自衛策としては、怪しげなURLをコピー・ペーストで手入力するのは危ないということになります。

    脆弱性ではなかったとして、かなりシェルが余計なことをしてくれてる気がするが、それは気のせいだろうか?
  • referer によるアクセス制限(自サイト以外からのリンクを蹴る)が有る
    サイトを参照する場合、回避する為に「URLをコピペして~」云々
    なんて表記はありがち。

    リファラで蹴られたと勘違いした利用者が
    毒入URL踏む可能性は多分にありそうだなぁ。恐い^2。
  • by wallaby (21955) on 2004年11月05日 22時09分 (#648547)
    WindowsのShellってExplorerでしょ?
    InternetExplorerってExplorerの前にInternetがついただけじゃん!
    Shellなら当然の機能なんじゃない?
  • by ruto (17678) on 2004年11月05日 23時21分 (#648597) 日記
    googleという名前の環境変数に
    http://www.google.co.jp/search?ie=shift_jis&oe=shift_jis&q=
    という値を設定しておいてアドレスバーに
    %google%ぱんだ
    とやると「ぱんだ」の検索ができるようになるんだろうか。今確認できないから誰か確認して。

    #できても%は打ちづらいなぁ。URIをIMEで単語登録したほうが楽か。
  • by SAY (54) on 2004年11月06日 20時01分 (#649028) 日記
    http://test:%UserProfile%@hoge.foo.com/ などという形リンク先を表現しておけば、ユーザーPCの任意のフォルダのフルパスが得られるという事。
    そして従来、対象のファイルのフルパスがわからないと被害に遭う事はないとされてきたセキュリティ上の欠陥と組み合わせ、その対象ファイルが環境変数で得られるパス+固定の相対パス上に存在するものであれば被害の拡大を後押ししかねないという事。
    • by SAY (54) on 2004年11月06日 20時03分 (#649030) 日記
      任意じゃないね。

      http://test:%UserProfile%@hoge.foo.com/ などという形リンク先を表現しておけば、対象のPCで環境変数で設定されているフォルダのフルパスが得られるという事。
      そして従来、対象のファイルのフルパスがわからないと被害に遭う事はないとされてきたセキュリティ上の欠陥と組み合わせ、その対象ファイルが環境変数で得られるパス+固定の相対パス上に存在するものであれば被害の拡大を後押ししかねないという事。
      親コメント
typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...