原始发布日期: 2025 年 10 月 28 日
KB ID:5056852
以下 Windows 版本中提供了这种强化身份验证缓解措施:
-
Windows 11 2025 年 10 月 28 日或之后发布的版本 25H2 和 Windows Server 2025 更新
本任务的内容
摘要
通用日志文件系统 (CLFS) 驱动程序引入了新的强化身份验证缓解措施,该驱动程序将基于哈希的消息身份验证代码 (HMAC) 添加到 CLFS 日志文件的基础文件。 身份验证代码是通过将文件数据与系统唯一的加密密钥相结合创建的,该密钥存储在注册表中,仅供管理员和 SYSTEM 访问。 身份验证代码将允许 CLFS 检查文件的完整性,确保文件数据在分析其内部数据结构之前是安全的。 如果完整性检查失败并拒绝打开日志文件,则 CLFS 假定此文件在外部进行了恶意或其他修改。 若要继续,必须创建一个新的日志文件,或者管理员需要使用 fsutil 命令手动对其进行身份验证。
缓解采用期
接收具有此 CLFS 版本的更新的系统很可能在系统上具有没有身份验证代码的现有日志文件。 为了确保这些日志文件转换为新格式,系统将 CLFS 驱动程序置于“学习模式”中,这将指示 CLFS 自动将身份验证代码添加到没有它们的日志文件。 只有在调用线程具有写入文件所需的访问权限时,才会在日志文件打开时自动添加身份验证代码。 目前,采用期从系统首次使用此版本的 CLFS 开始持续 90 天。 在此 90 天采用期过后,驱动程序将在下次启动时自动转换为强制模式,之后 CLFS 将要求所有日志文件包含有效的身份验证代码。 请注意,此 90 天值将来可能会更改。
如果在此采用期间未打开日志文件,因此未自动转换为新格式,则 fsutil clfs authenticate 命令行实用工具可用于向日志文件添加身份验证代码。 此作要求调用方为管理员。
用户影响
此缓解措施可能会通过以下方式影响 CLFS API 的使用者:
-
由于用于使身份验证代码的加密密钥是系统唯一的,因此日志文件不再在系统之间可移植。 若要打开在远程系统上创建的日志文件,管理员必须先使用 fsutil clfs authenticate 实用工具,使用本地系统加密密钥对日志文件进行身份验证。
-
扩展名为“.cnpf”的新文件将与二进制日志记录文件 (BLF) 和数据容器一起存储。 如果日志文件的 BLF 位于“C:\Users\User\example.blf”,则其“修补程序文件”应位于“C:\Users\User\example.blf.cnpf”。 如果未完全关闭日志文件,修补程序文件将保存 CLFS 恢复日志文件所需的数据。 将创建修补程序文件时,其 安全属性 与它提供恢复信息的文件相同。 此文件最多与 [FlushThreshold] ) (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CLFS\Parameters“FlushThreshold”相同。
-
存储身份验证代码需要额外的文件空间。 身份验证代码所需的空间量取决于文件大小。 有关日志文件所需的额外数据量估计,请参阅以下列表:
-
512KB 容器文件需要额外约 8192 字节的身份验证代码。
-
1024KB 容器文件需要额外约 12288 字节的身份验证代码。
-
10MB 容器文件需要额外约 90112 字节的身份验证代码。
-
100MB 容器文件需要额外约 57344 字节的身份验证代码。
-
4GB 容器文件需要额外的 ~2101248 个字节作为身份验证代码。
-
-
由于用于维护身份验证代码的 I/O作增加,执行以下作所需的时间已增加:
-
日志文件创建
-
logfile 打开
-
写入新记录
日志文件创建和打开日志文件的时间增加完全取决于容器的大小,而较大的日志文件具有更明显的影响。 平均而言,写入日志文件中的记录所需的时间增加了一倍。
-
配置
与此缓解措施相关的设置存储在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CLFS\Authentication 的注册表中。 下面是注册表项注册表值及其用途的列表:
-
模式:缓解措施的作模式
-
0:强制实施缓解措施。 CLFS 无法打开缺少或无效身份验证代码的日志文件。 使用此版本的驱动程序运行系统 90 天后,CLFS 将自动转换为强制模式。
-
1:缓解措施处于学习模式。 CLFS 将始终打开日志文件。 如果日志文件缺少身份验证代码,则 CLFS 将生成代码并将其写入文件, (假设调用方具有写入权限) 。
-
2:管理员禁用了缓解措施。
-
3:系统自动禁用缓解措施。 管理员不应将“模式”设置为此值,但如果要禁用缓解措施,则应使用“2”。
-
-
EnforcementTransitionPeriod:系统将在采用期间花费的时间(以秒为单位)。 如果此值为零,则系统不会自动转换为强制实施。
-
LearningModeStartTime:在系统上启动学习模式的时间戳。 此值与“EnforcementTransitionPeriod” 结合使用将确定系统何时应转换为强制模式。
-
密钥:用于 (HMAC) 创建身份验证代码的加密密钥。 管理员不应修改此值。
管理员可以通过将 Mode 值更改为 2 来完全禁用缓解措施。 若要延长缓解采用期,管理员可以将 EnforcementTransitionPeriod (秒) 更改为你选择 (的任何值;如果要禁用自动过渡到强制模式) ,则将其更改为 0 。
使用本地组策略 编辑器更新组策略设置
可以使用 组策略 设置启用或禁用 CLFS 身份验证:
-
在 Windows 控制面板中打开本地组策略 编辑器。
-
在“ 计算机配置”下,选择“管理模板 > 系统 > 文件系统”,在 “设置 ”列表中,双击“启用/禁用 CLFS 日志文件身份验证”。
-
选择“启用或禁用”,然后单击“确定”。 如果选择了“未配置”,则默认启用缓解措施。
使用 Intune 更新组策略/MDM 设置
若要使用 Microsoft Intune 更新组策略并配置 CLFS 身份验证,请执行以下作:
-
打开 Intune 门户 (https://endpoint.microsoft.com) 并使用凭据登录。
-
创建配置文件:
-
选择“设备 > Windows > 配置 > 创建 > 新策略”。
-
选择“平台 > Windows 10及更高版本”。
-
选择“配置文件类型 > 模板”。
-
搜索并选择“自定义”。
-
-
设置名称和说明:
-
添加新的 OMA-URI 设置:
-
编辑 OMA-URI 设置:
-
添加一个名称,例如 ClfsAuthenticationCheck。
-
(可选)添加说明。
-
将 OMA-URI 路径设置为以下项:./Vendor/MSFT/Policy/Config/FileSystem/ClfsAuthenticationChecking
-
将“数据类型”设置为“字符串”。
-
将 “值 ”设置为 <enabled/> 或 <disabled/>。
-
单击保存。
-
-
完成“作用域标记和分配”的剩余配置,然后选择“创建”。
对 CLFS API 的更改
为了避免对 CLFS API 进行重大更改,现有错误代码用于向调用方报告完整性检查失败:
-
如果 CreateLogFile 失败, 则 GetLastError 将返回 ERROR_LOG_METADATA_CORRUPT 错误代码。
-
对于 ClfsCreateLogFile,当 CLFS 无法验证日志文件的完整性时,将返回 STATUS_LOG_METADATA_CORRUPT 状态。
常见问题解答 ()
(HMAC) 身份验证代码已添加到 CLFS 日志文件,使 CLFS 驱动程序能够在分析文件之前检测 (恶意) 修改。 当缓解措施在收到此更新 () 90 天后转换为强制模式时,CLFS 将要求身份验证代码存在且有效,才能成功打开日志文件。
在此版本的 CLFS 驱动程序处于活动状态的前 90 天内,驱动程序会在 CreateLogFile 或 ClfsCreateLogFile 打开时自动向日志文件添加身份验证代码。
在此 90 天采用期结束后,需要使用 fsutil clfs 身份验证 工具将身份验证代码添加到旧日志文件或现有日志文件。 此工具要求调用方是管理员。
由于身份验证代码是使用系统唯一的加密密钥创建的,因此无法打开在另一个系统上创建的日志文件。 若要使用本地系统的加密密钥更正身份验证代码,管理员可以使用 fsutil clfs 身份验证 工具。 此工具要求调用方位于“管理员”组中。
尽管我们不建议这样做,但管理员可以通过将 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CLFS\Authentication [Mode] 修改为 值 2 来禁用此缓解措施。
为此,请使用 PowerShell 并运行以下命令:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\CLFS\Authentication” -Name Mode -Value 2
术语表
强化 是一个过程,它通过限制使系统易受攻击的潜在弱点来帮助防范未经授权的访问、拒绝服务和其他威胁。
安全属性用于存储信息并强制实施对特定资源的精细访问控制。