開發裝置驅動程式時,安全性是一個重要的考慮因素,特別是在核心模式下以提升權限運作的驅動程式。 在執行任何動作之前,作業系統必須確保動作不會違反系統安全性原則。 裝置驅動程式需要機制來控制哪些進程和使用者可以存取其裝置,以及允許他們執行哪些作業。
Windows 安全性參考監視器 (SRM) 是 Windows 安全性架構的核心核心模式元件,可在整個作業系統中強制執行存取控制原則。 它驗證每個存取系統物件的請求,並確保只有授權實體才能執行特定操作。
安全參考監控器的主要功能
SRM 執行數個功能來維護系統安全:
- 存取控制強制執行:驗證存取系統物件(例如檔案、登錄機碼和進程)的每個請求。
- 安全策略實施:強制執行系統範圍的安全策略並實施最小權限原則。
- 審計和記錄: 生成安全審計事件並追蹤安全相關活動以進行合規和取證。
架構元件
SRM 可與數個關鍵資料結構和元件搭配使用,以強制執行安全原則。
安全性描述元
安全描述子 是包含物件安全資訊的資料結構。
安全描述子中的資訊儲存在 存取控制清單 (ACL) 中。 Windows 會使用 ACL 來判斷哪些物件具有哪些安全性。
安全性參考監視例程
SRM 為您的驅動程式提供處理存取控制的程式。 提供 SRM 直接介面的常式會以字母 Se 為字首。 常見的 SRM 常式包括:
- SeAccessCheck:針對安全性描述元執行存取驗證。
- SePrivilegeCheck:檢查權杖是否具有特定許可權。
- SeSinglePrivilegeCheck:檢查目前執行緒內容中存取權杖中的單一許可權。
- SeTokenType:判斷權杖是主要權杖還是模擬權杖。
您可以在各種 WDK 標頭中找到 Se 函式和相關實體的宣告,包括 ntifs.h 和 wdm.h。
驅動程式實作案例
裝置驅動程式通常會在數個案例中使用 SRM 來實作適當的存取控制。
裝置存取控制
驅動程式可以控制哪些使用者可以存取特定硬體裝置:
- 在允許裝置操作之前檢查使用者權限。
- 為不同類型的使用者實作不同的存取層級。
- 將管理作業限制為特殊許可權使用者。
操作驗證
驅動程式可以確保只有授權的進程才能執行特定的裝置作業:
- 在處理 I/O 要求之前驗證安全性內容。
- 檢查敏感操作所需的特定權限。
- 為裝置特定功能實施自訂安全策略。
安全內容管理
使用身份模擬和不同安全性上下文的驅動程式可以:
- 適當地處理模擬身份憑證。
- 視需要在不同的安全環境之間切換。
- 維護不同使用者工作階段之間的安全界限。
安全原則
SRM 實作基本安全原則,這些原則對於維護系統完整性至關重要。
完成調解
每次存取嘗試都必須通過參考監視器:
- 不存在例外或略過機制。
- 確保所有系統元件的安全策略執行一致。
- 防止透過替代程式碼路徑進行未經授權的存取。
最低權限
參考監視器有助於實現最小權限原則:
- 使用者和進程應該只具有所需的最低權限。
- 有助於最大限度地減少安全漏洞造成的潛在損害。
- 透過仔細的 ACL 設定和權限管理來實作。