前回のコラムで紹介した「Gopher問題」に関する情報が,マイクロソフトから公開された。今までは,たとえ設定変更などで回避できるセキュリティ・ホールでも,パッチを準備するまでは情報を公開しないことがほとんどだったが,今回は回避方法だけをまず公開した。よい傾向である。しかし,回避方法の一部には,大きな誤りがある。システム管理者は改めて確認してほしい。

Proxy ServerやISA Serverも影響を受ける

 マイクロソフトから6月12日,Gopherプロトコルの実装が原因のセキュリティ・ホールが公開された。

Gopher プロトコル ハンドラの未チェックのバッファにより,攻撃者の任意のコードが実行される (Q323889) (MS02-027)

 Internet Explorer(IE)および Proxy Server 2.0,ISA Server 2000において Gopher プロトコルが使用可能な状態である場合,任意のコードが実行させられる恐れがある。

 マイクロソフトから公開される前に,セキュリティ・ホールの発見者が公開していたために,前回のコラムで既に紹介済みである。しかし,発見者は IE 5.5/6 だけが影響を受けるとしていたものの,マイクロソフトからの情報では,IE 5.01 と Proxy Server 2.0 および ISA Server 2000 も影響を受けることが明らかにされた。

 このセキュリティ・ホールは,Gopher サーバーからの応答を処理するコードの一部に未チェックのバッファが存在することが原因である。そのコードは IE だけではなく,ISA Server および Proxy Server にも使用されているために,これらの製品も影響を受けるのである。

 例えば,Proxy Server を介してユーザーが攻撃者のGopherサーバーへリクエストを送信した場合,Proxy Server が不正な応答を受け取って処理することになる。その結果,Proxy Server が稼働するマシン上で,任意のコードを実行させられる可能性がある。

Gopherのポートをふさいでも防げない

 当初マイクロソフトからは,パッチが一切公開されていなかった(6月15日,ISA Server 2000 および Proxy Server 2.0 のパッチが公開されている)。そのため,「マイクロソフト セキュリティ情報 (MS02-027) : よく寄せられる質問」に記載されている設定変更を施して,回避する必要があった。

 このこと自体は非常よいことである。今までは,たとえ設定変更などで回避できるセキュリティ・ホールでも,パッチを準備するまでは情報を公開しないことがほとんどだった。もちろんパッチが公開されるに超したことはないが,回避方法が存在する場合には,回避方法だけでもまずは公開することが,ユーザーのためである。今後もこのスタンスを取りつづけてもらいたいものだ。

 しかし,今回公開された情報には大きな問題がある。回避策の一部に明らかな誤りが存在するのだ。そのため,回避策を施したつもりでも,実際には攻撃を受ける恐れがある企業(組織)が多数存在すると思われる。早急に再チェックが必要だ。

 誤った回避策とは,「Gopherプロトコルが使用するTCPポート70番を,ファイアウオールなどでブロックすること」である。これでは攻撃を防げないのである。

 この誤った回避策は,「マイクロソフト セキュリティ情報 (MS02-027) : よく寄せられる質問」の「この脆弱性に対して,何か緩和する要素はありますか?」という項に記載されている。そこでは,「特に,Gopher プロトコル (TCP ポート 70) へのアクセスを,上位ネットワークのルーターやファイアウォールでブロックしているお客様はインターネットでこの脆弱性が悪用されることから保護されます。Gopher は古いプロトコルであるため,現在これを使用していないお客様は,セキュリティ上の最善策として,Gopher を恒久的にブロックすることを検討して下さい」と記述されている。

 上記の方法は,IE や Proxy Server 2.0,ISA Server 2000 のそれぞれに設定変更を施すことよりもずっと容易で,しかも漏れなく対応できる方法である。そのため,マイクロソフトの情報を信用して,この回避方法を採用した組織は多いはずだ。筆者が知る範囲では,大多数の組織がこの方法を採っていた。

 ところが,攻撃用のGopherサーバーのポート番号は,攻撃者が任意に選択できる。そのため,Gopher のデフォルトのポートであるTCP 70番ポートをブロックしても,攻撃を防ぐことはできない(関連記事)。この原稿を執筆している 6月16日の時点では,「マイクロソフト セキュリティ情報 (MS02-027) : よく寄せられる質問」には,誤った情報が記載されたままである。注意が必要だ。

英語情報では既に修正済み

 なお,日本語の情報では誤った情報が記載されたままだが,オリジナルの英語情報ではきちんと修正されている。念のため,英語情報「Microsoft Security Bulletin MS02-027 Unchecked Buffer in Gopher Protocol Handler Can Run Code of Attacker's Choice (Q323889)」をチェックしたところ,6月14日には

"Bulletin updated to include patch availability for ISA Server 2000 and Proxy Server 2.0 and to correct factual error regarding the efficacy of blocking port 70"

