偵錯另一個程序的能力可讓您擁有非常廣泛的權限,尤其是在遠端偵錯時。 惡意調試程式可能會在偵錯的計算機上造成廣泛的損害。
不過,許多開發人員都不知道安全性威脅也可以向相反的方向流動。 偵錯程式被調試的進程中的惡意代碼可能會危及偵錯機器的安全性:必須防範許多安全性漏洞。
安全性最佳做法
您要偵錯的程式代碼與調試程式之間有隱含信任關係。 如果您願意偵錯某個專案,也應該願意執行它。 底線是您必須能夠信任您要偵錯的內容。 如果您無法信任它,則不應對其進行偵錯,或應該在一台您能承受風險的計算機上進行偵錯,並在隔離的環境中進行。
為了減少潛在的受攻擊面,應該在生產計算機上停用偵錯。 基於同樣的原因,偵錯不可無期限地啟用。
管理的除錯安全性
以下是適用於所有管理的偵錯過程的一般建議。
當您附加至不受信任的使用者程序時請小心:這樣做意味著您假設它是可信賴的。 當您嘗試附加至不受信任的用戶進程時,會出現安全性警告對話框確認,詢問您是否要附加至進程。 「信任的使用者」包含您,以及一組通常定義於已安裝 .NET Framework 的計算機上的標準使用者,例如 aspnet、 localsystem、 networkservice 和 localservice。 如需詳細資訊,請參閱 安全性警告:附加至不受信任的使用者所擁有的進程可能會很危險。如果下列資訊看起來可疑,或您不確定,請勿附加至此程式。
從因特網下載專案並載入Visual Studio時請小心。 即使沒有偵錯,這也是非常有風險的。 當您這樣做時,假設專案及其包含的程式代碼值得信任。
如需詳細資訊,請參閱 偵錯受控代碼。
遠端偵錯安全性
本機偵錯通常比遠端偵錯更安全。 遠端偵錯會增加可探測的總複雜度。
Visual Studio 遠端偵錯監視器 (msvsmon.exe) 用於遠端偵錯,而且有數個設定安全性建議。 設定驗證模式的慣用方式是 Windows 驗證,因為沒有驗證模式不安全。
使用 Windows 驗證模式時,請注意,授與未受信任的用戶連線到 msvsmon 的許可權很危險,因為使用者已獲授與裝載 msvsmon 之計算機上的所有許可權。
請勿在遠端電腦上對未知程序進行除錯:可能存在會影響執行除錯工具的電腦的漏洞,或者可能會危害 msvsmon。 如果您絕對必須偵錯未知的進程,請嘗試在本機偵錯,並使用防火牆來保留本地化的任何潛在威脅。
如需設定 msvsmon 的相關信息,請參閱 設定遠端調試程式。
網路服務除錯安全性
在本機偵錯更安全,但因為您可能未在網頁伺服器上安裝Visual Studio,所以本機偵錯可能並不實用。 一般而言,偵錯 Web 服務會從遠端完成,但開發期間除外,因此遠端偵錯安全性的建議也適用於 Web 服務偵錯。 以下是一些其他最佳做法。 如需詳細資訊,請參閱 偵錯 XML Web 服務。
請勿在遭到入侵的網頁伺服器上啟用偵錯。
在偵錯 Web 伺服器之前,請確定您知道網頁伺服器是安全的。 如果您不確定它是安全的,請勿進行偵錯。
如果您要偵錯因特網上公開的 Web 服務,請特別小心。
外部元件
請注意程式與外部元件互動的信任狀態,特別是如果您未撰寫程序代碼。 也請注意 Visual Studio 或調試程式可能會使用的元件。
符號和原始程式碼
需要考慮安全性的兩個 Visual Studio 工具如下:
來源伺服器,提供您原始程式碼存放庫的原始程式碼版本。 當您沒有程式原始程式碼的目前版本時,它很有用。 安全性警告:調試程式必須執行不受信任的命令。
符號伺服器,用來提供在系統呼叫期間偵錯當機所需的符號。