应用控制管理员提示 & 已知问题

注意

适用于企业的 App Control 的某些功能仅适用于特定 Windows 版本。 详细了解 应用控制功能可用性

本文介绍面向管理员的提示和技巧,以及适用于企业的 App Control 的已知问题。 在生产环境中启用此配置之前,请在实验室中测试此配置。

管理员提示和提示

应用控制策略文件位置

在以下位置找到多个策略格式应用控制策略,具体取决于策略是否已签名,以及所使用的策略部署方法。

  • <OS Volume>\Windows\System32\CodeIntegrity\CiPolicies\Active\{PolicyId GUID}.cip
  • <EFI 系统分区>\Microsoft\Boot\CiPolicies\Active\{PolicyId GUID}.cip

{PolicyId GUID} 值是策略唯一的,并在策略 XML <中使用 PolicyId> 元素定义。

对于 单策略格式应用控制策略,除了上述两个位置外,还可以在以下位置查找名为 SiPolicy.p7b 的文件:

  • <EFI 系统分区>\Microsoft\Boot\SiPolicy.p7b
  • <OS Volume>\Windows\System32\CodeIntegrity\SiPolicy.p7b

注意

任何策略文件位置下都可能存在使用单一策略格式 GUID {A244370E-44C9-4C06-B551-F6016E563076} 的多策略格式应用控制策略。

文件规则优先顺序

当应用控制引擎根据设备上的活动策略集评估文件时,将按以下顺序应用规则。 文件遇到匹配项后,应用控制将停止进一步处理。

  1. 与显式拒绝规则匹配的任何文件都将被阻止,即使你创建了其他规则来尝试允许它。 拒绝规则可以使用任何 规则级别。 在创建拒绝规则时,请实际使用最具体的规则级别,以避免阻止超出你的意图。

  2. 与显式允许规则匹配的任何文件都运行。

  3. 如果策略 (托管安装程序或 ISG) 启用匹配选项,则任何具有 托管安装程序智能安全图形 (ISG ) 扩展属性 (EA) 的文件将运行。

  4. 在策略中启用该选项时,将使用 ISG 检查任何基于上述条件不允许的文件的信誉。 如果 ISG 确定它是安全的,并且文件上写入了新的 ISG EA,则文件将运行。

  5. 显式规则不允许或基于 ISG 或托管安装程序的任何文件将被隐式阻止。

已知问题

审核模式下的应用控制策略可能会影响设备上的性能

当根据当前应用控制策略集评估文件时,应用控制引擎在传递活动策略时 (配置文件上设置内核扩展属性) 。 稍后,如果同一文件运行,应用控制会检查 EA,并重复使用缓存的结果,前提是策略生效保持不变。 此缓存机制可确保即使许多策略处于活动状态(包含大量规则)也能确保应用控制缩放。 但是,此性能优化不用于审核模式下的策略。 在某些情况下,仅实施策略的系统与具有审核策略的系统相比,可能会观察到性能差异。

在云中检查多个文件时,智能安全图 (ISG) 选项可能会影响性能

ISG 选项是应用控件的一项非常重要的功能,它减轻了管理单个文件和应用规则的复杂性。 但是,由于它依赖于基于云的人工智能 (AI) 模型,因此应避免依赖 ISG 来决定需要运行的重要应用和文件。 对于关键工作负载、Windows OS 代码(尤其是启动期间运行的代码)或性能最关键的情况,不建议依赖 ISG。 应尽可能确保策略中存在显式规则,或使用托管安装程序而不是 ISG 来减少策略管理开销。

在考虑 ISG 对性能影响的容忍度时,还要考虑 上述问题对审核模式策略性能的影响。 尝试避免在审核模式下运行严重依赖于大量文件的 ISG 授权的策略。

如果超过 32 个策略处于活动状态,则启动停止失败 (蓝屏)

在应用 2024 年 4 月 9 日或之后发布的 Windows 安全更新之前,你的设备限制为 32 个活动策略。 如果超过最大策略数,则设备将引用 ci.dll 的蓝屏,检查值为 0x0000003b。 规划应用控制策略时,请考虑此最大策略计数限制。 设备上处于活动状态的任何 Windows 收件箱策略 也会计入此限制。 若要删除最大策略限制,请安装 2024 年 4 月 9 日或之后发布的 Windows 安全更新,然后重启设备。 否则,请减少设备上的策略数,以保持低于 32 个策略。

注意

策略限制未在 21H2 Windows 11中删除,仍限制为 32 个策略。

审核模式策略可能会更改某些应用的行为或导致应用崩溃

尽管应用控制审核模式旨在避免对应用产生任何影响,但某些功能始终启用/始终通过任何应用控制策略强制实施,该策略启用用户模式代码完整性 (UMCI) 选项 0 Enabled:UMCI。 下面是审核模式下的已知系统更改列表:

  • 某些脚本主机可能会阻止代码或以较少的权限运行代码,即使在审核模式下也是如此。 有关单个脚本主机行为的信息,请参阅 使用应用控制执行 脚本。
  • 选项 19 已启用:如果任何 UMCI 策略在某些版本的 Windows 和 Windows Server 上包含该选项,则始终强制实施动态代码安全性。 请参阅 应用控件和 .NET

