2026年特权访问管理魔力象限™:Netwrix连续第五年获认可。 下载报告。

资源中心博客

ESC9 与 ESC16:相同缺陷,不同影响范围

ESC9 与 ESC16:相同缺陷,不同影响范围

Nov 9, 2026

ESC9和ESC16是在两个范围内相同的AD CS弱点。两者都阻止证书颁发机构向证书添加SID安全扩展,因此域控制器必须回退到基于名称的弱映射。ESC9是一个证书模板上的标志。ESC16是CA上的一个注册表值,会从其颁发的所有证书中剥离该扩展。干净的模板审核不涵盖ESC16,因此请检查CA本身,并确认您的域控制器强制执行强映射。

ESC9和ESC16是针对Active Directory Certificate Services (AD CS)编目的两种编号升级技术(ESC),它们是在不同范围内的相同漏洞。两者都会从已颁发的证书中剥离安全标识符(SID)安全扩展,使攻击者能够通过弱证书映射冒充其他账户。ESC9作用于单个证书模板,ESC16作用于证书颁发机构(CA)颁发的所有证书。

如果您几年前修复了ESC9,这并不代表您了解ESC16。

什么是ESC9?

ESC9 是一个模板设置。当模板的 msPKI-Enrollment-Flag 属性中设置了 CT_FLAG_NO_SECURITY_EXTENSION 时,该模板颁发的证书不包含 SID 扩展(szOID_NTDS_CA_SECURITY_EXT)。该扩展允许域控制器(DC)将证书绑定到特定账户。没有它时,DC 会退回到基于用户主体名称(UPN)进行映射。

攻击需要三个条件:攻击者对受害者账户的UPN具有写权限(GenericWrite权限足够)、对带有标志的client-authentication模板具有注册权限,以及不强制执行强证书映射的DC。攻击者将受害者的UPN更改为匹配特权账户,进行注册,然后恢复UPN,并以特权用户身份使用证书进行身份验证。

Oliver Lyak于2022年8月记录了ESC9,许多扫描器都能检测到它,包括Netwrix PingCastle。下面的检查清单展示了如何检查您自己的模板。

什么是ESC16?

ESC16无需修改模板即可达到相同效果。如果OID 1.3.6.1.4.1.311.25.2,即szOID_NTDS_CA_SECURITY_EXT SID安全扩展,列在CA的DisableExtensionList策略模块注册表值中,CA将停止向其颁发的所有内容添加SID扩展。该CA背后的每个模板现在都表现得像设置了ESC9标志,包括多年无人审查的模板。

环境可能因多种原因出现此设置:第三方工具的兼容性修复、迁移或无法处理该扩展的遗留应用程序。这是一个单一的注册表项,容易被忽视,并悄悄取消了你逐模板构建的保护。

该设置不是模板属性。这是CA配置,许多证书卫生审查从未打开CA自身的策略模块设置。一个组织可以在每个模板上都保持干净,并有报告证明,但仍可能通过CA暴露。如果你多年前扫描过ESC9且此后未检查过你的CA,攻击者仍可能通过ESC16进行相同的冒充攻击。

强证书映射能保护您吗?

部分是这样。两种技术都依赖于DC接受弱映射,而执行强证书绑定的DC会使两者失效。自2025年9月Windows更新起,已打补丁的DC执行全面强制,兼容模式设置不再受支持,因此完全打补丁的域会阻止裸ESC9和ESC16。但仍存在两个漏洞:任何错过这些更新的DC,以及攻击者可以在证书请求中提供自己SID的链条,如ESC16与ESC6或ESC15组合。请检查每个DC的执行情况,并检查CA。

您如何检查并修复两者?

您需要两个检查,因为ESC9存在于模板中,而ESC16存在于CA中。

检查 ESC9(证书模板)

  1. 运行 PingCastle 扫描。
  2. 打开报告并搜索 CT_FLAG_NO_SECURITY_EXTENSION(风险为 A-CertTempNoSecurity)。查找文本“至少有一个证书模板设置了 CT_FLAG_NO_SECURITY_EXTENSION 标志。”
  3. 如果该文本不存在,则所有扫描的模板均未标记。如果存在,请从受影响的模板中移除标记。

检查 ESC16(CA)

在每个 CA 上运行:

      certutil -getreg policy\DisableExtensionList
      

如果输出中出现OID 1.3.6.1.4.1.311.25.2,则该CA正在从其颁发的所有内容中剥离SID扩展。除非有书面理由,否则请将其从列表中删除。

要修复此问题,请删除 OID 并重新启动 Certificate Services,使更改生效:

      certutil -setreg policy\DisableExtensionList -1.3.6.1.4.1.311.25.2
net stop certsvc
net start certsvc
      

之后再次运行 certutil -getreg policy\DisableExtensionList 以确认 OID 已消失。已颁发且无扩展的证书保持不变,如果怀疑设置被滥用,请检查它们。如果应用程序需要该设置,请在广泛部署前进行测试。

然后确认执行情况:检查您的 DC 是否强制执行强证书映射,因为这会削弱这两种技术。在有最新更新的 DC 上,这是默认设置。对于您的 CA 其余的暴露,包括 网页注册中的 ESC8,请检查风险较高的 AD CS 设置,这些设置通常与这两者一起出现。

您如何捕捉下一次变更?

针对未来的ESC9:模板标志位于Active Directory中,这意味着对其的更改即是对AD对象的更改。 Netwrix Threat Prevention 实时监控AD更改并能阻止它们,因此设置模板上的CT_FLAG_NO_SECURITY_EXTENSION的人可以在生效前被阻止,而不是在下一次评估时才被发现。

针对未来的ESC16:该设置位于CA服务器的注册表中,而非AD,因此需要单独监控:对为您的SIEM提供数据的CA主机进行注册表审计,以及上述的定期检查。Netwrix还会将基于证书的登录与颁发相关联,并标记缺失SID扩展的情况,因此即使注册表更改被忽略,设置的滥用也会被发现。

了解 Netwrix 如何保护 AD CS。

分享到

了解更多

关于作者

Asset Not Found

Joe Dibley

安全研究员

Netwrix 的安全研究员,并且是 Netwrix Security Research Team 的成员。Joe 是 Active Directory、Windows 以及各类企业软件平台与技术方面的专家;他/她研究新的安全风险、复杂的攻击技术,以及相应的缓解措施与检测方法。