「セキュリティの脆弱性」の定義

* この資料は米国マイクロソフトの「Microsoft Security Response Center(MSRC)」が公開したセキュリティの脆弱性の定義に関する文書を翻訳したものです。

セキュリティの脆弱性とは何でしょうか? この質問は簡単に思えるかも知れませんが、実際にはそうではありません。ここでは、Microsoft Security Response Center で使用している非公式な定義について説明します。

セキュリティの脆弱性という言葉の意味を説明するのに、なぜ数ページも使用するのか最初はわかりにくいかもしれませんが、"セキュリティ" と "脆弱性" という両方の言葉を辞書で調べてみると、冒頭の言葉の意味が理解できると思います。つまり、セキュリティの脆弱性には、ウイルス、不適切に構成されたシステム、メモ用紙に書かれたパスワードなど、潜在的にシステムへの攻撃手段を提供するあらゆることが含まれると思うでしょう。確かにこのようなことは、システムに対するリスクを増大させます。ただし、これは、セキュリティの専門家が通常使用しているよりも、意味が広いものです。

セキュリティの専門家が使用している意味のセキュリティの脆弱性とは、製品の問題が原因によるセキュリティの障害を意味し、製造元が製品の問題を修復する必要があるものです。Microsoft Security Response Center の役割は、セキュリティにかかわる問題がある場合にはそれを発見し、修復することですので、この言葉と特に関係があります。修復可能な、あるいは修復しなければならない問題を特定できるように、これから説明する定義を行いました。われわれがマイクロソフト セキュリティ情報 (Security Bulletin) を通して、対応する問題の種類を理解していただくために、この文書を用意しました。

*

文脈中の定義

この定義は、問題が マイクロソフト セキュリティ情報 に掲載するのにふさわしいかどうかを最終的に判断する基準ではなく、最初の基準である、ということ理解することが重要です。この定義は、最初に考える基準です。潜在的なセキュリティの問題に関してお客様から報告を受け取るたびに、調査を実施しています。報告された問題を再現できた場合は、マイクロソフト セキュリティ情報 に掲載するかどうか次の 2 点を吟味します。

問題がセキュリティの脆弱性の定義を満たしているかどうか。

問題が製品のセキュリティ ポリシーに違反していないかどうか。つまり、製品が行っている "セキュリティの保証" が破られていないか。

すべての問題に適用される最初のフィルタとして、セキュリティの脆弱性の定義を考えてみます。セキュリティ上の問題といわれているものが、セキュリティの脆弱性の定義に当てはまらない場合、マイクロソフトセキュリティ情報 に取り上げる可能性はほとんどなくなります。ただし、これは何も対応しないということではありません。たとえば、調査によってセキュリティの脆弱性に起因するものではなく、製品のバグによるものであることがわかると、製品担当チームと協力して製品を修正し、サービス パックの一部として、あるいは将来のバージョンに修正部分を含めたりします。この場合、修正プログラム、または マイクロソフト セキュリティ情報としては提供しません。

セキュリティの脆弱性の定義に当てはまる場合、次の基準はその問題が製品のセキュリティ ポリシーに違反するかどうかです。どの製品にも前提とする使用方法があり、製品が適切に使用される場合には、その製品が提供するセキュリティについての保証があります。たとえば、Windows 2000 を NTFS ボリュームにイントールした場合、ファイルへのアクセスを制限するためにファイルの所有者を有効にします。しかしながら、Windows 95 ではそのような保証を行っていません。その代わりに、ファイルの所有者がコンピュータを物理的に保護することを前提にしています。したがって、仮に Windows 2000 と Windows 95 に影響するまったく同じ問題があっても、Windows 2000 のセキュリティ ポリシーのみに違反することになり、Windows 2000 に対してのみ修正プログラムが提供されることになります。

現在、各製品チームと共同で各製品のセキュリティ ポリシーに特化したドキュメントを作成しており、完成後に公開する予定です。それまでは、お客様が製品の通常の使用方法とセキュリティ機能について説明している製品のマニュアルを読み、製品のセキュリティ ポリシーを理解してください。以下の定義を読む際には、すべての議論は製品のセキュリティ ポリシーに記述されている文脈で行う必要があることに留意してください。

始める前の注意事項

定義の説明を始める前に、注意していただきたいのは、この文書は法的拘束力を持つ文書ではないという点です。第一の目的として、複雑さをなくしてわかりやすくするようにしました。それでも、あいまいな部分は多少残ります。したがって、次の点に注意していただく必要があります。

