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 安全更新開始,進入第一個強化階段。 此強化措施針對 EOP) (因 CVE-2026-56155 所記載的漏洞而可能產生的權限提升。

總結來說,Active Directory 同盟服務 (AD FS) 依賴 DKM 容器來儲存用於保護私鑰憑證簽署與憑證加密憑證的對稱金鑰。 若容器的 ACL 過於寬鬆,擁有 DKM 金鑰資料讀取權限的攻擊者可解密令牌簽名私鑰。

針對此漏洞的防護始於審計模式,該模式自動偵測不安全的 DKM 容器 ACL 配置。 額外的選擇加入修復機制幫助管理員強化 DKM 容器權限。 未來更新中將進一步強化。

採取行動

為了保護您的環境,請完成以下步驟:

  1. 在所有 AD FS 伺服器上安裝 2026 年 7 月 14 日的安全更新 或更晚的 Windows 更新。

  2. 安裝後,AD FS 服務會在服務開始時及之後每 24 小時稽核 DKM 容器的 ACL。 請檢視 AD FS 管理員事件日誌中的事件 ID 1132,該日誌顯示 DKM 容器權限需要注意。 請注意,不會自動做出任何變更。

  3. 若事件 ID 1132 出現,請依照您的 Windows Server 版本依照平台特定步驟操作。

Windows Server 2016 及更新版本
  1. 請將 RemediateDkmAcl 登錄檔金鑰設為 1 來選擇參與修復。 更多資訊請參閱 Windows Server 2016 及以後版本的 Opt-in 修復專題。

  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/管理員事件日誌,了解以下事件。

事件識別碼 關卡 意義
1132 警告 DKM 容器 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:


# 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 時才使用這個方法。

事件參考

事件編號:1132 — DKM 容器 ACL 需要審查
資訊 詳細資料
事件記錄檔 AD FS/管理員
事件類型 警告
事件來源 AD FS
事件識別碼 1132
事件文字 AD FS 偵測到分散式金鑰管理器 (DKM) 容器 ACL 與預期的安全狀態不符。 DKM 容器儲存用於保護令牌簽署金鑰資料的對稱金鑰。

貨櫃編號:
<DN>

預期的安全狀態是關閉繼承,只有網域管理員、企業管理員、SYSTEM 以及 AD FS 服務帳號有權限存取。

使用者行動
要修復,請將登錄檔金鑰 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS\RemediateDkmAcl (DWORD) 設為 1。 服務會在下一個偵測週期 (24小時內加強ACL) 或重新啟動服務以加速修復。 相關指引請參見 https://go.microsoft.com/fwlink/?linkid=2369796

附加資料

繼承權被停用: <是/否>

目前的 ACL (SDDL) :
<SDDL>
事件編號:1133 — DKM 容器前十字韌帶健康
資訊 詳細資料
事件記錄檔 AD FS/管理員
事件類型 資訊
事件來源 AD FS
事件識別碼 1133
事件文字 DKM ACL 背景任務審查容器 ACL 的安全強化。
容器設定正確,無需額外操作。

貨櫃編號:
<DN>
事件編號:1134 — 偵測錯誤
資訊 詳細資料
事件記錄檔 AD FS/管理員
事件類型 錯誤
事件來源 AD FS
事件識別碼 1134
事件文字 AD FS DKM 容器 ACL 背景檢查任務遇到錯誤。

貨櫃編號:
<DN>

附加資料
例外細節:
<例外狀況>

使用者行動
請參考 AD FS 除錯日誌以獲得更多細節。 確保 AD FS 服務帳號能存取 Active Directory 中的 DKM 群組容器。
事件編號:1135 — 修復成功
資訊 詳細資料
事件記錄檔 AD FS/管理員
事件類型 資訊
事件來源 AD FS
事件識別碼 1135
事件文字 AD金融服務成功強化分散式金鑰管理器 (DKM) 容器ACL。

貨櫃編號:
<DN>

容器 ACL 現在只授權網域管理員、企業管理員、SYSTEM 以及 AD FS 服務帳號存取權限。 繼承已被封鎖,所有其他權限也都被移除。

註: 只要前十字韌帶與基線一致,自動修復不會再執行。 如果你想永久退出自動修復,即使 ACL 未來漂移,請將 HKLM\SOFTWARE\Microsoft\ADFS\RemediateDkmAcl (DWORD) 設為 0。

先前的 ACL 包含在下方的 SDDL 格式中。 如果你需要恢復原始權限,請參考 https://go.microsoft.com/fwlink/?linkid=2369796

先前的 ACL (SDDL) :
<SDDL>
事件編號:1136 — 修復失敗
資訊 詳細資料
事件記錄檔 AD FS/管理員
事件類型 錯誤
事件來源 AD FS
事件識別碼 1136
事件文字 AD FS 嘗試修復 DKM 容器 ACL 但遇到錯誤。

貨櫃編號:
<DN>

使用者行動
該服務將於24小時) 內,於下一個偵測週期 (重新嘗試修復。 如果這個錯誤持續存在,你可以用 ADSI Edit 或 PowerShell 手動強化 ACL。 要停用自動修復,請將 HKLM\SOFTWARE\Microsoft\ADFS\RemediateDkmAcl (DWORD) 設為 0。 相關指引請參見 https://go.microsoft.com/fwlink/?linkid=2369796

目前的 ACL (SDDL) :
<SDDL>

例外細節:
<例外狀況>