- PR -

Windowsパッチファイルの検証方法はあるのでしょうか

投稿者投稿内容
樫田
常連さん
会議室デビュー日: 2002/07/18
投稿数: 25
投稿日時: 2003-10-20 13:57
久しぶりに投稿させていただく、樫田と申します。

MSから提供されたWindowsのセキュリティファイル等を入手した場合、それを
検証するための正しい方法は存在するのでしょうか。他のUNIXやLinuxなどの
パッチやソースコードなどではMD5のハッシュ値により比較したり、セキュリティ
ベンダなどの提供ファイルにも、デジタル署名などの確認方法が用意されていますが、
肝心のMSから提供される各種ファイルについては、特にそのような確認方法の記述が
ありません。(取り扱いの仕様が明らかでない)

例えば、"sigverif"を使用したMSのデジタル署名を確認する方法がありますが、
これはもともと「3rdベンダの提供するドライバとMSのそれを区別する」ための
機能として提供されているもののようで、MSが提供する全てのファイルにデジタル署名が
入っていると"保証"されているわけではないようです。ちなみに最近のWindows Update
のセキュリティパッチなどについて、デジタル署名を確認してみたところ、確かに署名が
入っていましたが、たまたま入っていただけなのかどうかの判断もできません。この
ような使い方は仕様であるとのコメントがMSから無い限り正しい運用ではないでしょう。
(今のところもっとも現実的な方法かもしれませんが)

またMSサイトからファイルをダウンロードする場合、ファイルを提供しているサイトの
WWWサーバのサーバ認証により確認を行い、そこで提供されているファイルを間接的に
信頼するという方法も考えられますが、この方法ではPKI以外にも様々な問題が考えら
れそうです。

最近ではセキュリティポリシーなどで、トロイの木馬等でないことを確認するため、
外部から持ち込んだファイルの取り扱いについて厳密に扱うケースも少なくない
はずですが、MSのパッチファイルその他についてはどのように扱うべきなのでしょうか?
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-20 16:01
ども、ほむらです。
WindowsUpdateが月間化されるのはいいですけど
確認作業が逆に面倒になったような気がするのは僕だけでしょうか?
(確認してないけど^^;;;)
--------------
基本的にWindowsの配布物はソースコードが隠蔽されているので改ざんは無いと思いますけど
正規のものが正しくインストールされたかは各々の詳細情報から
ファイルのタイムスタンプ。修正されたレジストリの設定などを
確認するしかないのではないでしょうか?

たとえば、この間出たパッチの内、IEのobjectタグに関するパッチの確認をするのなら
http://support.microsoft.com/default.aspx?scid=kb;ja;828750
が参考になると思います。
樫田
常連さん
会議室デビュー日: 2002/07/18
投稿数: 25
投稿日時: 2003-10-20 17:23
ご意見ありがとうございます。樫田です。

>基本的にWindowsの配布物はソースコードが隠蔽されているので
>改ざんは無いと思いますけど

ここでオープンソースの宗教論争をするつもりはありませんが、
ソースコードが公開されていないことを、改竄ができないという
根拠にするのは余りにも危険ではないでしょうか?

確かにオリジナルの機能を全て持ちながら、隠れた機能を持つ
トロイを作成するには、オリジナルのソースコードを入手するか
リバースエンジニアリングを行なう必要があります。
しかし、ファイル名のみを詐称しただけで実体は完全に無関係の
トロイを作成するにはソースなど必要はありません。
さらにソース公開のプロダクトまたはパッチであれば、ある程度の
技術力にて内容の検証は可能ですが、MSのようにソース非公開で
EXE実行形式のパッチなどを配布する場合には、そのユーザができる
検証のためのハードルはかなり高いでしょう。

>正規のものが正しくインストールされたかは各々の詳細情報から
>ファイルのタイムスタンプ。修正されたレジストリの設定などを
>確認するしかないのではないでしょうか?

これらを技術的に詐称するのは、非常に簡単です。オリジナルの
動作に基づき、そのような動作を行なう実行ファイルを生成すれば
よいわけです。もちろんソースコードは不要です。

もちろん、たとえデジタル署名やハッシュの比較の方法を用意した
としても、「技術的に完全であること」を保証できるわけでは
ありません。しかし現状の何も無い状態では、あまりにも詐称が簡単で
あることを懸念しているわけです。

ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-22 10:32
ども、ほむらです。
ログ落ちしててすっかり忘れていました^^;;;;;;
ん〜と結論はでないので。。
水のかけあいになりそうなのが怖いですけど
-----------
樫田氏のいうレベルまで不安に思うのならば正規のもの以外には
手を出すなという感じですね。。。
僕は少なくともHotFixくらいは信じていますし。
ダウンロードセンターからのものもあてにしています。
一応公式サイトですから^^;;;;;;
それでも、DNSの設定次第ではやはりうそはつけますけど。。。。

ちなみに、セキュリティパッチはOSや対象ソフトと密接に関係しているので
DLLの名前を真似しただけでは間違いなくこわれますしね。

