Copyright © 2000-2005 eazyfox. All Rights Reserved.
HOME| Firewall | Security| 製品紹介| SecuTool| Forest| Hello| Link| 掲示板| 雑談掲示板| SiteMap| Contact
HOME > Security > Special(どこにでもあるセキュリティホール)

どこにでもあるセキュリティホール
(工学社 I/O 2003年3,4月号掲載)

インターネットを利用する上でセキュリティを考慮することは以前ならWebやMailサーバの管理者の仕事であった。ブラウザを使って各種のサイトを見るだけの一般ユーザーはウィルスチェッカをインストールしていれば一応安心していられたが、現状ではセキュリティ対策を施していない一般ユーザーが悪意のある攻撃者のターゲットになっている。MicrosoftのWindowsを利用している多くの一般ユーザーにあらためてOSやユーティリティの持っている脆弱性を認識してもらうために危険度が高いものを紹介しよう。

(1). IIS(Internet Information Server)

IISはWindowsサーバで最も多く利用されているWeb,FTPサーバだが、これまでに3つの種類の脆弱性が認められている。

1.1. 異常HTTPリクエスト

Webサーバはクライアントからの要求を受けて該当するコンテンツの配信を行っている。このクライアントからの要求を解析する処理に弱点があり、UNICODEを使って指定されたリクエストの解析でエラーとなるはずのコードを指定すると誤動作を起こし、本来アクセスできないはずのフォルダのファイル参照や実行が可能になってしまう。 Code Blueがこの脆弱性を利用した代表例としてあげられる。またリクエストの解析にはUNICODE以外にも実行可能ファイルに対するリクエストで.BAT/.CMDの脆弱性があり、サーバ上でDOSコマンドが実行可能となる。これらの脆弱性を利用すれば攻撃者は次のことが可能になる

  1. スクリプトのソースコードの参照が可能
  2. Web公開用仮想ディレクトリ以外のディレクトリやファイルが参照可能
  3. サーバ上でコマンドの実行が可能。ファイルの削除やバックドアのインストール実行が可能となる

1.2. バッファー・オーバーフロー

IISのHTTPやFTPの通信モジュールは受信データの格納領域を必ず持っている。この領域はプログラミング時にあらかじめ想定されるサイズを確保するのが一般的である。想定サイズを超えるデータを受信したとき、あふれたデータがコードやワーク領域を壊してしまい、正常に動作しなくなることがある。これを悪用するとアプリケーションを暴走させたり、攻撃者が送ったコードを実行させることも可能となる。

1.3. サンプルコンテンツ適用の扱いの失敗

IISの機能を紹介するためのサンプルアプリケーションは、標準インストールを実行すると要・不要を問わず入ってしまう。インストール先は決められた場所でソースコードの内容も全て同じなので、そのまま放置しておくと攻撃者の格好の的となる。またサンプルなのでセキュリティを考えた内容となっていないことも問題である。サンプルコンテンツの脆弱性として次のものが判明している。

  1. サーバ上でファイルの生成や書き換えが可能
  2. サーバ上のファイルやデータベースが参照可能。このためユーザーIDやパスワードが漏れる可能性がある。
  3. IISの管理ツールが実行可能。サーバの管理パスワードもアクセスできる。

1.4. これらの問題に対処するには

  1. サービスパック、セキュリティパッチ、HotFixの適用を行う。これは当然のことだが、実行するには情報収集 が欠かせない。また大量の適用を行うときには正しい順序で行わなければならない。
  2. 不要なサンプルアプリケーションは削除する。またサンプルコンテンツなど使わないのなら全て削除しておくのが正しい。
  3. ISAPIに関連付けられている拡張子を外す。ISAPIはIISの機能を拡張するために公開されているAPIで.htrや.idqなどの拡張子の関連付けは自分でISAPIを使ったサーバアプリケーションの開発を行わないのであれば不要だ。
  4. HTTPリクエストをフィルタリングする。MicrosoftのurlscanツールやGuard3 ISAPIフィルタを利用して不正HTTPリクエストを受け付けなくする

(2). Inertnet Explorer