ここでの定義は何ら保証されるものではありません。この定義は、われわれがマイクロソフト セキュリティ情報 で処理するべきかどうかの判断を助ける道具となるものです。最終的に、マイクロソフト セキュリティ情報 にどの問題を掲載するかの判断は、当社による最善の保護をお客様に提供するという方針に基づいた "判定" が必要となります。厳密に言えば定義から外れる問題を マイクロソフト セキュリティ情報 で取り上げる場合もあります。同様に、ある問題がその定義に全面的に当てはまる場合でも、きわめてまれな条件でのみ発生するため、別のより緊急な問題に人員を割いた方が、より多くのお客様にお役に立てると判断する場合も考えられます。

この定義は、Microsoft 社の基準ではありません。これは非公式なもので、Microsoft Security Response Center に属するわれわれが、業務上の便宜から使用しているものです。ロゴの要件や、その他の企業の基準の一部でもありません。

定義

ここまでにまえがき部分と注意事項に目を通していただきましたので、いよいよその定義をご紹介します。

セキュリティの脆弱性とは、製品の適切な使用による場合でも、攻撃者によるユーザーシステムに対する特権の不正行使、操作の制限、システム上のデータの損傷、および許可されていない信頼の偽装を防止不能にする、製品に含まれる問題である。

これから、この定義が意味するところを正確に具体的に補足していきます。以下の説明では、定義で使用されている重要な言い回しや言葉を取り上げ、それぞれの言葉が意味するところを正確に説明し、具体的な定義の適用方法を例示します。

製品に含まれる問題

問題 : セキュリティの脆弱性に含まれる弱点には、不慮によるものがあります。製品には、仕様上の弱点を伴うことがありますが、このような弱点はセキュリティの脆弱性でありません。

: 40 ビットの暗号を製品に実装することを選択することは、そのセキュリティの強度が場合によっては不十分だとしても、セキュリティの脆弱性にはなりません。逆に、128 ビットの暗号がキーにあるビットの半分を失うような実装エラーは、セキュリティの脆弱性となります。

製品 : セキュリティの脆弱性は、製品にある問題の結果です。製品の不完全さによって問題があったとしても、広く受け入れられている標準であれば、セキュリティの脆弱性ではありません。

: ブラウザが FTP サイトに接続する場合、プレーン テキストでセッションを行いますが、この場合、ブラウザにセキュリティの脆弱性があるとは考えません。FTP の仕様では、プレーン テキストでのセッションが必要だからです。ただし、ブラウザが SSL セッションをプレーン テキストで行った場合は、SSL の仕様では暗号化セッションを必要としていますので、セキュリティの脆弱性となります。

防止不能にする

防止不能 : セキュリティの脆弱性があると、制御不能を伴います。つまり、問題がセキュリティの脆弱性となるには、相当の防止手段にもかかわらず、攻撃者が攻撃対象を屈服させることができる可能性がなければなりません。

: たとえば、Web ブラウザの問題が Web サイトによって悪用され、そのサイトを訪れるユーザーのブラウザを "ハング" させる場合を考えてみます。ユーザーが、ブラウザを終了し、再起動し、さらにその後は悪意のあるユーザーの Web サイトを避けることができれば、その問題はセキュリティの脆弱性にはなりません。ただし、その問題によって、Web サイトがユーザーを強制的に呼び戻すことが可能で、ブラウザを再起動するたびに新たに攻撃を送ることができるのであれば、それはセキュリティの脆弱性になります。もちろん、個別のケースによって状況は変わります。たとえば、問題によってデータが危険にさらされる可能性がある場合、ユーザーが強制的にサイトに呼び戻されるかどうかは問題になりません。悪意のあるユーザーがブラウザの問題を悪用するには、サイトに 1 回アクセスすれば十分だからです。

製品の適切な使用による場合でも

適切 : どの製品にも想定している使用方法を説明したマニュアルが付属しています。さらに、推奨する使用方法には、製品の標準的な使い方が説明されています。問題がセキュリティの脆弱性となるには、想定された方法、要求された方法、あるいは正当な方法で製品が使用されている際に発生する必要があります。