というメッセージが追記され,「Gopherプロトコルが使用するTCPポート70番をブロックすれば回避できる」という情報は削除された。

 日本語情報は,6月15日に ISA Server 2000 および Proxy Server 2.0 のパッチが公開されたことに併せて,内容が更新された。それにもかかわらず,誤った回避方法の記述は残されたままだ。早急に修正するとともに,今後はこのようなことがないようにしていただきたい。

“正しい”回避方法を整理する

 今回のセキュリティ・ホールは,以前からこのコラムで紹介している「IEのお勧め設定」を施しても回避できない。加えて,上記のように誤った情報が公開されている。そこで,今回のセキュリティ・ホールの回避方法を以下に整理する。

◆Proxy Server 2.0/ISA Server 2000:パッチを適用する

 6月15日に公開された日本語版パッチを適用して回避する。パッチの適用条件は,Proxy Server 2.0 では Proxy Server 2.0 Service Pack 1(SP1)を適用済みであること,ISA Server 2000 はISA Server 2000 SP1 を適用済みであることだ。

◆Internet Explorer 5.01/5.5/6.0:設定を変更する

 IE については,日本語版パッチはおろか,英語版パッチも公開されていない。そのため,「マイクロソフト セキュリティ情報 (MS02-027) : よく寄せられる質問」の「Internet Explorer では修正プログラムが完成するまでの間,この脆弱性からどのように保護することができますか?」の項とその次の項を参照し,IE の設定を変更して回避する。

 ただし,この記述にも明らかに不備がある。上記の「よく寄せられる質問」では,「LANの設定」に関する設定変更のみが記述されており,「ダイヤルアップ接続」については言及されていないのだ。

 ダイヤルアップ接続の場合は,IEの「ツール」メニューから「インターネット オプション」を選択し,「接続」タブ内の「ダイヤルアップと仮想プライベート ネットワークの設定」を選ぶ。そして,その中の「設定」ボタンをクリックして,「LANの設定」と同様に変更する必要がある(関連記事)。

OSに含まれるRASの電話帳にセキュリティ・ホール

 上記以外の,Windows関連のセキュリティ・トピックス(2002年6月16日時点分)を,各プロダクトごとに整理して解説する。

 各種OS関連では,「マイクロソフト セキュリティ情報一覧」にて,新規日本語情報及びパッチが1件公開された。

リモート アクセス サービスの電話帳の未チェックのバッファによりコードが実行される (Q318138) (MS02-029)

 Windows NT 4.0/NT 4.0 Terminal Server Edition/2000/XPにおいて,標準のシステム・サービスとして提供されているリモート・アクセス・サービス (RAS)に不具合が見つかった(関連記事)。RAS の電話帳には,エントリの値を適切にチェックしないという実装上の問題が存在する。

 そのため,攻撃者がマシンにログオン可能な場合,不正なデータを電話帳のエントリに加えることで,バッファ・オーバーランを発生させることが可能になる。不正なデータを加えられた後,その電話帳を使用した接続が開始されると,バッファ・オーバーランが発生し,不正なデータに含まれたコードがLocalSystem の特権で実行される可能性がある。

 既に公開されている日本語版パッチを適用すれば回避できる。パッチの適用条件は,Windows NT 4.0 の場合は Service Pack 6a(SP6a)を適用済みであること,Windows NT 4.0 Terminal Server Edition(TSE)は Windows NT 4.0 TSE SP6 を適用済みであること,そして Windows 2000 の場合は SP1 または SP2 を適用済みであること。Windows XP の場合には 適用条件はない。

 なお,英語版のみがリリースされている「Microsoft Routing and Remote Access Server(RRAS)」も今回のセキュリティ・ホールの影響を受けるので,英語版パッチが公開されている。しかし,国内でRRASを使用しているケースは少ないだろう。

 今回のセキュリティ・ホールを悪用されて,リモートから攻撃を受けることはない。コンソールまたはターミナル・セッションのいずれかを介して,対象システムに対話的にログオンできなければ攻撃することはできない。

 そのため,対話的にログオンできるユーザーを制限することと,適切なパスワード管理を徹底することも,対策の一環となる。これらはセキュリティ上のセオリーなので,管理者は改めて確認したい。

IIS のHTR機能にセキュリティ・ホール

 各種サーバー・アプリケーション関連では,「マイクロソフト セキュリティ情報一覧」にて,新規日本語情報およびパッチが2件公開された。それぞれInternet Information Server/Services(IIS)とSQL Server 2000が影響を受ける。順に解説しよう。

