デバッガのセキュリティ
更新 : 2007 年 11 月
別プロセスでデバッグする機能によって、リモート環境からのデバッグをはじめとした、さまざまな操作を行うことができます。ただし、デバッガに悪意があると、デバッグ対象のコンピュータに広範囲の損害を与える可能性があります。そのため、デバッグを実行できるユーザーには制限があります。詳細については、「リモート デバッグのアクセス許可」を参照してください。
一方で、セキュリティ上の脅威は逆方向にも当てはまることを認識している開発者は多くありません。デバッグ対象のプロセスに悪意のあるコードがあると、デバッグを実行しているコンピュータのセキュリティにも悪影響が及ぶことがあります。対処が必要なセキュリティの攻略行為は数多くあります。
セキュリティに推奨される手順
デバッグ対象のコードとデバッガの間には、暗黙的な信頼関係があります。何かをデバッグするとき、当然のことながら実行することも考えます。最終的に、デバッグ対象を信頼できる必要があります。信頼できない場合は、デバッグしないか、セキュリティが侵害されてもかまわない、隔離された環境にあるコンピュータでデバッグする必要があります。
攻撃を受ける可能性を減らすには、運用コンピュータでのデバッグは無効にする必要があります。同じ理由から、無期限にデバッグを有効にしないようにします。
マネージ デバッグのセキュリティ
すべてのマネージ デバッグに適用される全般的な推奨事項を次に示します。
信頼関係のないユーザーのプロセスにアタッチするときは注意します。アタッチを実行するときに、信頼できるかどうかを判断します。信頼関係のないユーザーのプロセスにアタッチするときに、セキュリティの警告ダイアログ ボックスが表示され、プロセスにアタッチするかどうかが確認されます。"信頼関係のあるユーザー" には、自分と、.NET Framework をインストールしたコンピュータで一般的に定義されている標準のユーザーが含まれます。たとえば、aspnet、localsystem、networkservice、および localservice です。詳細については、「セキュリティ警告 : 信頼されていないユーザーが所有するプロセスにアタッチするには危険が伴います。以下の情報に関して疑わしい点がある場合や、不明な場合は、このプロセスにアタッチしないでください。」を参照してください。
プロジェクトをインターネットからダウンロードするとき、およびそのプロジェクトを Visual Studio に読み込むときは注意します。デバッグを実行しない場合でも、これはリスクの高い方法です。この場合、含まれるプロジェクトとコードが信頼できるかどうかを判断します。
詳細については、「マネージ コードのデバッグ」を参照してください。
リモート デバッグのセキュリティ
ローカル デバッグは、リモート デバッグよりも一般に安全です。リモート デバッグの場合、調査対象の領域は広範囲です。
Visual Studio リモート デバッグ モニタ (msvsmon.exe) はリモート デバッグで使用されます。構成する場合、いくつかのセキュリティ上の推奨事項があります。認証モードを構成するときは、Windows 認証が推奨されます。認証なしは安全ではありません。Windows 認証モードを使用する場合、信頼関係のないユーザーに msvsmon に接続するアクセス許可を与えることは危険であるため、注意が必要です。ダイアログ ボックスの警告にも表示されます。
リモート コンピュータでは未知のプロセスをデバッグしないでください。デバッガを実行するコンピュータや msvsmon.exe (Visual Studio リモート デバッグ モニタ) に悪影響を及ぼす攻略行為が行われる可能性があります。それでも未知のプロセスをデバッグする必要がある場合は、ローカルでデバッグし、セキュリティ上の脅威をローカルの問題に抑えるためにファイアウォールを使用します。
詳細については、「リモート デバッグのセットアップ」を参照してください。
Web サービスをデバッグするときのセキュリティ
ローカルでデバッグする方が安全ですが、Visual Studio が Web サーバーにインストールされていない可能性があるため、ローカル デバッグを実行できない場合があります。通常、Web サービスのデバッグは、開発時を除いてリモートで行われます。そのため、Web サービスのデバッグにも、リモート デバッグのセキュリティに関する推奨事項が適用されます。次に、その他の推奨される手順を示します。詳細については、「XML Web サービスのデバッグ」を参照してください。
セキュリティに問題のある Web サーバーではデバッグを有効にしないでください。
デバッグする前に、Web サーバーが安全であることを確認します。安全かどうかが確認できない場合は、デバッグしないでください。
インターネットに公開されている Web サービスをデバッグする場合は、特に注意が必要です。
外部コンポーネント
プログラムが外部コンポーネントとやり取りする場合、特に、外部コンポーネントのコードを自分で記述していない場合は、そのコンポーネントの信頼ステータスに注意します。また、Visual Studio またはデバッガで使用する可能性のあるコンポーネントにも注意します。
シンボルとソース コード
次の 2 つの Visual Studio ツールでは、セキュリティについて考慮する必要があります。
ソース サーバー。ソース コードのレポジトリからソース コードのバージョンを表示します。最新バージョンのプログラム ソース コードを持っていないときに便利です。詳細については、「方法 : ソース サーバーを使用してソース コードを取得する」および「セキュリティ警告 : デバッガは信頼されないコマンドを実行する必要があります」を参照してください。
シンボル サーバー。システム コール時のクラッシュをデバッグするときに必要な、シンボルを提供するときに使用されます。詳細については、「方法 : シンボル パスを指定する」および「方法 : シンボル サーバーを使用する」を参照してください。
参照
参照
セキュリティ警告 : 信頼されていないユーザーが所有するプロセスにアタッチするには危険が伴います。以下の情報に関して疑わしい点がある場合や、不明な場合は、このプロセスにアタッチしないでください。
セキュリティ警告 : デバッガは信頼されないコマンドを実行する必要があります