: たとえば、Web サイトの訪問者すべてにそのサーバーに対する管理者権限が与えられている場合にのみ、セキュリティ上の問題が顕在化する Web サーバーを考えてみます。この場合の問題はセキュリティの脆弱性ではありません。それは、最善策として広く受け入れられている方法では、Web サイトの訪問者には管理者権限を与えないように注意を促しているからです。ただし、サイトの訪問者に通常の想定された権限のみを与えている場合でも問題が顕在化する場合は、セキュリティの脆弱性になります。

ユーザーシステムに対するアクセス権の不正使用

不正使用 :「アクセス権の昇格」の脆弱性は権限のない機能を不正に実行できる可能性を含んでいます。

: 管理者がファイルのアクセス権の変更を可能とする問題は、セキュリティの脆弱性とはなりません。管理者はすでにその権限を持っているためです。一方、問題によって権限のないユーザーでも同様のことが可能な場合は、セキュリティの脆弱性になります。

操作の制限

制限 : システムの操作を制限することは、実際にはアクセス権の不正使用の特殊なケースですが、DoS (サービス拒否) や同様の攻撃の重大性のため別に取り上げました。

: 攻撃者にサーバー停止を可能にさせてしまうような問題はセキュリティの脆弱性になります。攻撃者がサーバーにサービスを提供させるかどうかを制限することができるからです。攻撃者は膨大な量の正当な要求をサーバーに送信して、サーバーのリソースを独占することができますが、サーバーのオペレーターがサーバーを制御できる限り、セキュリティの脆弱性にはなりません。

システム上のデータの損傷

損傷 : 所有者や管理者の努力にもかかわらず、データにアクセスできることは、セキュリティの脆弱性になります。場合によって、読み取り、追加、およびデータの変更を伴うことがあります。

: たとえば、あるオペレーティング システムではファイル単位のアクセス制御が提供されているとします。あるユーザーが、ファイルに対するアクセス権が制限されているにもかかわらず、ほかのユーザーのデータを読み取れるという問題がある場合、セキュリティの脆弱性になります。一方、新しく作成されたファイルに対する既定のアクセス権が全員に読み取りアクセスを許可したとしても、これはセキュリティの脆弱性になりません。また、オペレーティング システムでファイル単位のアクセス制御が提供されておらず、それがマニュアルにも記述されている場合は、セキュリティの脆弱性になりません。

システム上のデータ : システム上のデータと、システムについてのデータとでは、微妙ですが重要な違いがあります。システム上のデータには、主な影響として損傷されることが危険な情報が含まれます。システム上のデータの例としては、ユーザーのデータ ファイル、暗号キーのストアなどがあります。システムについてのデータには、危険になることがあるにしても、2 次的または 3 次的な影響として危険になる情報が含まれます。この例としては、ネットワーク トポロジ、ファイルの場所など、システムの論理構造に関する情報があります。

: Web の訪問者が読めないはずのデータを読めてしまうというサーバー内の問題は、セキュリティの脆弱性になります。ただし、ファイルの物理的な場所を開示するという問題は、セキュリティの脆弱性にはなりません。このような問題は、偵察の目的で悪用される可能性があります。攻撃者が、本当の脆弱性と一緒に使用すると、ファイルを危険にさらされる可能性もあります。この問題だけではデータを損傷することはできないので、セキュリティの脆弱性にはなりません。(しかし、マイクロソフトではこのような場合にも、修正プログラムを提供しています。)

許可されていない信頼の偽装

許可されていない信頼 : 多くの製品では、信頼する個人や組織を設定できるようになっており、また設定内容に応じた動作を制限できるようになっています。ユーザーが認めないレベルの信頼関係を攻撃者が取得できる問題の場合は、セキュリティの脆弱性になります。

: ブラウザを使用して他人になりすまして SSL セッションを開始できる問題が Web サイトにある場合、信頼されたサイトは、セキュリティの脆弱性になります。ただし、誰かにトロイの木馬型ソフトウェアを実行するように信じこませるために IRC チャネル上で偽名を使うなど、ソーシャル エンジニアリングに基づく "なりすまし" は、セキュリティの脆弱性になりません。

現実的な定義

お気づきと思いますが、定義には判断の余地が大いにあります。ただし、最終的には、お客様の保護という良識と願いから判断しています。マイクロソフトセキュリティ情報をご覧になれば、定義を拡大適用している場合がかなりあることがおわかりになると思います。

Scott Culp は、Microsoft SecurityResponseCenterのセキュリティプログラムマネージャです。


ページのトップへページのトップへ