(1)HTR のチャンクされたエンコードのヒープ オーバーランにより Web サーバーのセキュリティが侵害される(Q321599) (MS02-028)

 Windows NT 4.0/2000 において,IIS 4.0/5.0 を運用している場合,攻撃者からサービスを異常終了させられる,または任意のコードを実行される可能性があるセキュリティ・ホールだ(関連記事)。

 対策はパッチを適用すること。パッチの適用条件は,Windows NT 4.0 では SP6a を適用済みであること,Windows 2000 では SP1 または SP2 を適用済みであることだ。

 今回のセキュリティ・ホール「MS02-028」は,過去に公表された「MS02-018」のセキュリティ・ホールに類似している。いずれも,IIS 4.0 および 5.0 のISAPIエクステンションが備える,チャンクされたエンコード・データの転送メカニズムが原因である。これらには,バッファのオーバーランを発生させる問題がある。

 「MS02-018」の場合,ASP を実装する ISAPI エクステンションが原因だった。それに対して,今回の「MS02-028」は,HTR を実装する ISAPI エクステンションに問題があった。

 HTR 機能については,過去に様々なセキュリティ・ホールが発見されている。そのため,「HTR 機能を無効に設定する(= HTRの拡張子に対する関連付け[マッピング]を削除する)」ことは,サーバー運用上の基本的なセオリーの一つである。このことは,マイクロソフトが公開する「Internet Information Services 5 セキュリティのチェックリスト」「Internet Information Server 4.0 セキュリティ チェックリスト」にも記述されている。

 このセオリーをきちんと守っていれば,パッチを適用しなくても影響を受けることはない。そのため,影響度は低いと思われる。しかし,HTR 機能を無効にしていても,システム構成の変更などに伴い,勝手に「有効」に戻る場合があるので,念のためパッチを適用しておきたい。

SQL Server 2000 の SQLXML にセキュリティ・ホール

 SQL Server 2000 にもセキュリティ・ホールが見つかっている。

(2)SQLXML の未チェックのバッファによりコードが実行される (Q321911) (MS02-030)

 SQL Server 2000 において,SQLXML を有効にして HTTP 経由でのデータ・クエリーを有効にしている場合に影響を受ける,2種類のセキュリティ・ホールである。それぞれ,「SQLXML ISAPI エクステンションの未チェックのバッファ」と「XML タグによるスクリプトの挿入」と呼ばれている。

 これらを悪用されると,任意のコードを実行させられたり,高い権限でスクリプトを実行されたりする恐れがある(関連記事)。

 SQLXML とは,XML を使用して SQL Server 2000 にアクセスする機能である。この機能により,WebブラウザからHTTPでクエリーを送信することや,検索結果などをブラウザ上に表示することが可能となる。

 対策は,既に公開されている日本語版パッチを適用すること。パッチの適用条件は,SQL Server 2000 Service Pack 2 を適用済みであることだ。

 パッチには,「SQL Server 2000 に同梱される Microsoft SQLXML のバージョン」「Microsoft SQLXML バージョン 2」「Microsoft SQLXML バージョン 3」の3種類が存在する。さらに,「SQL Server 2000 に同梱される Microsoft SQLXML のバージョン」においては,使用している MDAC のバージョンにより適用すべき修正パッチが異なる。適用の際には注意してほしい。



マイクロソフト セキュリティ情報一覧

『Windows NT 4.0/NT 4.0 Terminal Server Edition/2000/XP』
リモート アクセス サービスの電話帳の未チェックのバッファによりコードが実行される (Q318138) (MS02-029)
 (2002年 6月13日:日本語情報及び日本語版パッチ公開,最大深刻度 : 高)

『Internet Explorer/Proxy Server 2.0/ISA Server 2000』
Gopher プロトコル ハンドラの未チェックのバッファにより,攻撃者の任意のコードが実行される (Q323889) (MS02-027)
 (2002年 6月15日:ISA Server 2000 および Proxy Server 2.0 の修正パッチ公開,最大深刻度 : 高)
 (2002年 6月12日:日本語情報および回避方法公開,最大深刻度 : 高)

『IIS 4.0/5.0』
HTR のチャンクされたエンコードのヒープ オーバーランにより Web サーバーのセキュリティが侵害される (Q321599) (MS02-028)
 (2002年 6月13日:日本語情報および日本語版パッチ公開,最大深刻度 : 中)

『Microsoft SQLXML』
SQLXML の未チェックのバッファによりコードが実行される (Q321911) (MS02-030)
 (2002年 6月13日:日本語情報および日本語版パッチ公開,最大深刻度 : 中)


山下 眞一郎(Shinichiro Yamashita)
株式会社 富士通南九州システムエンジニアリング
第一ソリューション事業部ネットソリューション部 プロジェクト課長
yama@bears.ad.jp


 「今週のSecurity Check [Windows編]」は,IT Proセキュリティ・サイトが提供する週刊コラムです。Windows関連のセキュリティに精通し,「Winセキュリティ虎の穴」を運営する山下眞一郎氏に,Windowsセキュリティのニュースや動向を分かりやすく解説していただきます。(IT Pro編集部)