« Googleデスクトップを使っているとOutlookのプロセスが終了しないことがある | トップページ | Firefox/NoScript 対 Google Chrome/NotScripts »

2011年1月25日

Windows 7/VistaクライアントでSMB2を無効にするのは無意味

Windows Vista、Windows 2008、Windows 7はSMB2をサポートしている。XP/2003以前はSMB1だ。SMB2がどういうものかは他の文献を見ていただくとして、SMB2を無効にする設定について調べたことをまとめる。

件の設定はMS09-050にある。

マイクロソフト セキュリティ情報 MS09-050 - 緊急
SMBv2 の脆弱性により、リモートでコードが実行される (975517)
https://www.microsoft.com/japan/technet/security/bulletin/MS09-050.mspx

「脆弱性の詳細」にあるCVEのどれかを展開すると、レジストリ設定による回避策が書いてある。要約すると、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parametersの下に「smb2」というキーを追加して0(ゼロ)を入力する。その後Serverサービスを再起動する。

Windows 7やVistaがファイルサーバに繋がらないという問題が起きたとき、SMB2を無効にするということがよく行われているようで、Google検索でいくつも引っかかる。しかし私が調べたところ、クライアント側でやっても無駄だ。この設定はサーバ側の挙動を変えるものである。

クライアントがファイルサーバに接続するとき、まず自分がサポートするプロトコル(dialect)を列挙したNegotiate Protocol要求を送信する。Windows Vistaは「SMB 2.002」をサポートしている。Windows 7はこれに加えて「SMB 2.???」をサポートしている(注1)。私がテストしたかぎり、smb2レジストリキーの値にかかわらず、同じプロトコルを列挙してNegotiate Protocol要求を送信する。つまりクライアントとしての挙動に変化はない。

サーバとして振る舞う場合、つまりNegotiate Protocol要求を受信するVistaやWindows 7は、smb2の値で挙動が変わる。SMB2を無効(キー値0)にしておくと、SMB2のdialectを受信してもSMB1のNegotiate Protocol応答を返し、その後のやり取りがSMB1で行われる。SMB2が有効(キー値1)の時にSMB2のdialectを受信すると、SMB2のNegotiate Protocol応答を返し、SMB2のやり取りが始まる。レジストリキーがLanmanServerというのも示唆的である。

この設定はSMB2の脆弱性を回避する手段として公開されたものである。脆弱性からシステムを守るには、外部からSMB2で接続要求が行われても拒否すればよい。サーバとしての動作で回避しようというのが、この設定の意図なのだろう。悪意のあるサーバにSMB2で接続したクライアントが攻撃されるということもありうるのだが、まずは悪意のあるクライアントから攻撃を受けないようにするのが先決である。

(注1)
「???」(0x3f3f3f)が何を意味するのか不明。Windows 7はSMB 2.1をサポートしているので、それと関係あるのかもしれない。

(注2)
Windows 7は、SMB2のdialectを列挙しないでNegotiate Protocol要求を送ることがある。発生条件がよく分からない。いちど接続したサーバがSMB2をサポートしてないと分かっていると、次に接続するときはSMB2のdialectを列挙しないのだろうかと思って試したが、思うように再現できない。

|

« Googleデスクトップを使っているとOutlookのプロセスが終了しないことがある | トップページ | Firefox/NoScript 対 Google Chrome/NotScripts »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Googleデスクトップを使っているとOutlookのプロセスが終了しないことがある | トップページ | Firefox/NoScript 対 Google Chrome/NotScripts »