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, すばらしい洞察)
10/26の日記の記述 [fuga.jp]に入れてあるのですが、mshtml.dllのレベルでは展開は行わないようです。mshtml.dllをくるんでるシェル部分が展開して、mshtml.dllに渡しているみたいです。
参考例としては、IE以外をデフォルトブラウザに設定した状態で、「ファイル名を指定して実行」に環境変数入り展開の入ったURLを流しこんでみてください、この状態でfirefoxであってもその時点で展開済みになっています。また、metaタグで転送させる時に環境変数展開入りのURLであっても展開されていません。
このことから、悪意のある人が「コピペによる環境変数入りのURLの入力」を被害者にやらせないかぎり被害を受けることはないでしょう。
-- やさいはけんこうにいちば〜ん!
Re:どこからがIEなのか (スコア:3, 興味深い)
ttp://www.pbh.jp/cgi-bin/t.cgi?name=%username%
Re:どこからがIEなのか (スコア:1)
#何がセキュリティ上問題なのかぜんぜんわからない
Re:どこからがIEなのか (スコア:1)
メールにこの URL を仕込んでおくと…とか。
Re:どこからがIEなのか (スコア:1)
何でもできちゃいますよ?
#ほんとに何がまずいんだろ
Re:どこからがIEなのか (スコア:1, すばらしい洞察)
まあ、コマンドラインなら環境変数が展開されるのは当然だけど、「ファイル名を指定して実行」がそうなるというのはわからない人もいると。そしてさらには、IEのアドレスバーに入れたときにまでそうなるとは、たいていの人は想像が及ばないよね、と。
Re:どこからがIEなのか (スコア:1, 参考になる)
%windir%
=>Windowsのフォルダが開いた(環境変数が展開された)
%windir%\system32
=>Windowsのシステムフォルダが開いた(環境変数が展開された)
http://www.google.com/search?q=%windir%
=>指定したURLが開かれた(環境変数が展開されなかった)
notepad %windir%
=>notepad曰く「%windir%.txtが見つかりません」(環境変数が展開されなかった)
先頭以外では展開されないっぽい。
XP SP2では全て展開 (スコア:2, 参考になる)
http://www.google.com/search?q=%windir%
=>C:\WINDOWSの検索結果が開かれた(環境変数が展開された)
notepad %windir%
=>notepad曰く「アクセスが拒否されました」(環境変数が展開された)
Re:どこからがIEなのか (スコア:1)
アプリ自体に問題が無くても。
意図しないアプリが起動されてしまうとか、そういう話ではない。
Re:どこからがIEなのか (スコア:1)
>手作業でコピーしてInternet Explorerのアドレスバーにペーストしてアクセスすると、
>Windowsのログインユーザ名がアクセス先に送信されてしまうという。
>ただし、リンクをたどってジャンプしたときにはこの現象は起きない。
#なんかI.E.の話になると脊髄反射が増えるなあ。
Re:どこからがIEなのか (スコア:2, すばらしい洞察)
Re:どこからがIEなのか (スコア:2, 参考になる)
問題ありませんでした。
::ShellExecute( NULL , NULL , "http://www.yahoo.co.jp/%temp%" , NULL , NULL , 0);
環境は、 win2000 / IE6 .
ShellExecute が問題ないということは、
大抵のソフトでは問題がないと思うのですがどうでしょうか?
Re:どこからがIEなのか (スコア:1)
「たら」「れば」
で語られても困るんですが。
#I.E.叩きたいだけちゃうんかに1票
普通、環境変数は展開されないはずです。 (スコア:1)
ただの引数と理解されるので関係ない気がします。
# IE叩きたいだけじゃ?とか思ってしまったのでID
Re:どこからがIEなのか (スコア:1)
それに対して#648698 [srad.jp]や#648782 [srad.jp]のように言うならばいいのですが#648563 [srad.jp]ではその疑念に対して答になってない、という指摘なのですが。
実験してみました (スコア:4, 興味深い)
http://.(途中略)..%3e%af...
にアクセスしたら
http://..........hogeaf....
に展開されました。
よって、16進数表記できる環境変数に大事な情報はつめちゃいけないですね
Re:実験してみました (スコア:2, すばらしい洞察)
セキュリティ云々は置いとくとして,"%" で囲まれた文字列と同名の環境変数が設定されていた場合にそれが展開されてしまうと,URL が意図せぬ結果になって困るような.
「ファイル名を指定して実行」もしくは「IE のアドレスバーに入力 (ペースト)」で URL エンコードされた文字列を含む URL を渡すのは潜在的に (意図した結果が得られない可能性があるという意味で) 安全でないということですかね.
Re:添削してみました (スコア:1)
と書けばよかったんですね。
Re:実験してみました (スコア:1)
統合させた結果がこうなっているだけで、
MSが「仕様」と言うのは特におかしくない。
(それが正しい挙動かどうかは別問題)
>逆に、環境変数に適当な値を設定してユーザの意図しないページ
>へ誘導する事もできるという訳だ。
と言うか、そもそもどうやってリモートから環境変数を設定するのだろう…。
#なんかここまでくると無理矢理な感じがアレだなあ。
#これも/.Jだから仕方がないってことなのか?
ユースケースを考えてみる (スコア:3, おもしろおかしい)
.......................集計中です。しばらくお待ちください。
3,141,592,653 Administrator
-----------+---------------
3,141,592,653 Total
administrator (スコア:1)
タブブラウザでは無効? (スコア:2, 興味深い)
IE6では有効なので、純粋なIE限定の機能なのでしょうか。
IEとエクスプローラで動作を共通化させるためのものでは?
# とはいえ、やはりIEでは使えないようにしたほうが安全だと思うが……。
Re:タブブラウザでは無効? (スコア:2, 参考になる)
Re:タブブラウザでは無効? (スコア:2, 興味深い)
IE はエクスプローラ「でもある」シロモノなので (現状)、この動作は機能であって脆弱性ではない、という Microsoft の見解は、妥当ではあると思います。
http: などのスキーマから始まる名前がパスとして指定された場合は環境変数に展開しない、などの改善案はありそうな気がしますが、盛り込まれるとすれば次世代 Windows の新機能として、って感じでしょうかね。
# そもそもエクスプローラがアドレス欄内で環境変数を展開してくれて嬉しいのか? という疑問もありますが。。。
むらちより/あい/をこめて。
Re:タブブラウザでは無効? (スコア:1)
通常のURLと思ってIEのアドレスバーに入力したら思ったのと違う挙動をし、その結果として環境変数の値が出ていく可能性があるということですから。
Re:タブブラウザでは無効? (スコア:1)
シェルですか。エクスプローラをシェルであると意識して利用している Windows ユーザーが果たしてどれほどいらっさることでしょうか? 環境変数が作用して欲しいと思うほど、エクスプローラをシェルとして利用しているユーザーはごく稀ではないでしょうか?
Active Desktop が導入され、IE とエクスプローラとファイルウィンドウが全て完全に同じものになる以前から、エクスプローラはファイラーとして (歴史的にはファイルマネージャの代用品として) 使用されてきたように思います。アドレスバーもローカルファイルを扱う際には基本的には現在のフォルダ名を表示するためのものであって、ローカルフォルダを指定するのにアドレスバーへ直接名前を入力するような使われ方は一般的ではないように思います (2000 や XP になって、入力中の補完がされるようになって便利にはなってきていますが)。
いやらしいことを言うと、Windows ではファイル名に % を使用することができます。 %username% のような名前のフォルダを作ることも可能です。このフォルダは、エクスプローラ上でアイコンをダブルクリックしてやれば普通に開くことができますし、ショートカットを作成して、そこから開いてやることももちろん可能です。なので、通常はこのような名前のフォルダがあっても全く困ることはありません。でも、アドレスバーからこの名前のフォルダを選択しようとすれば、恐らくそこで表示されるエラーメッセージに腹立たしい思いをすることになるでしょう。
エクスプローラのアドレスバーは、ファイル名を直接 (フルパスで) 指定してそのファイルを開く (もしくは実行する) ことは可能ですが、「ファイル名を指定して実行」ダイアログのように、引数を指定しての実行や、(環境変数 PATH が通っていることを前提とした) コマンドの呼び出しはできません。そのようなものが、環境変数だけは展開して処理すると言うのは、あまりにも中途半端な動作であるように思います。
むらちより/あい/をこめて。
脆弱性云々をおいといても (スコア:2, すばらしい洞察)
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ブラウザ的に許容される動作ではないでしょ。
# シェル的には当然の機能、とかいう話とは別問題。
Re:太字をするとこ間違ってる? (スコア:1)
#MSブラウザに何も期待しとらんけど、あえて、w3m をシェルから起こせば問題ない(当然ユーザが管理すべきである)というなら、
#MSブラウザはどこでどう解釈されるかわかったもんじゃないから信じられるもの以外はクリックするな、それができないなら使うな、
#って論なら納得できるっす。w3m だって、引数は URL、シェル変数?何それ、と思っているユーザだって多いかも知れんすよ?
みんつ
なにをいまさら、 (スコア:2, すばらしい洞察)
そんなことはIEとエクスプローラを一体化したときにすでに指摘されていたこと。
エクスプローラは単なるファイラじゃなくてシェルの機能を持ち合わせているわけだから、環境変数を展開できて当たり前。
エクスプローラとIEを分けること、これをすればIEの脆弱性がOS全体に脅威を与える可能性はかなり低くなる。
大体、マイコンピュータやミ田+Eからhtmlを見る人がどれだけいるんだろうか?
%TEMP% (スコア:1)
屍体メモ [windy.cx]
Re:%TEMP% (スコア:1)
まさかfileプロトコル以外でも展開されるとは思わなかった。
要するにあんまり深く考えてなかったけど実は危ないかも、と。
1を聞いて0を知れ!
Re:%TEMP% (スコア:1, すばらしい洞察)
猛反発した側の正しさが少し表に出てきたってことだな。
Re:%TEMP% (スコア:1)
名物に旨いものなし!
Re:%TEMP% (スコア:1, 参考になる)
その別ユーザでログオン後、エクスプローラのフォルダオプション→表示タブの詳細設定「別のプロセスでフォルダウインドウを開く」をチェックしておけば、別ユーザ実行でも起動できるようになります。
2ちゃんで流行るじゃないの (スコア:1, おもしろおかしい)
このアドレスから.....
そんなfushianaさんが増えそうな予感
シェルの脆弱性? (スコア:1)
ユーザの自衛策としては、怪しげなURLをコピー・ペーストで手入力するのは危ないということになります。
脆弱性ではなかったとして、かなりシェルが余計なことをしてくれてる気がするが、それは気のせいだろうか?
Re:シェルの脆弱性? (スコア:2, おもしろおかしい)
wget http://hogehoge.com/test.cgi?name=test&data=123
とかやってwgetをバックグラウンドで動かしたことが何度も。
リファラ弾きにみせかける (スコア:1)
サイトを参照する場合、回避する為に「URLをコピペして~」云々
なんて表記はありがち。
リファラで蹴られたと勘違いした利用者が
毒入URL踏む可能性は多分にありそうだなぁ。恐い^2。
貝殻 (スコア:1)
InternetExplorerってExplorerの前にInternetがついただけじゃん!
Shellなら当然の機能なんじゃない?
クイックサーチをIEで (スコア:1)
http://www.google.co.jp/search?ie=shift_jis&oe=shift_jis&q=
という値を設定しておいてアドレスバーに
%google%ぱんだ
とやると「ぱんだ」の検索ができるようになるんだろうか。今確認できないから誰か確認して。
#できても%は打ちづらいなぁ。URIをIMEで単語登録したほうが楽か。
Re:クイックサーチをIEで (スコア:2, 参考になる)
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl\g]
@="http://www.google.com/search?hl=ja&ie=Shift_JIS&oe=Shift_JIS&lr=lang_ja&q=%s"
" "="+"
"%"="%25"
"&"="%26"
"+"="%2B"
"#"="%23"
"?"="%3F"
"="="%3D"
"|"="%7C"
そんな君はレジストリにこれをぶち込んでIEのアドレスバーに
「g SearchUrl」とか入れてenterキーを押してみるべきだ。
IE系のタブブラウザでもだいたい使えるぞ。
Re:クイックサーチをIEで (スコア:1)
これ [google.com]ではだめなのでしょうか。
Re:クイックサーチをIEで (スコア:2, おもしろおかしい)
ゴッゴル [seo-association.com]だ,と思ってしまった.
# 最早,病的
旅に出ます.(バグを)探さないで下さい.
総括すると (スコア:1)
そして従来、対象のファイルのフルパスがわからないと被害に遭う事はないとされてきたセキュリティ上の欠陥と組み合わせ、その対象ファイルが環境変数で得られるパス+固定の相対パス上に存在するものであれば被害の拡大を後押ししかねないという事。
書き直し (スコア:1)
http://test:%UserProfile%@hoge.foo.com/ などという形リンク先を表現しておけば、対象のPCで環境変数で設定されているフォルダのフルパスが得られるという事。
そして従来、対象のファイルのフルパスがわからないと被害に遭う事はないとされてきたセキュリティ上の欠陥と組み合わせ、その対象ファイルが環境変数で得られるパス+固定の相対パス上に存在するものであれば被害の拡大を後押ししかねないという事。
Re:総括すると (スコア:1)
過去の脆弱性でローカルファイルにリモートからアクセスできるものがあったよな。その中で任意のモノにアクセスできるものについては危険度が高いという事で早めのパッチ提供もされたし危険度も高く位置づけられた。
パスが分かっていないと意味がないモノについては少なくとも危険度が低く位置づけられたりもした。
「環境変数と固定の相対パスで辿れる」ものは既にフルパスが得られている?
AdministratorとAllUsersなどのデフォルトで作成されるアカウントについてはフルパスで固定だわな。
それ以外にもアプリによっては固定アカウントを作るモノがあるけど、それを除いたそれ以外の任意アカウントは? 既に得られているわけ? リモートから分かる形で?
それが分かるってんなら、デフォルトとは異なるディレクトリパスでインストールしたり Administrator アカウントをリネームするなんて何の意味もないね。
AllUsers はアカウントじゃなかったね (スコア:1)
Re:総括すると (スコア:1)
公開したくないファイルにリモートからアクセスできただけで重要度は別にして立派なセキュリティホールなわけ。
それがパスが分からないと意味がないというのは、システム関連は殆ど固定パスだから、それ以外のモノで、且つ書き換えを狙っているとは限らないって事。読まれてしまう事だって十分問題なわけ。
システム付属とかアプリの付属のバイナリはリネームしたり書き換えできなければ何も問題はない。
問題なのは例えば My Documents の下に固定のファイル名で日記を保存するアプリがあったとして、ユーザー名が得られれば脆弱性と組み合わせてリモートからフルパスで読まれるかもしれない。
固定のファイル名でメールのインデックスを作成しているようなメールソフトであればそのインデックスを読み込む事で個々のメール本文のファイル名を得る事も可能だし、そうすると勝手にメールを読まれてしまう。
十分問題でしょ。
Re:総括すると (スコア:1)
それに俺はあくまでも「組み合わせて」と書いてた筈なんだけど。
従来なら「リモートのファイルが読めるだけ」だけど単独ではフルパスが分からないと問題がないという事で軽く見られがちだったセキュリティホールでも読む対象を広げる事が出来ると言っているわけ。
IEやMozillaなどであったでしょ「リモートのファイルが読めるだけ」のセキュリティホール。
Re:総括すると (スコア:1)
というのはコピペとは限らない可能性があると、他の書き込みを見て思ったが、確認してなかった。
いろいろ実験した結果、コピペ以外では展開されない(コピペ=シェル機能だから当然)事を確認しました。
リモートアクセス出来ている時点で問題なのは当然。
けど、その中でも重要度が比較的低く位置づけられてきた「指定パスのファイルを読めるだけ」のセキュリティホールをこの環境変数展開機能が可用性を高めてくれると(リンクのURLに含めるだけで機能できると確認をしないで思いこんでいた)いう事で厄介な存在だなと暴走してました。
あとは clipboardData を使って自動処理させる事もできないのであれば特に問題ではないですね。