Microsoftが提供するWebブラウザソフトInternet Explorer(IE)には全てのバージョンに脆弱性を持っている。種類も数多く存在し簡単に分類すると

2.1. ActiveXコントロールの危険性

インターネットをより便利に使う機能としてMicrosoftからActiveXコントロールが提供されている。 ActiveXコントロールには動画や音楽などの動的なコンテンツを表示するコンポーネントから、バイト単位でファイルを送受信するための基本コンポーネントまで存在し、ActiveXを有効にしていないと何も表示されないサイトも数多くある。ActiveXコントロールはクライアントが持っていない場合、サーバから自動Downloadされ、実行される。署名付きのコンポーネントだからといって安心することはできない。またMicrosoft製のActiveXコンポーネントがバッファーオーバーフロー等の脆弱性を持つことも問題である。

2.2. Activeスクリプトの危険性

ActiveスクリプトはJAVAスクリプト、VBスクリプトを実行する機能で、以前流行したメールを開いただけで感染するウィルスメールはこの機能を利用している。メールの本文の中にスクリプトを埋め込んでおくことで次のようなことが可能となる。

  1. 添付したトロイの木馬などの攻撃ツールの自動実行が可能。
  2. 任意のサイトを自動的に開かせ、さらに危険なスクリプトを実行させる
  3. アドレス帳を参照してメールを送信することも可能。

Htmlメールを開かなければ感染はしないのだが、Outlookはプレビューでスクリプトを実行してしまうため設定の変更またはパッチの適用が必要だ。スクリプトが埋め込み可能なHtml形式のメールを気軽にやり取りすること自体が危険な行為であり、インターネット初心者にはあまり勧めたくない機能なのだが、動くメールは大変魅力的らしい。Microsoftのメーラーを使用しない、またはウィルスチェッカのメール保護機能を利用してもらうのが簡単な対処方法だ。

2.3. MIMEタイプ、contentタイプの誤った処理

IEはWebページを開くときにhtmlヘッダを参照して表示する形式を決定する。

MIME形式はメールなどで使われる本文+バイナリコード+画像など複数のパートで1つのページが構成されているときに指定される。通常のテキスト+画像の内容だけなら表示しても何ら問題は無いのでIEは安心してページを表示しようとする。しかし実行可能モジュールを画像として偽装してもページを開くときに本当に画像であるのか、バイナリ−コードなのかを判定していないため「不信なモジュールは実行しない」設定を行っていてもモジュールが実行されてしまう。対策は全てのサイトでダウンロードを行わないようにすることだ。

2.4. COOKIEの漏れ

COOKIEはサイトを訪れたときサーバがクライアントに設定するテキストファイルで、ショッピングサイトのユーザー識別や買い物かごの機能としてよく用いられる。どのような内容を設定するのかはサイト側で決定されるので訪れるユーザーがパスワードをCookieに保存されることを嫌がったとしてもユーザー自ら変更することはできない。Cookieは本来自分が設定した内容しか参照できない仕様になっているが、他のサイトのCookieが参照できてしまう脆弱性が報告されている。またサーバにクロスサイトスクリプト対策がなされていないときにはサーバを訪れた人のCookieを攻撃者に送信されることもある。Cookieを無効にするか、使用時にダイアログを表示して注意を促す必要がある。またクロスサイトスクリプト対策を行っていないサイトやCookieにユーザIDやパスワードを保存するようなサイトには行かないようにしなければならない。

2.5. ローカルファイルやデータの漏れ

