CVE-2026-56155:AD FS 分布式密钥管理器容器 ACL 强化

应用对象
Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server, version 23H2 Windows Server 2025

注意

原始发布日期: 2026 年 7 月 14 日
KB ID: 5121391

摘要

分布式密钥管理器 (DKM) 容器上的访问控制列表 (ACL) 从 2026 年 7 月 14 日 Windows 安全更新开始进入其第一个强化阶段。 此强化工作解决了可能由 CVE-2026-56155 中所述的漏洞引起的特权提升 (EOP) 。

总之,Active Directory 联合身份验证服务 (AD FS) 依赖于 DKM 容器来存储用于保护私钥的令牌签名和令牌加密证书的对称密钥。 如果容器的 ACL 过于宽松,则对 DKM 密钥材料具有读取访问权限的攻击者可以解密令牌签名私钥。

针对此漏洞的强化从审核模式开始,该模式引入了对不安全的 DKM 容器 ACL 配置的自动检测。 额外的选择加入修正机制可帮助管理员增强 DKM 容器权限。 在未来的更新中,将进一步强化。

采取行动

若要保护环境,请完成以下步骤:

  1. 在所有 AD FS 服务器上安装 2026 年 7 月 14 日安全更新 或更高版本的 Windows 更新。

  2. 安装后,AD FS 服务将在服务每次启动时审核 DKM 容器 ACL,此后每 24 小时审核一次。 查看 AD FS 管理员事件日志中的事件 ID 1132,指示需要注意 DKM 容器权限。 请注意,不会自动进行更改。

  3. 如果出现事件 ID 1132,请根据Windows Server版本执行平台特定步骤。

Windows Server 2016 及更高版本
  1. 通过将 RemediateDkmAcl 注册表项设置为 1 来选择加入修正。 有关详细信息,请参阅选择加入修正部分中Windows Server 2016及更高主题

  2. 2026 年 10 月 13 日,如果未配置注册表项,更新将自动修正不安全的 ACL。 若要选择退出自动修正,请将注册表项设置为 0

Windows Server 2012和Windows Server 2012 R2
  1. 授予 AD FS 服务帐户修正权限,请参阅选择加入修正部分中的Windows Server 2012和Windows Server 2012 R2 主题。

  2. 之后,通过将 RemediateDkmAcl 注册表项设置为 1 来选择加入修正。

预期的安全状态更改

修正后,只有以下主体才能访问 DKM 容器:

Principal 访问权限
域管理员 泛型全 (完全控制)
企业管理员 泛型全 (完全控制)
系统 泛型全 (完全控制)
AD FS 服务帐户 读取、写入、创建子级、写入所有者、删除树

注意 禁用继承,并丢弃所有继承的 ACE。 将删除未在上述列表中的任何其他显式允许 ACE

如何管理此更改

审核模式 (2026 年 7 月)

安装 2026 年 7 月更新后,检测在 AD FS 服务启动一分钟后自动运行,然后每隔 24 小时运行一次。 在 AD FS/管理员 事件日志中查看以下事件。

事件 ID 水平 含义
1132 警告 DKM 容器 ACL 与预期的安全状态不匹配。 查看 ACL。
1133 信息 DKM 容器 ACL 处于预期安全状态。 无需任何操作。
1134 错误 检测任务遇到错误 (,例如 LDAP 连接失败) 。

注意 在审核模式下,不会对 ACL 进行自动更改。

选择加入修正

重要

本节、方法或任务包含如何更改注册表的信息。 但是,注册表修改不当可能会出现严重问题。 因此,请一定严格按照下列步骤操作。 为了获得进一步的保护,请在修改注册表之前对其进行备份。 然后,即可在出现问题时还原注册表。 有关如何备份和还原注册表的详细信息,请参阅如何备份和还原 Windows 中的注册表

使用以下特定于平台的修正指南。

Windows Server 2016 及更高版本

我们强烈建议管理员在审核模式阶段进行修正,以在 2026 年 10 月开始实施之前识别并解决任何兼容性问题。 若要启用修正,请在场中的任何 一个 AD FS 服务器上 设置以下注册表项。

信息 详细信息
注册表项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS
价值: RemediateDkmAcl
类型: DWORD
数据: 1

设置注册表项后,可以:

  • 下一个检测周期最多等待 24 小时,或

  • 重启 AD FS 服务以更快地触发修正

