DoubleFetch 规则 (wdm)

DoubleFetch 规则是一个重要的安全规则,用于检查驱动程序是否安全地访问通过 IRP 传递到用户空间的缓冲区。 使用非缓冲 I/O 和直接 I/O 介绍了在驱动程序和用户模式组件之间安全发送数据的适当方法。

驱动程序应按照访问数据缓冲区的方法中所述的准则和最佳做法 访问数据缓冲区

此规则检查用户模式内存指针的双重提取。 用户模式内存的双重内核模式访问可能会导致争用条件安全问题。 访问用户模式数据时,内核模式代码需要在本地复制用户模式数据,并避免多次访问用户模式数据。 否则会导致一种称为“双重提取”的问题,其中数据在首次访问后可能会更改。

此规则从Windows 10 WDK 版本 20236 开始可用。 此规则仅适用于 WDM泛型 驱动程序类型。

驱动程序模型:WDM、泛型

如何测试

编译时:

  1. 运行 静态驱动程序验证程序 并指定 双取 规则。

  2. 使用使用 静态驱动程序验证程序查找 Windows 驱动程序中的缺陷) 中找到 (以下步骤运行代码分析:

有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