Windows 内核模式安全引用监视器

在开发设备驱动程序时,安全性是一个关键考虑因素,尤其是使用提升的权限在内核模式下运行的驱动程序。 在执行任何操作之前,操作系统必须确保该操作不会违反系统安全策略。 设备驱动程序需要机制来控制哪些进程和用户可以访问其设备,以及允许其执行哪些作。

Windows 安全参考监视器(SRM)是 Windows 安全体系结构的核心内核模式组件,用于在整个作系统中强制实施访问控制策略。 它验证每个访问系统对象的请求,并确保只有授权实体才能执行特定作。

安全参考监视器的关键功能

SRM 执行多个功能来维护系统安全性:

  • 访问控制强制实施:验证访问系统对象(如文件、注册表项和进程)的每个请求。
  • 安全策略实现:强制实施系统范围内的安全策略并实施最低特权原则。
  • 审核和日志记录:生成安全审核事件,并跟踪符合性和取证的安全相关活动。

体系结构组件

SRM 适用于多个关键数据结构和组件,以强制实施安全策略。

安全描述符

安全描述符 是包含对象安全信息的数据结构。

安全描述符中的信息存储在 访问控制列表(ACL)中。 Windows 使用 ACL 来确定哪些对象具有哪些安全性。

安全参考监视器例程

SRM 为驱动程序提供用于访问控制的例程。 为 SRM 提供直接接口的例程以字母 Se 为前缀。 常见的 SRM 例程包括:

可以在各种 WDK 标头(包括 ntifs.hwdm.h)中找到 Se 函数和相关实体的声明。

驱动程序执行场景

设备驱动程序通常在多个方案中使用 SRM 来实现适当的访问控制。

设备访问控制

驱动程序可以控制哪些用户可以访问特定硬件设备:

  • 在允许设备操作之前检查用户权限。
  • 为不同类型的用户实现不同的访问级别。
  • 将管理操作限制为特权用户。

操作验证

驱动程序可以确保只有经过授权的进程才能执行特定的设备作:

  • 在处理 I/O 请求之前验证安全上下文。
  • 检查敏感操作所需的特定权限。
  • 为特定于设备的函数实现自定义安全策略。

安全上下文管理

在使用模拟和不同安全上下文时,驱动程序可以:

  • 适当地处理模拟令牌。
  • 根据需要在不同安全上下文之间进行切换。
  • 在不同的用户会话之间维护安全边界。

安全原则

SRM 实施维护系统完整性至关重要的基本安全原则。

完成调解

每次访问尝试都必须经过参考监视器:

  • 不存在异常或绕过机制。
  • 确保所有系统组件的安全策略强制实施一致。
  • 防止通过替代代码路径进行未经授权的访问。

最小特权

参考监视器有助于实现最小权限原则:

  • 用户和进程应仅具有所需的最低权限。
  • 帮助最大程度地减少安全漏洞的潜在损害。
  • 通过仔细的 ACL 配置和特权管理来实现。