成功修正后,事件 1135 (信息) 记录为 SDDL 格式的前一个 ACL。

Windows Server 2012 和 Windows Server 2012 R2

对于这些平台,在启用 RemediateDkmAcl 注册表之前,在场中的任何一台 AD FS 服务器上执行以下步骤,向 AD FS 服务帐户授予所需的权限。 否则,修正尝试将失败。

  1. 标识 DKM 容器 DN:

    $dkmContainerDn = (Get-AdfsProperties).CertificateSharingContaine
    $dkmContainerDn
    
  2. 标识 AD FS 服务帐户:

    $serviceAccount = (Get-CimInstance Win32_Service -Filter "Name='adfssrv'").StartName
    $serviceAccount
    
  3. 为 WriteOwner 和 WriteDacl 授予显式允许 ACE:

    $sid = (New-Object System.Security.Principal.NTAccount($serviceAccount)).Translate([System.Security.Principal.SecurityIdentifier]) 
    $entry = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$dkmContainerDn") 
    $rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule( 
     $sid, 
     ([System.DirectoryServices.ActiveDirectoryRights]::WriteOwner -bor [System.DirectoryServices.ActiveDirectoryRights]::WriteDacl), 
     [System.Security.AccessControl.AccessControlType]::Allow, 
     [System.DirectoryServices.ActiveDirectorySecurityInheritance]::All 
    ) 
    $entry.ObjectSecurity.AddAccessRule($rule) 
    $entry.CommitChanges() 
    $entry.Close() 
    
  4. 授予所需权限后,在场中的任何一个 AD FS 服务器上设置以下注册表项以启用修正。

    信息 详细信息
    注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS
    价值: RemediateDkmAcl
    类型: DWORD
    数据: 1
    注意 如果不存在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS”,请先创建“ADFS”键,然后在该密钥下设置 RemediateDkmAcl
  5. 设置注册表项后,可以:

  • 下一个检测周期最多等待 24 小时,或

  • 重启 AD FS 服务以更快地触发修正

成功修正后,事件 1135 (信息) 记录为 SDDL 格式的前一个 ACL。

保存以前的 SDDL (建议)

作为预防措施,建议在成功修正后,从事件 1135 中保存以前的 ACL (SDDL) 。 虽然在大多数情况下不需要以前的 ACL, (因为原始权限) 不安全,但提供它可为任何不可预见的兼容性问题提供安全网。

注意 由于大小限制,事件日志可能会滚动更新。 如果将来需要以前的 SDDL,并且事件已被覆盖,它将永久丢失。

将 SDDL 保存到文件:

# Run this on the AD FS server immediately after remediation (event 1135) 
$event = Get-WinEvent -FilterHashtable @{LogName='AD FS/Admin'; Id=1135} -MaxEvents 1 
$event.Message | Out-File "C:\ADFSBackup\dkm-acl-previous-sddl.txt

如何还原以前的 ACL

如果在修正后遇到问题,并且需要还原以前的 ACL:


# Restore the full security descriptor (DACL + Owner + SACL) from the saved SDDL 
$dn = "<Container DN from event 1135 or C:\ADFSBackup\dkm-acl-previous-sddl.txt>" 
$sddl = "<Previous ACL (SDDL) value from event 1135 or C:\ADFSBackup\dkm-acl-previous-sddl.txt>” 
 
$entry = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$dn") 
$entry.ObjectSecurity.SetSecurityDescriptorSddlForm($sddl, [System.Security.AccessControl.AccessControlSections]::All) 
$entry.CommitChanges() 
$entry.Close() 

注意 此命令要求运行它的帐户具有 SeSecurityPrivilege (域管理员通常具有此) 。 在已加入域的计算机上,从提升的 PowerShell 会话运行此功能。


Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ADFS" -Name "RemediateDkmAcl" -Value 0 -Type DWord 

还原后,设置 RemediateDkmAcl = 0 以防止服务在下一个周期重新修正。

强制模式 (2026 年 10 月)

从 2026 年 10 月更新开始,修正默认运行,无需注册表项。 该行为等效于将 RemediateDkmAcl = 1 集。

强制自动修正不适用于Windows Server 2012或Windows Server 2012 R2。 对于这些平台,请按照选择加入修正部分中Windows Server 2012和Windows Server 2012 R2 主题中的步骤手动修正

选择退出强制模式 (2026 年 10 月)

重要

