WindowsのGDI+にバッファ オーバーラン脆弱性 60
ストーリー by GetSet
悪用される前に塞いでおこう 部門より
悪用される前に塞いでおこう 部門より
Anonymous Coward 曰く、 "セキュリティホール memo経由、Microsoftセキュリティガイダンスセンターの発表(MS04-028)より。
WindowsのコンポーネントであるGDI+に、バッファオーバーランにより「JPEG ファイルを用いて任意のコードを実行させることが可能」となる脆弱性が発見された。Microsoftのアナウンスでは「最大深刻度 : 緊急」となっている。
影響の有無やセキュリティホールが完全に塞がったのかどうかの判断がやや複雑だが、
- バージョン 5.1.3102.1355 以前の Gdiplus.dll
- バージョン 10.0.6714.0 より前の Mso.dll
- バージョン 6.0.2800.1411 より前の Vgx.dll
今回の件を理由にして (スコア:3, おもしろおかしい)
#「ツール」→「インターネットオプション」→「ファイルの削除」ですよ(ぼそ
オフトピックですが面白かったので (スコア:3, おもしろおかしい)
・・・Microsoftセキュリティガイ
ダンスセンター・・・
Microsoft Security Guy Dance Center
『バージョン 5.1.3102.1355 以前』? (スコア:2, すばらしい洞察)
でも、よく寄せられる質問 [microsoft.com]には、 とあるし、以前なのか未満なのか、どっちなんだろう?
# これも別の意味で"DLL HELL"だ…。
Re:『バージョン 5.1.3102.1355 以前』? (スコア:1)
開発で使用しているものなので、ひっそり調査しているのですが、ここ [microsoft.com] の「セキュリティ更新プログラムに関する情報」→「Visual Studio .NET 2003 (《...略》を含む)」→「ファイルに関する情報」を見ると、gdiplus.dll のバージョンは "5.1.3102.1355" となっているのですが、実際にインストールされたっぽい
C:\WINNT\Microsoft.NET\Framework\v1.1.4322\gdiplus.dll
のプロパティを開くと、バージョンは "5.1.3102.1360" となっていて、日付とかも結構違ったりしている。
# つか、今ごろ発表されたにしては随分古い日付だよなぁ (^_^;
んで、本当にこのファイルなのかなぁとか思って、さっきのページのすぐそばに書いてある「レジストリ キーの確認」ってところにあるレジストリ キーを見てみたんだけど、インストールしたファイルのパスどころか、ファイル名すら書かれていなかったり。
。。。ねぇ、この辺り、物凄い勢いで電話で質問しても、インシデント、消費する? >マイクロソフトさま
むらちより/あい/をこめて。
Re:『バージョン 5.1.3102.1355 以前』? (スコア:1)
今、system32 の下を覗いて見たら、先のサイトに記述されていたのと同じバージョン・日付の gdiplus.dll を見つけることができました。 system32 フォルダ自体の更新日時が、アップデートを行なった日時と大体一致するので、多分こっちが実際にインストールされた DLL なのだと思われます。
と、いうことは、 "5.1.3102.1355" 以降が安全、未満はだめ、ってことでいいのかな?
ただ、MS の配布する DLL は、ターゲットにしている OS のバージョンに合わせてバージョン番号を変えていたりすることがあるので、単純にこの番号よりも大きい数字なら大丈夫というものではないのかもしれません (うう、頭痛い +_+/)。
むらちより/あい/をこめて。
Re:『バージョン 5.1.3102.1355 以前』? (スコア:0, おもしろおかしい)
「デリヘル」?
『……チェンジお願いします』とか。
#利用したことはないのでAC
法人のお客様 (スコア:1)
緊急事態を回避するためにServicePack2を適用することもお勧めします。
担当されてる業者さんにとってはそれが緊急事態だったりしますが…
Re:法人のお客様 (スコア:0)
SP2を適用してシステムが動かなくなることもありますからね
SP2適用後、起動不能となるシステムが存在します (スコア:1)
885626 - Windows XP Service Pack 2 のインストールを完了するためにコンピュータを再起動すると、コンピュータが応答を停止する [microsoft.com]
最新の機種でもこんな不具合が発生するので、すぐにWindows XP SP2を適用することは避けるべきです。
Super Souya
Re:SP2適用後、起動不能となるシステムが存在します (スコア:0)
どこがFUD?
GDI (スコア:1, おもしろおかしい)
Re:GDI (スコア:1)
その周辺の設計がええ加減だったということで。
関係ないですが・・・ (スコア:0)
試験実験のおこ足りとそれをフィードバックする環境がなかったことですよ。<本件と違いますが・・・・
Re:GDI (スコア:0)
Re:GDI (スコア:0)
これってXPはSP2必要? (スコア:1)
SP2前提だとすると・・・企業内端末担当者は頭が痛いでしょうね
『今日の屈辱に耐え明日の為に生きるのが男だ』
宇宙戦艦 ヤマト 艦長 沖田十三氏談
2006/06/23 JPN 1 - 4 BRA
Re:これってXPはSP2必要? (スコア:2, 参考になる)
ただ最初からIE6SP1と.NETFramework1.1が入ってたりしますので
さらにKB867801と.NET 1.1 SP3が必要になります。
全てWindowsUpdateから適用可能です。
難易度 (スコア:1)
セキュリティホールを1つ1つ潰していくことより、こういう動作をするdllを
作るほうがずっと難しそうな気がするんだけどなあ。
〜◍
Re:難易度 (スコア:1, すばらしい洞察)
そんなことないでしょ。
うっかりしただけで穴はあくわけで。
Re:難易度 (スコア:1)
メモリ領域チェックを怠っていればいくらでも作れるでしょう。
たとえば、C言語の標準関数であるscanf系の関数を使うという実装が考えられます。
ただ、ソースなしにこの「任意のコードを実行する」までには、それなりの解析が必要で、発見が難しいだけです。
発見が難しいだけで、方法がわかれば、一般的には任意のコードの実行が特別難しいわけではありません。
※アセンブラが難しいとかいう突っ込みはなし
Re:難易度 (スコア:1)
作るの難しいのかなあ?
少なくともGDI+のコードを起こすより簡単そうに思うんだけど。
〜◍
根気は要るよ (スコア:1)
で、メモリはそこから確保。
アクセスするときはデバッグ機能を一緒に使うようなマクロを作り、
それを介して読み書きするようなコーディングで。
あとはそのデバッグ機能の部分でエリアチェックなりヒープヘッダ
調べるなりお好きなように。
--
Ath'r'onならfloatあたりに自信が持てます
Linuxな人も笑ってられない (スコア:1, 興味深い)
gdk-pixbufにも似たような脆弱性が。 [itmedia.co.jp]
Windowsすべて? (スコア:0)
Re:Windowsすべて? (スコア:4, 参考になる)
これを使わない大多数のアプリは影響ありません。
Susie や Mozilla は、自前のjpeg展開エンジンをもっていますし
GDI+ を利用していませんので、影響を受けないと思います
GDI+ には JPEG や PNG のサポートがあり
これを利用している場合にのみ影響を受けると思われますが
GDI+ 自体を利用しているアプリが少ないので
おそらく、そんなに心配することはないかと...
Re:Windowsすべて? (スコア:3, 参考になる)
>おそらく、そんなに心配することはないかと...
.NET Framework の描画系。
VM では GDI+ の引数チェックをしない/できないからごにょごにょ...
Re:Windowsすべて? (スコア:0)
Re:Windowsすべて? (スコア:2, 参考になる)
Macromedia Flash MX2004
Serious Samurize v1.55
つかWindowsUpdateを自動適用してるPCが全て起動時のダイヤログで
停止するので 今、OKボタンを押す作業に追われています。
Re:Windowsすべて? (スコア:2, 参考になる)
この様子だと全マシンで「Gdiplus.dll」を探したほうがよさげですね。
Re:Windowsすべて? (スコア:1, 参考になる)
「Gdiplus.dll」5.1.3097.0
「2ちゃんねるターボ」orz、・・・外そう
「Vgx.dll」 5.1.3097.0
\Common Files\Microsoft Shared\VGX\
Re:Windowsすべて? (スコア:2, 参考になる)
そしたら、.NET配下のディレクトリにあるものは新しいんだけど、system32の下にやたら古い日付のが残ってる…
さらに、以前必要に迫られてインストールしたVisioViewer配下のディレクトリにも、さらにCommon Files\Microsoft Shared\Inkにも古いものが。
自社製品分くらい全部洗ってくれ~
#んで、それぞれを最新のに置き換えて問題ないのだろうか…
Re:Windowsすべて? (スコア:1, 興味深い)
%systemroot%\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.1360_x-ww_24a2ed47
等でしょうか?
私の環境では %systemroot% の中を検索してみただけで古いのが3つ見つかりました。
そのうち2つは %systemroot%\WinSxS\x86_Microsoft.Windows.GdiPlus・・・なのですが、
%systemroot%\system32\gdiplus.dll が 5.1.3097.0 ・・・
DLLの検索順とかで大丈夫なのか、かなりヤバイのかどちらなんでしょうか?
Re:Windowsすべて? (スコア:2, 参考になる)
早速 XP SP1(MS04-028適用済み)で試してみると心配していた通り、
Explorerがクラッシュしました。
%systemroot%\system32\gdiplus.dll が古いバージョンなのが原因だと思います。
MS04-028を当てた方で同じような方おられますか?
Re:Windowsすべて? (スコア:1, 興味深い)
今回の修正がサイド・バイ・サイドのディレクトリやDLLの作成と
それに関連するレジストリの修正のようですね。
サイド・バイ・サイドは良く知らないのですが、
この残っている古いDLLを使用してしまうアプリが無いのか気になります。
また、少なくとも、関連するDLLをロードしているアプリは再起動しないと
セキュリティ・ホールを抱えたままになるわけですが
そういったメッセージって出ませんでしたよね?
# まぁ、私の場合はここ1週間で3回ほど停電しているので
# 攻撃が流行る前にリブートしていたでしょうけど (苦笑)
Re:Windowsすべて? (スコア:1, 興味深い)
今回の更新では修正済みのgdiplus.dllへのリダイレクトを指示する新しい発行元構成ファイルもインストールされるため、通常「間違って」古いSide-by-Side DLLが使用されることはありません。詳しくは以下の資料をご覧ください。
共有アセンブリとアプリケーションへのサービスの提供 [microsoft.com]
「メッセージを出さなかった」のは"Microsoft GDI+ 検出ツール" (あるいはWindows Update) のことでしょうか? このツールはMicrosoftの製品についての検出ツールです。サードパーティー製のアプリケーションはサポートしていません。
また、Windowsのファイルシステムではロード中のDLLの上書きができないため、問題のDLLを使用中のアプリケーションが存在するとDLLを更新できません。
そのため Side-by-Side アセンブリのインストールでは旧バージョンのDLLを上書きするのではなく、バージョンごとに異なるフォルダにインストールを行います。これにより旧DLLを利用中のアプリケーションがあってもSide-by-Sideアセンブリのインストールは正常に終了します。
しかし、古いDLLを利用中のアプリケーションが依然実行中の可能性がありますので、Process Explorer [sysinternals.com]でそのようなアプリケーションを検索し、手動でアプリケーションの再起動を行う必要があるでしょう。
Re:Windowsすべて? (スコア:1, 興味深い)
Side-by-Sideのしくみについては全くといっていいほど知らないので、
少しずつ勉強したいと思います。
そして、新しいフォルダにインストールした後、
Side-by-Side関連のレジストリの修正を行うという理解でよろしいでしょうか?
やはりそうですよね。
3rd party のアプリまでとはいいませんが、このDLLをロードする自社製アプリについては
インストーラでチェックして警告を出して欲しいと思いました。
アップデートしたと安心していて、立ち上げたままのアプリが攻撃される可能性がありますよね。
ExplorerもこのDLLをロードしますし、ログオフせずにサスペンドやスリープにしている人も結構いそうです。
Re:Windowsすべて? (スコア:1)
確かGDI+ってgdiplus.dllを製品に含めた再配布が可能だったと思うのですが、このようにディレクトリ別に置いてある場合、今回のパッチ当てで脆弱性は解消されるのかしらん。
Re:Windowsすべて? (スコア:3, 参考になる)
影響を受けるコンポーネントをインストールしているサードパーティのプログラムをインストールしている場合は、可能性があるらしいです。
Visual Studio .NET 2002、2003、.NET Framework 1.0 SDK SP2 で
開発されたアプリが該当しますね。
厳しいこと言うようやけどな、 (スコア:0)
せやから大丈夫や!
# ……あれ?
Re:厳しいこと言うようやけどな、 (スコア:1)
Microsoft製品なのにパッチのあたらないもの (スコア:3, 参考になる)
GDI+なんてつかったアプリなんかあるわけないやと安心していたが
本記事を見て念のためにハードディスクを漁ってみたら出てきた(T_T)。
昔と違ってWindows MessengerはWindows2000も対応プラットフォーム
になっているのにWindows Updateの検知プログラムには盛り込まれて
いないという罠。
まいくろそふとのあほーーーー。(T_T)
Re:Windowsすべて? (スコア:1, 興味深い)
http://jt.mozilla.gr.jp/projects/svg/build.html [mozilla.gr.jp]
によると、WindowsではSVG テキストと 要素に対応するために、GDI+を使っているようです。
ご指摘のとおりJpegの展開ではこの影響を受けないでしょうが、もしSVGサポートがデフォルトでONになっていたら、Mozilla もどこかで影響受けていたかもしれません。
Re:Windowsすべて? (スコア:0)
http://www.microsoft.com/japan/security/bulletins/ishv_faq.mspx
当分は尾を引きそうですな。
Re:Windowsすべて? (スコア:2, 参考になる)
参照:http://support.microsoft.com/default.aspx?scid=kb;ja;329270 [microsoft.com].
SP2と言い、他のアプリケーションで使っている開発者の方々は
MSの変更でどれだけ頭を悩ませている事やら。
#きっと、可能性っていうのはその辺に落ちているんだけど
#気がつかない物じゃないかなと思う。
Windows Updateで (スコア:0)
なんかGDI+を利用したソフトウェアをWindows Updateが検索をかけてました。
確か4つくらい探してて.NET Framework,Picture It!あたりを探してたのは覚えてるんだけど、
あとは何を探してたっけなぁ...
# 全部覚えてなくて申し訳ないのでAC
VGX.DLL (スコア:0)
C:\Program Files\Common Files\Microsoft Shared\VGX
C:\WINNT\system32\dllcache
にちょうどバージョン6.0.2800.1411のVGX.DLLが見つかったのですが、
これは影響を受けるバージョン?っていうか、最新のVGX.dllのバージョンはいくつ?VGX.DLLのアップデートはどうやるの?(Windows Updateは全部適用済)
Re:DLLを訪ねて三千里 (スコア:1, 興味深い)
とりあえず、dll(あんた)はどっからきたのをどう捜すかのプロセス
むー該当.dll更新日時が、SP2の当てた日9/2(初物人柱)ではない
でちょいと辿ったら、KB867801(IE6SP1累積)をパッチしたのが2004/8/2か…
つまり、その近辺で放り込まれたか上書きされたかのいずれかだな…多分
後、dllの墓場(バックアップキャッシュ)…ああ捜すの('A`)マンドクセから
窓+F検索掛けて*.dll で捜すと、おおあった VGX.dllの素が
2002年9月20日、02:38:21か、SP1で放り込まれたのかな
あーlog追跡したら、SP1をこの日に入れているから間違いない。(人柱Prat2)
で、最終更新(最新のdllに入れ替わったと言えるかも?)が
SP2のサービスパックを叩き込んだ日時に該当<2004/09/02
やはり、Sp2の時に書き変わったとみるべきかもしれぬ。
っと。Dll.の樹海にハマると怖いので…
とりあえずここは、泣く子もヨメも怖い怖いというスラドなので
あまり教えてとか言わない方がいいですよ。
後、Windowsのシステムを司るdllがどこから来て何処に住み着くかは
大体MSソフトのインストールか、IE絡みのパッチか、Spの小パッチかと決まっているので
検索を駆使し、プロパティーやエクスプローラーの詳細を展開して
ファイルのタイムスタンプを確認するようにしましょう。
ファイルに付いている各種Ver、製作、更新、アクセス日時等は、飾りではないのです。
エライ人には、それが分からないのです、ファイルVerと属性の意味が!
余録・該当VGX.DLLプロパティーが以下なら大丈夫かも?
Verは 6.00.2900.2180
Microsoft Corporation
ニュートラル言語
Microsoft® is a registered trademark of Microsoft Corporation.
6.0.2900.2180
Microsoft Vector Graphics Rendering(VML)
MSVML
作成日時 2002年9月20日、02:38:21
更新日時 2004年8月4日、16:55:27
vgz.dllは
C:\WINDOWS\SoftwareDistribution\Download\1d6fa39895dfc1d3756b5510bca8c7f4
C:\WINDOWS\ServicePackFiles\i386
C:\Program Files\Common Files\Microsoft Shared\VGX
に存在します。
>(Windows Updateは全部適用済)
クライアントさんはみーんなそう言うんだ(泣きながら)
でも、IEを使わなきゃいいんだけどね…。
Re:DLLを訪ねて三千里 (スコア:1)
× vgz.dllは
○ vgx.dllは
21インチモニター欲しいーEIZOさんCRTは19インチで打ち止めかい!(涙)
1600×1200の解像度では狭すぎる。
Re:DLLを訪ねて三千里 (スコア:0)
> × vgz.dllは
と2行ならんでいたためか
orz.dll
に見えた…orz
Re:DLLを訪ねて三千里 (スコア:0)
今のスラドでは