資料執行保護 (Data Execution Prevention, DEP) 是硬體與作業系統協同的安全機制,標記記憶體頁面為不可執行,阻止惡意程式碼在資料區 (堆疊、堆積) 執行。Windows Server 2008 預設僅保護核心系統服務,本文說明如何擴展 DEP 保護範圍至指定應用程式,並處理相容性衝突。
預設為「僅為基本 Windows 程式和服務啟用 DEP」 (選擇退出模式)。若需保護特定第三方應用 (如資料庫、Web 伺服器、自製服務),需將其加入保護清單:
C:\Program Files\MyApp\MyApp.exe) → 開啟。舊版應用 (特別是使用舊版 Delphi、VB6、某些即時編譯器) 可能因合法動態程式碼產生觸發 DEP 終止。排除步驟:
最佳實務: 優先嘗試向廠商取得相容 DEP 的更新版本;若必須排除,請記錄風險並納入例外管理清單,定期檢視是否可移除例外。
wmic OS Get DataExecutionPrevention_SupportPolicy, DataExecutionPrevention_Available, DataExecutionPrevention_Drivers, DataExecutionPrevention_32BitApplicationsbcdedit /set nx AlwaysOn (需重開機)。bcdedit /set nx OptIn (預設)。DepTest.exe (或自行編寫簡單緩衝區溢位測試程式)。Application Error 事件 ID 1000 會記錄 DEP 違規詳細資訊。正確配置 DEP 是 Windows Server 2008 纵深防禦的關鍵一環,能以近乎零效能成本阻斷大類記憶體損壞漏洞利用,建議對所有面向網路、處理非受信資料的關鍵服務強制啟用硬體 DEP 保護。