注意
更新日期 2024 年 3 月 20 日 - 已新增 LDS 參照
摘要
CVE-2021-42291 解決了一個安全繞過漏洞,允許特定使用者對 Active Directory (AD) 或 LDS) 輕量級目錄服務中儲存的特定物件的安全敏感屬性設定任意值 (。 若要利用此弱點,使用者必須擁有足夠的權限,才能建立電腦衍生物件,例如使用者已獲得授與電腦物件的 CreateChild 權限。 這樣的使用者就可以使用過於寬鬆允許存取 securityDescriptor 屬性的輕量型目錄存取通訊協定 (LDAP) 新增呼叫,來建立電腦帳戶。 此外,建立者和擁有者可以在建立帳戶之後,修改有安全顧慮的屬性。 在某些情況下,這可運用來執行特權提高。
註 LDS 會記錄事件 3050、3053、3051 和 3054,了解隱含存取對物件的狀態,就像 AD 一樣。
CVE-2021-42291 中的風險降低措施包括:
- 當沒有網域或 LDS 系統管理員權限的使用者嘗試執行電腦衍生物件的 LDAP 新增作業時,隨即進行額外的授權驗證。 這包括在這類嘗試發生時,以不干擾該要求的方式進行稽核的預設稽核模式,以及會封鎖這類嘗試的強制模式。
- 當沒有網域系統管理員權限的使用者嘗試針對 securityDescriptor 屬性執行 LDAP 修改作業時,暫時移除隱含擁有者權限。 進行驗證,以確認是否允許該使用者在沒有隱含擁有者權限的情況下,寫入安全性描述元。 這也包括在這類嘗試發生時,以不干擾該要求的方式進行稽核的預設稽核模式,以及會封鎖這類嘗試的強制模式。
採取行動
若要保護您的環境並避免運作中斷,請完成下列步驟:
- 安裝最新的 Windows 更新,以更新所有主控 Active Directory 網域控制站或 LDS 伺服器角色的裝置。 具有 2021 年 11 月 9 日或更新版本更新的 DC 預設將在稽核模式下進行變更。
- 在已有 2021 年 11 月 9 日或之後所發行 Windows 更新的網域控制站或 LDS 伺服器上,監視目錄服務或 LDS 事件記錄是否出現 3044-3056 事件。 記錄的事件表示該使用者可能擁有過多的權限,而能以有安全顧慮的任意屬性來建立電腦帳戶。 使用頂級或統一支援案例或意見反應中樞,向 Microsoft 報告任何非預期的案例。 (在<新增事件>一節中可以找到這些事件的範例。)
- 如果稽核模式在一段充分的時間內,並未偵測到任何非預期的權限,請切換到強制模式,以確保不會發生負面結果。 使用頂級或統一支援案例或意見反應中樞,向 Microsoft 報告任何非預期的案例。
Windows 更新的時程
這些 Windows 更新會分成兩階段發行:
- 初始部署 – 引進更新,包括可使用 dSHeuristics 屬性設定的預設稽核模式、強制模式或停用模式。
- 最終部署 – 預設強制執行。
2021 年 11 月 9 日:初始部署階段
初始部署階段從 2021 年 11 月 9 日發行的 Windows 更新開始。 此版本針對沒有網域系統管理員權限的使用者,在建立或修改電腦或電腦衍生物件期間設定的權限,新增稽核機制。 其也會新增強制模式和停用模式。 你可以用 dSHeuristics 屬性,為每個 Active Directory 樹系設全域模式。
(2023 年 12 月 15 日更新) 最終部署階段
完成〈採取行動〉一節中所列步驟後,即可開始最終部署階段。 要進入強制模式,請依照部署指導區段的指示,在 dSHeuristics 屬性中設定第 28 和第 29 位元。 然後監視事件 3044-3046。 它們會報告強制執行模式何時阻止了先前在稽核模式下可能已允許的 LDAP 新增或修改作業。
部署指引
設定組態資訊
安裝 CVE-2021-42291 後,dSHeuristics 屬性的字元 28 和 29 控制更新的行為。 dSHeuristics 屬性存在於每個 Active Directory 樹系內,其中包含整個樹系的設定。 dSHeuristics 屬性是 AD ) 物件中「CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,Domain<>」的屬性,或 LDS) 物件 ( (「CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,Configuration< set>」。 如需詳細資訊,請參閱 6.1.1.2.4.1.2 dSHeuristics 和 DS-Heuristics 屬性。
字元 28 - LDAP 新增作業的附加 AuthZ 驗證
0:已啟用預設稽核模式。 當沒有網域系統管理員權限的使用者,在新的電腦衍生 AD 物件上,將 securityDescriptor 或其他屬性設定為可能授與過多權限的值,而可能允許未來進行惡意探索時,就會記錄事件。
1:已啟用強制模式。 這可防止沒有網域系統管理員權限的使用者,在電腦衍生的 AD 物件上,將 securityDescriptor 或其他屬性設定為可能授與過多權限的值。 發生此情況時,也會記錄事件。
2:停用更新的稽核機制,而且不強制執行新增的安全性。 不建議使用。
範例: 如果你的森林中沒有啟用其他 dSHeuristics 設定,且想切換到強制模式進行額外 AuthZ 驗證, dSHeuristics 屬性應該設為:
“0000000001000000000200000001”
設定在此案例中的角色有:
第 10個字 元:若 dSHeuristics 屬性至少為 10 字元,必須設為 1
第 20個角色 :若 dSHeuristics 屬性至少有 20 字元,必須設為 2
第 28個字 元:必須設為 1 以啟用執行模式以進行額外 AuthZ 驗證
字元 29 - 為 LDAP 修改作業臨時移除隱含擁有者
0:已啟用預設稽核模式。 當沒有網域系統管理員權限的使用者,在現有的電腦衍生 AD 物件上,將 securityDescriptor 屬性設定為可能授與過多權限的值,而可能允許未來進行惡意探索時,就會記錄事件。
1:已啟用強制模式。 這可防止沒有網域系統管理員權限的使用者,在現有的電腦衍生 AD 物件上,將 securityDescriptor 屬性設定為可能授與過多權限的值。 發生此情況時,也會記錄事件。
2:停用更新的稽核機制,而且不強制執行新增的安全性。 不建議使用。
範例: 如果你的森林只設定了 Additional AuthZ 驗證 dsHeuristics 旗標,並且想切換到強制模式以暫時移除隱含所有權, dSHeuristics 屬性應該設為:
“00000000010000000002000000011”
設定在此案例中的角色有:
第 10個角色 :若 dSHeuristics 屬性至少為 10 字元,必須設為 1
第 20個角色 :若 dSHeuristics 屬性至少有 20 字元,必須設為 2
第 28個字 元:必須設為 1 以啟用執行模式以進行額外 AuthZ 驗證
第 29個角色 :必須設為 1 以啟用執行模式以暫時移除隱含所有權
新增事件
2021 年 11 月 9 日的 Windows 更新也增加新的事件記錄檔。
模式變更事件 – LDAP 新增作業的額外 AuthZ 驗證
dSHeuristics屬性的第 28 位元時發生的事件已變更,這會變更更新的 LDAP 新增作業部分的附加 AuthZ 驗證模式。
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 資訊 |
| 事件識別碼 | 3050 |
| 事件文字 | 已將目錄設定為在 LDAP 新增作業期間,強制執行每個屬性授權。 這是最安全的設定,不需採取任何動作。 |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3051 |
| 事件文字 | 已將目錄設定為在 LDAP 新增作業期間,不強制執行每個屬性授權。 系統將會記錄警告事件,但不會封鎖任何要求。 此設定並不安全,只應作為暫時的疑難排解步驟使用。 請於下方的連結檢閱建議的風險降低措施。 |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 錯誤 |
| 事件識別碼 | 3052 |
| 事件文字 | 已將目錄設定為在 LDAP 新增作業期間,不強制執行每個屬性授權。 系統不會記錄任何事件,也不會封鎖任何要求。 此設定並不安全,只應作為暫時的疑難排解步驟使用。 請於下方的連結檢閱建議的風險降低措施。 |
模式變更事件 – 暫時移除隱含擁有者權限
dSHeuristics屬性的第 29 位元時發生的事件已變更,這會變更更新的隱含擁有者權限部分的臨時移除模式。
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 資訊 |
| 事件識別碼 | 3053 |
| 事件文字 | 已將目錄設定為在 LDAP 新增和修改作業期間,一開始設定或修改 nTSecurityDescriptor 屬性時,隨即封鎖隱含擁有者權限。 這是最安全的設定,不需採取任何動作。 |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3054 |
| 事件文字 | 已將目錄設定為在 LDAP 新增和修改作業期間,一開始設定或修改 nTSecurityDescriptor 屬性時,隨即允許隱含擁有者權限。 系統將會記錄警告事件,但不會封鎖任何要求。 此設定並不安全,只應作為暫時的疑難排解步驟使用。 |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 錯誤 |
| 事件識別碼 | 3055 |
| 事件文字 | 已將目錄設定為在 LDAP 新增和修改作業期間,一開始設定或修改 nTSecurityDescriptor 屬性時,隨即允許隱含擁有者權限。 系統不會記錄任何事件,也不會封鎖任何要求。 此設定並不安全,只應作為暫時的疑難排解步驟使用。 |
稽核模式事件
在稽核模式中發生的事件,以記錄 LDAP 新增或修改作業的潛在安全性疑慮。
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3047 |
| 事件文字 | 目錄服務偵測到下列物件的 LDAP 新增要求,一般會因為下列安全性理由而遭到封鎖。 根據預設的合併安全性描述元,用戶端無權寫入新增要求中所包含的一或多個屬性。 目前將目錄設定為僅稽核模式,以進行此安全性檢查,所以允許繼續進行該要求。 物件 DN: <已建立物件的 DN> 物件類別: <已建立物件的 objectClass> 使用者: <嘗試 LDAP 新增的使用者> 用戶端 IP 位址: <請求者的 IP> 安全描述: <曾嘗試的SD> |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3048 |
| 事件文字 | 目錄服務偵測到下列物件的 LDAP 新增要求,一般會因為下列安全性理由而遭到封鎖。 用戶端在新增要求中納入 nTSecurityDescriptor 屬性,但根據預設的合併安全性描述元,用戶端沒有明確權限可寫入新安全性描述元的一或多個部分。 目前將目錄設定為僅稽核模式,以進行此安全性檢查,所以允許繼續進行該要求。 物件 DN: <已建立物件的 DN> 物件類別: <已建立物件的 objectClass> 使用者: <嘗試 LDAP 新增的使用者> 用戶端 IP 位址: <請求者的 IP> |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3049 |
| 事件文字 | 目錄服務偵測到下列物件的 LDAP 修改要求,一般會因為下列安全性理由而遭到封鎖。 用戶端在新增要求中納入 nTSecurityDescriptor 屬性,但根據預設的合併安全性描述元,用戶端沒有明確權限可寫入新安全性描述元的一或多個部分。 目前將目錄設定為僅稽核模式,以進行此安全性檢查,所以允許繼續進行該要求。 物件 DN: <已建立物件的 DN> 物件類別: <已建立物件的 objectClass> 使用者: <嘗試 LDAP 新增的使用者> 用戶端 IP 位址: <請求者的 IP> |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3056 |
| 事件文字 | 目錄服務已在下面指定的物件上處理 sdRightsEffective 屬性的查詢。 因為目錄已設定為允許隱含擁有者權限,所以傳回的存取遮罩才包含 WRITE_DAC,但這不是安全的設定。 物件 DN: <已建立物件的 DN> 使用者: <嘗試 LDAP 新增的使用者> 用戶端 IP 位址: <請求者的 IP> |
強制模式 - LDAP 新增失敗
當 LDAP 新增作業遭到拒絕時發生的事件。
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3044 |
| 事件文字 | 目錄服務已拒絕下列物件的 LDAP 新增要求。 此要求遭到拒絕,因為根據預設的合併安全性描述元,用戶端無權寫入新增要求中所包含的一或多個屬性。 物件 DN: <已建立物件的 DN> 物件類別: <已建立物件的 objectClass> 使用者: <嘗試 LDAP 新增的使用者> 用戶端 IP 位址: <請求者的 IP> 安全描述: <曾嘗試的SD> |
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3045 |
| 事件文字 | 目錄服務已拒絕下列物件的 LDAP 新增要求。 此要求遭到拒絕,因為用戶端在新增要求中納入 nTSecurityDescriptor 屬性,但根據預設的合併安全性描述元,用戶端沒有明確權限可寫入新安全性描述元的一或多個部分。 物件 DN: <已建立物件的 DN> 物件類別: <已建立物件的 objectClass> 使用者: <嘗試 LDAP 新增的使用者> 用戶端 IP 位址: <請求者的 IP> |
強制模式 - LDAP 修改失敗
當 LDAP 修改作業遭到拒絕時發生的事件。
| 事件記錄檔 | 目錄服務 |
|---|---|
| 事件類型 | 警告 |
| 事件識別碼 | 3046 |
| 事件文字 | 目錄服務已拒絕下列物件的 LDAP 修改要求。 此要求遭到拒絕,因為用戶端在修改要求中納入 nTSecurityDescriptor 屬性,但根據物件的現有安全性描述元,用戶端沒有明確權限可寫入新安全性描述元的一或多個部分。 物件 DN: <已建立物件的 DN> 物件類別: <已建立物件的 objectClass> 使用者: <嘗試 LDAP 新增的使用者> 用戶端 IP 位址: <請求者的 IP> |
常見問題集
問 1:如果我混合使用已更新和未更新的 Active Directory 網域控制站,會發生什麼情況?
A1 未更新的 DC 不會記錄與此漏洞相關的事件。
問 2:對於唯讀網域控制站 (RODC),我需要做什麼?
A2 什麼都沒有;LDAP 新增與修改操作無法針對 RODCs。
問 3:在啟用強制模式之後,我擁有的協力廠商產品或處理程序執行失敗。 我是否需要授與服務或使用者網域系統管理員權限?
A3 我們通常不建議將服務或使用者加入網域管理員群組作為解決此問題的首要方案。 請檢查事件記錄檔,查看需要哪些特定權限,並考慮對另一個為此目的指定之組織單位的使用者,適當委派有限的權限。
第 4 季度我也會看到 LDS 伺服器的稽核事件。 為什麼會發生此情況?
A4 上述所有內容同樣適用於 AD LDS,儘管在 LDS 中擁有電腦物件非常罕見。 當稽核模式未偵測到任何非預期的權限時,也應採取緩和措施步驟來啟用 AD LDS 的保護。