本节、方法或任务包含如何更改注册表的信息。 但是,注册表修改不当可能会出现严重问题。 因此,请一定严格按照下列步骤操作。 为了获得进一步的保护,请在修改注册表之前对其进行备份。 然后,即可在出现问题时还原注册表。 有关如何备份和还原注册表的详细信息,请参阅如何备份和还原 Windows 中的注册表

如果需要在 2026 年 10 月更新后禁用自动修正,请在注册表中设置 RemediateDkmAcl 值。

信息 详细信息
注册表项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS
价值: RemediateDkmAcl
类型: DWORD
数据: 0

这会显式禁用修正。 检测 (事件 1132) 会继续触发,以便管理员知道不安全状态。

重要 选择退出会使 DKM 容器易受攻击。 仅当具有特定的兼容性要求并计划手动强化 ACL 时,才使用此选项。

事件参考

事件 ID:1132 — 需要评审 DKM 容器 ACL
信息 详细信息
事件日志 AD FS/管理员
事件类型 警告
事件源 AD FS
事件 ID 1132
事件文本 AD FS 检测到分布式密钥管理器 (DKM) 容器 ACL 与预期的安全状态不匹配。 DKM 容器存储用于保护令牌签名密钥材料的对称密钥。

容器 DN:
<DN>

预期的安全状态是禁用继承,只有域管理员、企业管理员、SYSTEM 和 AD FS 服务帐户具有访问权限。

用户操作
若要修正,请将 DWORD) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS\RemediateDkmAcl (注册表项设置为 1。 该服务将在下一个检测周期 (24 小时内强化 ACL,) 或重启服务以更快地触发修正。 有关指导,请参阅 https://go.microsoft.com/fwlink/?linkid=2369796

其他数据

继承禁用: <是/否>

当前 ACL (SDDL) :
<SDDL>
事件 ID:1133 — DKM 容器 ACL 正常
信息 详细信息
事件日志 AD FS/管理员
事件类型 信息
事件源 AD FS
事件 ID 1133
事件文本 DKM ACL 后台任务查看了容器 ACL 进行安全强化。
容器具有正确的设置,无需执行进一步操作。

容器 DN:
<DN>
事件 ID:1134 — 检测错误
信息 详细信息
事件日志 AD FS/管理员
事件类型 错误
事件源 AD FS
事件 ID 1134
事件文本 ad FS DKM 容器 ACL 检查后台任务遇到错误。

容器 DN:
<DN>

其他数据
异常详细信息:
<例外>

用户操作
有关更多详细信息,请查看 AD FS 调试日志。 确保 AD FS 服务帐户有权访问 Active Directory 中的 DKM 组容器。
事件 ID:1135 — 修正成功
信息 详细信息
事件日志 AD FS/管理员
事件类型 信息
事件源 AD FS
事件 ID 1135
事件文本 AD FS 成功地强化了分布式密钥管理器 (DKM) 容器 ACL。

容器 DN:
<DN>

容器 ACL 现在仅向域管理员、企业管理员、SYSTEM 和 AD FS 服务帐户授予访问权限。 已阻止继承,并删除了所有其他权限。

注意: 当 ACL 与基线匹配时,自动修复不会再次运行。 如果要在 ACL 将来出现偏移时永久退出自动修复,请将 HKLM\SOFTWARE\Microsoft\ADFS\RemediateDkmAcl (DWORD) 设置为 0。

以前的 ACL 包含在下面的 SDDL 格式中。 如果需要还原原始权限,请参阅 https://go.microsoft.com/fwlink/?linkid=2369796

以前的 ACL (SDDL) :
<SDDL>
事件 ID:1136 — 修正失败
信息 详细信息
事件日志 AD FS/管理员
事件类型 错误
事件源 AD FS
事件 ID 1136
事件文本 AD FS 尝试修正 DKM 容器 ACL,但遇到错误。

容器 DN:
<DN>

用户操作
该服务将在) 24 小时内在下一个检测周期 (重试修正。 如果此错误仍然存在,可以使用 ADSI 编辑或 PowerShell 手动强化 ACL。 若要禁用自动修复,请将 HKLM\SOFTWARE\Microsoft\ADFS\RemediateDkmAcl (DWORD) 设置为 0。 有关指导,请参阅 https://go.microsoft.com/fwlink/?linkid=2369796

当前 ACL (SDDL) :
<SDDL>

异常详细信息:
<例外>