JAVAはブラウザ上でアプリケーションを実行するための環境で、今後ますます利用されることが予想される。JAVAはバーチャルマシン(VM)という仮想マシン環境で実行され、ローカルのファイルアクセスには制限を持たせてある。Microsoftが提供するJAVA-VMにはカレントワークディレクトリ内の全てのファイルやデータを外部から参照できる脆弱性が報告されている。IEのバージョンによってディレクトリの場所は異なるが、対策を施していないとディスクの中身をさらけ出しているような状態になる。有名なJAVAの開発者サイトにテストページがあるので一度は試しておいて欲しい。(http://java-house.etl.go.jp/~takagi/java/security/microsoft-vm-getsystemresource/checker/Test.html)






2.6. 危険なプログラムやスクリプトのDOWNLOADと実行

Microsoftではパッチの自動ダウンロード機能を提供している。便利な機能だが攻撃者がパッチや安全なファイルに見せかけてトロイの木馬やウィルスをダウンロードさせて、自動実行がさせる機能に化けてしまう。ファイル名の偽装は簡単なので実行可能モジュールを[xxxxx.jpegをダウンロードしますか?]とダイアログが表示されたとき、怪しがる人は少ないだろう。ダウンロード後に自動実行されるとトロイの木馬のインストール完了となる。インターネットオプションの[自動ダウンロード]は無効にすることで対応が可能である。
IEにこれほど多くの脆弱性がありながらも使われる理由としてIEに最適化したサイトが多く存在することも忘れてはならない。言い換えればIEをターゲットとして最適化した攻撃サイトも多いということになる。WebブラウザとしてNetscapeやOperaを選択するほうがIEより少しは安全となる。

(3). Windows Scripting Host

Windows Scripting Host(WSH)はMS-DOS時代から存在するBATファイルを高度にした機能であるスクリプトの実行環境である。ユーザーの操作をプログラムして自動化する目的で使用される。スクリプトの主な機能には下記のものである。

  1. プログラムの実行(Shell機能)
  2. ローカルファイル、レジストリ、ネットワーク共有資源へのアクセス
  3. ユーザー情報へのアクセス
  4. ショートカットの作成

この機能を悪用した代表例はVBScriptで作成された「ILOVEYOU」ウィルスメールだ。個人で使用しWSHを必要ないと判断すれば削除または無効化することが可能で、WSHを利用した危険性から逃れることができる。WSH対策の方法は

  1. 「アプリケーションの追加と削除」→「Windowsファイル」→「アクセサリ」から「Windows Scripting Host」を削除する
  2. VBS、VBE拡張子への関連付けを外す
  3. WSCRIPT.EXEを削除またはリネームする
  4. シマンテックからWSHを無効にするための対策プログラムを利用する。(http://www.symantec.com/avcenter/noscript.exe)

(4). NETBIOS

Windowsのネットワーク共有機能は他のPCとファイルやプリンタを共有するために大変便利な機能で、サーバーメッセージブロック(SMB)または共通インターネット・ファイル・システム(CIFS)の上で動作している。この共有機能はNETBIOSと呼ばれるAPIで 提供されている。このネットワーク共有機能が持っている保護機能が極めて貧弱なことを設定時に考えないといけない。ADSLやCATVなどの常時接続の環境に接続するとき、共有機能を無効にして、外部から自分のPCに対してアクセスできないように対策を施してから使用するユーザーがほとんどいないことは大きな問題だ。例として筆者が日頃定宿にしているビジネスホテルではLANが使用できるがマイ ネットワークを開くと他部屋で接続されている他人のPC一覧が表示される。まるで「好きなPCの中身を見てください」と言わんばかりの状態である。共有機能は本当に必要な環境だけで有効にすべきで、共有接続時には予測しにくいパスワードを設定しなければならない。またインターネットに接続するアダプタでは共有機能は必ず無効にしておくかTCPとUDPの137〜139と445番のポートを塞いでおかなければならない。(図はMicrosoftネットワーク用ファイルとプリンタ共有のチェックを外したところ)。
445番ポートを使うCIFSを無効にするにとDHCPクライアントが使えなくなるので注意が必要である。


Gibson Research Corp.の“ShieldsUP"は外部から共有機能のほかに危険性のある機能が有効になっていないかをチェックするためのサイトで、LeakTestは内部から外部への漏れを検査するツールを提供している。
http://grc.com/default.htm
Sircam、NimdaやKlezといったVirusやWormは共有ドライブやフォルダに感染を試みる機能を必ず持っている。もし自宅で複数台のPCを所有していたり、会社内のLANで使用しているときにはこれらのVirusに一人が感染すると瞬時に全てのPCが感染してしまうことになる。便利な共有機能は両刃の剣であることを理解して常に防御対策と併用しながら使用しなくてはならない。









(5). Null Session

NULL Sessionとは匿名でのログオン(Anonymous Logon)、つまりユーザー名もパスワードも指定せずにホストへ接続することである。2000、XPを含むNT系のWindowsでは多くのサービスがLocalSystemと呼ばれるシステムアカウントで実行される。これらのサービスはサーバ間連携などで他のホストのサービスと通信を行うときパスワードなしで接続を行っている。次のコマンドを試してみよう。"Net use"はネットワーク共有設定を行うコマンドで普通はネットワークドライブの割り当てや切断をバッチで行うときに使用する。

Null Session接続 “ net use \\192.168.1.1\IPC$ "" /user:"" ”


\\のあとのIPアドレスは近くにあるNTや2000サーバなどのIPに変更して欲しい。IPC$の後ろは通常であれば次のようにパスワード、/user:の後はユーザー名を指定する。

通常の共有接続“ net use \\192.168.1.1\IPC$ "AdminPassword" /user:administrator ”


Null Session接続ではパスワードもユーザー名もNULL(何も指定しない)で接続している。「コマンドは正常に終了しました」と表示されれば接続は成功で接続先のホストは危険な状態にあるといえる。
このNull Session接続で可能な内容は

  1. ユーザー名、グループ名の一覧取得
  2. マシン名の一覧取得
  3. 共有資源の一覧取得
  4. ユーザー名とSIDの取得

つまりWindowsネットワークの情報はパスワード以外は取得可能 となっている。
有名なenumで実行した結果を示す。

server: 192.168.1.1
setting up session... success.
getting user list (pass 1, index 0)... success, got 3.・・・ユーザー名の一覧
Administrator ()・・・アドミニストレータ
attributes:・・・設定無し
Guest ()・・・ゲストアカウント
attributes: disabled no_passwd・・・パスワードなしは無効
attributes:
enumerating shares (pass 1)... got 5 shares, 0 left:・・・共有名の一覧
ipc: IPC$ (Remote IPC)
fs: D$ (Default share)・・・Dドライブのシステム共有
fs: D ()・・・Dドライブが共有になっている
fs: ADMIN$ (Remote Admin)
fs: C$ (Default share)・・・Cドライブのシステム共有
cleaning up... success.


この結果からWindowsのデフォルトインストールから変更されておらず、Dドライブへの共有が追加されていることがわかる。もしユーザー名にIUSR_xxxxがあればIISが動いていることが推測される。
これに対する対策はNETBIOSのところで述べた内容と同じである。通常ドメインコントローラとして動作しているサーバはこのパスワードなしでの接続が可能な状態になっている。セキュリティレベルを上げるためにパスワードなしでの接続不可にすることはできない設計思想になっている。少なくともインターネットに接続する環境にサーバが設置してあるのなら下記のポートは塞いでおくのが鉄則だ。

(6). MDAC

リモートデータアクセスで使われるMDACはAccessやVisualBasicなどでDBを参照するJETエンジンと組み合わせてリモートでデータベースアクセスを行うときに利用するモジュールである。IISがDBを参照するときにも利用しているのでクライアント、サーバの両方で被害が想定される。バッファーオーバーフローが現在報告されている内容だが、自宅からVPNなどを使って会社のDBへ接続する機会が今後はますます拡大してくることが考えられる。このような利用方法ではMDACを知らずに使っている場合が多い。つまり危険性の認識がないために対策が施されないのである。Microsoftから修正モジュールがリリース済みである。

(7). まとめ

今回はSANS/FBIのレポートを元にWindowsの脆弱性について見てきたが、このレポートにはUnixの脆弱性についても同様に警告が発せられている。どのようなOSを使うにも情報の収集と速やかな対策の実施が必要なのは変りがない。

以上の内容は工学社のI/O誌に2003年3,4月号に掲載された内容を元に修正および追加を行ったものです。編集を担当していただいた藤井様、佐々木様には大変お世話になりました。この場を借りてお礼申し上げます。