別のプロセスをデバッグする機能により、特にリモートでデバッグする場合は特に、それ以外の方法では得られない非常に広範な機能が得られます。 悪意のあるデバッガーは、デバッグ中のコンピューターに広範囲の損害を与える可能性があります。
ただし、多くの開発者は、セキュリティ上の脅威が逆の方向に流れる可能性があることを認識していません。 デバッグ対象プロセスの悪意のあるコードがデバッグ マシンのセキュリティを危険にさらす可能性があります。保護する必要があるセキュリティの悪用が多数存在します。
セキュリティのベスト プラクティス
デバッグしているコードとデバッガーの間には暗黙的な信頼関係があります。 何かをデバッグする場合は、それを実行することもできます。 要するに、デバッグしている内容を信頼できる必要があります。 信頼できない場合は、デバッグしないでください。または、危険にさらされる可能性があるコンピューターから、または分離された環境でデバッグする必要があります。
潜在的な攻撃対象領域を減らすには、実稼働マシンでデバッグを無効にする必要があります。 同じ理由から、デバッグを無期限に有効にしないでください。
マネージド デバッグのセキュリティ
すべてのマネージド デバッグに適用される一般的な推奨事項を次に示します。
信頼されていないユーザーのプロセスにアタッチする際は注意してください。その場合、そのプロセスを信頼できるものとみなすことになります。 信頼されていないユーザーのプロセスにアタッチしようとすると、プロセスにアタッチするかどうかを確認するセキュリティ警告ダイアログ ボックスが表示されます。 "信頼されたユーザー" には、ユーザーと、.NET Framework がインストールされているコンピューターで一般的に定義されている一連の標準ユーザー ( aspnet、 localsystem、 networkservice、 localservice など) が含まれます。 詳細については、「 セキュリティ警告: 信頼されていないユーザーが所有するプロセスへのアタッチは危険である可能性があります」を参照してください。次の情報が疑わしいと思われる場合、または不明な場合は、このプロセスにアタッチしないでください。
プロジェクトをインターネットからダウンロードして Visual Studio に読み込む場合は注意してください。 これは、デバッグを行わない場合でも、非常に危険です。 この操作を行うと、プロジェクトとそのプロジェクトに含まれるコードが信頼できると想定されます。
詳細については、「 マネージド コードのデバッグ」を参照してください。
リモート デバッグのセキュリティ
ローカル デバッグは通常、リモート デバッグよりも安全です。 リモート デバッグを使用すると、プローブできるサーフェス領域の合計が増加します。
Visual Studio リモート デバッグ モニター (msvsmon.exe) はリモート デバッグで使用され、構成するためのセキュリティに関するいくつかの推奨事項があります。 認証モードの構成には、Windows 認証が推奨されます。これは、認証なしモードが安全ではないためです。
Windows 認証モードを使用する場合は、信頼されていないユーザーに msvsmon への接続アクセス許可を付与することは危険であることに注意してください。これは、msvsmon をホストしているコンピューターに対するすべてのアクセス許可がユーザーに付与されるためです。
リモート コンピューターで不明なプロセスをデバッグしないでください。デバッガーを実行しているマシンに影響を与える可能性がある、または msvsmon を侵害する可能性がある潜在的な悪用があります。 不明なプロセスを絶対にデバッグする必要がある場合は、ローカルでデバッグを試し、ファイアウォールを使用して潜在的な脅威をローカライズしてください。
msvsmon の構成の詳細については、「 リモート デバッガーの設定」を参照してください。
Web サービスのデバッグ のセキュリティ
ローカルでデバッグする方が安全ですが、Visual Studio が Web サーバーにインストールされていない可能性があるため、ローカル デバッグは実用的でない可能性があります。 一般に、Web サービスのデバッグは開発時を除いてリモートで実行されるため、リモート デバッグ セキュリティの推奨事項は Web サービスのデバッグにも適用されます。 その他のベスト プラクティスを次に示します。 詳細については、「 XML Web サービスのデバッグ」を参照してください。
侵害された Web サーバーでデバッグを有効にしないでください。
デバッグする前に、Web サーバーがセキュリティで保護されていることを確認してください。 セキュリティで保護されているかどうかわからない場合は、デバッグしないでください。
インターネット上で公開されている Web サービスをデバッグする場合は特に注意してください。
外部コンポーネント
特にコードを記述しなかった場合は、プログラムが対話する外部コンポーネントの信頼状態に注意してください。 また、Visual Studio またはデバッガーが使用するコンポーネントにも注意してください。
シンボルとソース コード
セキュリティについて考える必要がある 2 つの Visual Studio ツールは次のとおりです。
ソース サーバー。ソース コード リポジトリのソース コードのバージョンを提供します。 プログラムのソース コードの現在のバージョンがない場合に便利です。 セキュリティ警告: デバッガーは信頼されていないコマンドを実行する必要があります。
シンボル サーバー。システム呼び出し中にクラッシュをデバッグするために必要なシンボルを提供するために使用されます。
「シンボル (.pdb) ファイルとソース ファイルの指定」を参照してください