补充 WDAC 策略不会覆盖基本 WDAC 策略中的阻止规则(Microsoft 推荐的阻止规则)

补充 WDAC 策略不会覆盖基本 WDAC 策略中的阻止规则(Microsoft 推荐的阻止规则)

我正在创建 Windows Defender 应用程序控制 (WDAC) 补充策略,以补充基本策略。基本策略与Microsoft 推荐的阻止规则。这意味着基本策略默认阻止 WSL.exe(适用于 Linux 的 Windows 子系统)。

<Deny ID="ID_DENY_WSL_1_0" FriendlyName="wsl.exe" FileName="wsl.exe" MinimumFileVersion="0.0.0.0" MaximumFileVersion="65355.65355.65355.65355" />

微软官方声明“基本策略或补充策略允许的文件不会被阻止”。因此,我试图在补充策略中允许 WSL。但是,对于我尝试创建的三个补充策略,WSL 仍被阻止。 我尝试通过 Hash 和 FileName 来允许 WSL(FileName 是在基本策略中阻止它的方式。)

以下是我创建的补充政策中的一些选项/ XML 片段:

补充政策1:

<!--Rules section Empty for this one-->
<Rules />

<FileRules>
   <Allow ID="ID_ALLOW_A_A0" FriendlyName="%OSDRIVE%\Windows\System32\wsl.exe Hash Sha256" Hash="CBDD7637A5E15F9A97CE2D94D2AD1557CAD51482C43D13836FB15686DD143276" />
   <Allow ID="ID_ALLOW_A_A1" FriendlyName="%OSDRIVE%\Program Files\WSL\wslhost.exe Hash Sha256" Hash="F5B963957EF92B833DFF05D17AEA9B71FC3939BBD91749672DBB69A75466FA89" />
</FileRules>

<SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="Auto generated policy on 11-17-2023">
    <ProductSigners>
      <FileRulesRef>
        <FileRuleRef RuleID="ID_ALLOW_A_A0" />
        <FileRuleRef RuleID="ID_ALLOW_A_A1" />
      </FileRulesRef>
    </ProductSigners>
</SigningScenario>

补充政策2:

<Rules>
  <Rule>
    <Option>Enabled:UMCI</Option>
  </Rule>
</Rules>

  <FileRules>
     <Allow ID="ID_ALLOW_A_1_0_0" FriendlyName="C:\Windows\System32\wsl.exe Hash Sha1" Hash="FC085F2DC1905756BAE4A0214483C37BDEAE61AC" />
     <Allow ID="ID_ALLOW_A_2_0_0" FriendlyName="C:\Windows\System32\wsl.exe Hash Sha256" Hash="CBDD7637A5E15F9A97CE2D94D2AD1557CAD51482C43D13836FB15686DD143276" />
     <Allow ID="ID_ALLOW_A_3_0_0" FriendlyName="C:\Windows\System32\wsl.exe Hash Page Sha1" Hash="0AD1F7968A49FD372E319E79F01D23D8DCAE331A" />
     <Allow ID="ID_ALLOW_A_4_0_0" FriendlyName="C:\Windows\System32\wsl.exe Hash Page Sha256" Hash="30D8D7D71B0FB2EB24CCD0CFEED91AF2D7719B50E58BBD515C6463CF9D915FA4" />
  </FileRules>

<SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="Auto generated policy on 11-17-2023">
      <ProductSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_A_1_0_0" />
          <FileRuleRef RuleID="ID_ALLOW_A_2_0_0" />
          <FileRuleRef RuleID="ID_ALLOW_A_3_0_0" />
          <FileRuleRef RuleID="ID_ALLOW_A_4_0_0" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
  </SigningScenarios>

补充政策3:

<Rules>
    <Rule>
      <Option>Enabled:UMCI</Option>
    </Rule>
  </Rules>
<FileRules>
    <Allow ID="ID_ALLOW_A_0_0_1" FriendlyName="Allow files based on file attributes: wsl.exe and wsl.exe" FileName="wsl.exe" InternalName="wsl.exe" />
  </FileRules>
<!--Driver Signing Scenarios-->
  <SigningScenarios>
    <SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_DRIVERS_1" FriendlyName="Auto generated policy on 11-17-2023">
      <ProductSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_A_0_0_1" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
    <SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="Auto generated policy on 11-17-2023">
      <ProductSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_A_0_0_1" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
  </SigningScenarios>

值得注意的是,最后两项补充策略部分是在 WDAC 向导的帮助下创建的。

另请注意,基本政策和补充政策都是WDAC 政策。

我尝试过的事情:

  1. 我已经验证了策略正在刷新和激活,通过验证事件查看器中是否存在事件 ID 3099(位于应用程序和服务日志 > Microsoft > Windows > CodeIntegrity)

  2. 我已验证策略已正确签名,并已正确放入 EFI 分区。(基本策略运行良好。)我在 PowerShell 中使用 ConvertFrom-CIPolicy 将 .XML 文件转换为 .CIP 文件。我使用 SignTool 签署策略,确保将其重命名回 .CIP 文件。

  3. 我已检查基本策略是否允许补充策略(即,验证了“已启用:允许补充策略”的存在),并包含 SupplementalPolicySigners 和 UpdatePolicySigners。(基本策略中启用的其他选项包括:“已启用:高级启动选项菜单”、“已启用:UMCI”、“已启用:更新策略无需重启”、“必需:WHQL”、“必需:强制商店应用程序”、“已启用:动态代码安全”)

  4. 我已经重启过设备几次,并且多次使用官方的 Microsoft Refresh Policy 工具。我的设备已启用安全启动。

  5. 我尝试打开和关闭补充策略的 Hypervisor-Protected-Code-Integrity 选项(使用 PowerShell 中的 Set-HVCIOptions)。HVCI 在基础策略中启用。

  6. 我注意到一个奇怪的怪癖是,如果你使用 WDAC 向导添加 WSL.exe 并选择文件属性,则文件名显示为“WSL.exe.mui”,所以我尝试创建带有和不带有这个特定 OriginalFileName 的补充策略(即 WSL.exe.mui 和 WSL.exe)。

  7. 我甚至尝试添加文件路径规则以允许 System32 中的所有内容,但这似乎不起作用:

    <Allow ID="ID_ALLOW_PATH_0_0_1" FriendlyName="Allow by path: " FilePath="%SYSTEM32%\*" />
    

我正在Windows 10 专业版 22H2

答案1

我发现,答案是,虽然可以允许隐含地补充策略中拒绝的应用程序(例如,未包含在拒绝所有基本 WDAC 策略中的应用程序),您无法覆盖明确地拒绝补充政策申请。来源:@SpyNet地点:“当基本策略对某个文件有拒绝规则,而我们在补充策略中允许同一个文件时,该文件仍将被阻止,因为显式拒绝规则具有最高优先级。”

微软必须澄清原始问题中提到的文章中的措辞。

相关内容