.NET 本机映像可能会生成误报块事件

在某些情况下,写入适用于企业的 App Control 错误和警告的代码完整性日志包括为 .NET 程序集生成的本机映像的错误事件。 通常,本机映像块在功能上是良性的,因为被阻止的本机映像回退到其相应的程序集,并且 .NET 在其下一个计划的维护时段重新生成本机映像。 若要防止出现这种问题,请提前将 .NET 应用程序编译为 本机代码 功能。

.NET 不会 (COM 加载组件对象模型) GUID 不匹配的对象

COM 对象使不同的软件组件可以轻松进行通信和协同工作。 若要供其他组件使用,COM 对象必须注册到作系统。 注册包括基于对象的代码计算的 GUID。 COM 对象的加载和激活使用注册的另一部分(称为类型名称)完成。 有时,已注册的 GUID 与激活的 COM 对象代码的实际 GUID 之间存在不匹配。 不匹配可能来自应用的 COM 对象注册代码中的 bug,或者 COM 对象的代码是否以影响 GUID 的方式更改。 通常,Windows 和 .NET 对此条件是宽容的,并运行 COM 对象的代码,不管如何。 但是,允许 COM 对象加载到存在 GUID 不匹配的位置会使系统容易受到攻击者的攻击,攻击者可以利用 GUID 混淆来运行意外代码。

为了提高应用控制对易受此攻击技术的系统的保护效果,.NET 对注册的 COM 对象 GUID 与系统计算的 GUID 匹配检查应用了额外的验证。 如果发现不匹配,则 .NET 不会加载 COM 对象,并引发常规 COM 加载错误。 使用具有此条件的 COM 对象的应用的行为方式可能出乎意料,必须进行更新才能修复应用的 COM 对象注册代码问题。

由于此行为仅在对用户模式代码强制实施应用控制策略时发生,因此在审核模式下无法检测到它。 当 COM 对象由于额外的验证检查而无法加载时,没有日志记录或其他事件。 修复或重新安装应用可以暂时解决问题,但需要应用更新来修复 COM 注册问题并防止将来出现该问题。

没有用于管理 的策略控制选项。NET 的 GUID 验证检查,这意味着始终执行检查。 如果在部署应用控制策略后看到 COM 对象失败,请联系软件开发人员或独立软件供应商 (ISV) 谁生成应用,请求解决问题。

不支持使用椭圆曲线加密 (ECC) 签名

基于应用控制签名者的规则仅适用于 RSA 加密。 不支持 ECC 算法,例如 ECDSA。 如果应用控制基于 ECC 签名阻止文件,则相应的 3089 签名信息事件将显示 VerificationError = 23。 如果文件也使用 RSA 签名,则可以改为通过哈希或文件属性规则或其他签名者规则来授权文件。

当 FilePath 规则允许时,MSI 安装程序被视为用户可写Windows 10

在 Windows 10 和 Windows Server 2022 及更早版本上,MSI 安装程序文件始终被检测为用户可写文件。 如果需要允许使用 FilePath 规则的 MSI 文件,则必须在应用控制策略中设置选项 18 Disabled:Runtime FilePath Rule Protection

阻止直接从 Internet 启动的 MSI 安装程序

将 .msi 文件直接从 Internet 安装到受应用控制保护的计算机失败。 例如,此命令失败:

msiexec -i https://download.microsoft.com/download/2/E/3/2E3A1E42-8F50-4396-9E7E-76209EA4F429/Windows10_Version_1511_ADMX.msi

作为解决方法,请下载 MSI 文件并在本地运行它:

msiexec -i c:\temp\Windows10_Version_1511_ADMX.msi

使用自定义策略时启动和性能缓慢

应用控制评估运行的所有进程,包括收件箱 Windows 进程。 如果你的策略不是基于应用控制模板构建的,或者不信任 Windows 签名者,可能会导致启动时间变慢、性能下降,并可能出现启动问题。 出于这些原因,应尽可能使用 应用控制基本模板 来创建策略。

AppId 标记策略评估不在标记范围内的 DLL 文件

使用 AppId 标记策略时,结果是元数据,即“标记”,添加到通过策略的任何可执行文件的进程令牌中。 然后,可以使用标记更改了解 AppId 标记并在进程上查找匹配标记的应用或组件的行为。 例如,可以设置一个 Windows 防火墙规则,该规则使用自定义标记来标识应允许通过防火墙进行连接的进程。 AppId 标记仅适用于可执行文件 (EXE) ,永远不会应用于其他类型的代码,例如动态链接库 (DLL) 。 但是,当 DLL 运行时,应用控件会根据策略评估文件,除非存在允许该类型的所有文件的规则。 若要使 DLL 的策略评估短路并进一步降低应用控制对性能的影响,请将以下规则添加到 AppId 标记策略:

允许策略中的所有 dll。

允许 xml 策略中的所有 dll 文件。