まぁ、ファイルサイズなんていいから
パッケージのMD5を公開してほしいというのは、たしかにありますね。
でも、オンラインが使用できる時点でWindowsUpdateで良いやんというのも本音です。
# 昔、公式サイトのどこかでMD5を見かけた記憶もあるのですが気のせいでしょうか?

[ メッセージ編集済み 編集者: ほむら 編集日時 2003-10-22 10:41 ]
BASE
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 178
投稿日時: 2003-10-22 11:21
ども、久しぶりに書き込みます。BASEです。

Hotfixがより正規なものであることを確実にするのであれば、
TechnetのDownloadセンターを使い1個1個Hotfixをダウンロードするとか?
後は詳細を確認して更新されるファイルの日付、バージョン等を全部確認する。
(面倒くさい上に、改竄も容易でしょうが・・・)

その他、より信頼度が高いところから入手という意味では、
Technetサブスクリプションを買えばCD-ROMでパッチが届きますよね?
#余計な物もたくさんありますし
#緊急性という部分では弱いですが・・・

後はマイクロソフトの有償サポートを購入すれば何かあるかもしれませんね。
内容知らないので、なんともいえないですが・・・

以上簡単ですが
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2003-10-22 14:41
樫田さんこんにちは。

http://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/security/policy/swdist.asp
には、
「マイクロソフトは常に、認証コードを用いてマイクロソフト製品にデジタル署名を施しています。これにより、それらの製品が不正に改ざんされていないことをユーザーに保証することができます。」
との記述があります。
これ以上のことはわからないのではないでしょうか?

樫田
常連さん
会議室デビュー日: 2002/07/18
投稿数: 25
投稿日時: 2003-10-22 15:59
樫田です。

>マイクロソフトは常に、認証コードを用いてマイクロソフト製品に
>デジタル署名を施しています。これにより、それらの製品が不正に
>改ざんされていないことをユーザーに保証することができます。」

ありがとうございます。まさにこのMSのコメントが求めていたものです。
# sigverifをキーワードにしていたので気づきませんでした。

そもそもオンラインベースで該当マシンに対してパッチをそのまま適用する
ことは、個人ユーザの環境ならともかく重要なサーバで行なうにはリスクが
高すぎます。そこで、一度代替マシンにダウンロードしてその後、
該当マシンに対してパッチを適用するポリシーを取っています。
その場合には、ファイルをコピーしたり移動したりメディアに記録したりの
作業が発生するので、改竄を検出する方法は避けることができません。
(それほど特殊な運用ではないと思いますが)
さらに他のベンダか何らかの理由により、Windows用のファイルをそのまま
コピーして提供している場合にもこの確認方法は有効ですね。

これで一応"sogverif"を使用したパッチの取り扱いを
セキュリティポリシーとして組み込むことができます。
# ただ"sigverif"ツール自体はあまりにも不十分ですが

しかしなぜMSはここまで記述しながら、具体的なデジタル署名の確認方法まで
記述しないのでしょうか?一般ユーザは「デジタル署名がある」というコメントさえ
あれば安心して、具体的な確認作業など行なうことは無い、と考えているのでしょうか?
そうであれば、PKIなどの仕組みを完全に誤解したまま(誤解させたまま?)運用して
いるわけですね。
PKIは「用意したから安全」なのではなく「用意したから確認できる」だけですから。

それとも何か別の理由があるのでしょうか。

いずれにしろありがとうございました。
樫田
常連さん
会議室デビュー日: 2002/07/18
投稿数: 25
投稿日時: 2003-10-22 16:52
続いて樫田です。下のコメントを書いて舌の根も乾かぬ
内に申し訳ありません。

>これで一応"sogverif"を使用したパッチの取り扱いを
>セキュリティポリシーとして組み込むことができます。

更に調べていたところ、以下の情報を見つけました。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cptools/html/cpgrffilesigningtoolsigncodeexe.asp

これらのデジタル署名は、このツールにより自由に埋め込めるのです。
(とりあえずの対象は .NET環境と限定されていますが)
つまり、ローカルCAなどを構築して"一見信頼できる"鍵を作成することにより、
簡単に署名が可能です。この鍵が信頼できるものかどうかはまさにPKIの領域ですが、
そもそもこのシナリオを理解していない人を誘導して騙すのは、容易です。
#先ほどまでの中途半端な知識しか持たない私であれば騙されていたかもしれません。

そもそもsigverifを実行した場合、デジタル署名が入っていることは確認できますが
"誰の"デジタル署名かまでは表示されません。OSにインストールされている
信頼されたサイト情報に全て依存することになります。

つまり「sigverifによる署名を行なうのは容易ではない」を前提にして
ポリシーを決めようとしたにもかかわらず、このための正式なツールが
存在してしまうと、先にPKIの部分をきちんとクリアしない限り、
ポリシーの実装はできません。もちろんそれは大変です。

以上の結果から考えると、単純に"sigverif"で確認しよう、という運用は非常に
リスクが高いことになります。

ここまで、私のいいかげんな知識で皆さんを混乱させて申し訳ありませんが、
これは非常に危険な話ですね。

スキルアップ/キャリアアップ(JOB@IT)