CVE-2026-40165authentik是一个开源的身份提供商。在2025.12.4及之前版本以及2026.2.0-rc1至2026.2.2版本中,存在通过SAML NameID XML注释注入导致的身份验证绕过漏洞。由于authentik从SAML断言中提取NameID值的方式存在缺陷,攻击者可以诱骗authentik仅看到NameID值的一部分,从而可能获取其他账户的访问权限。利用该漏洞的前提是攻击者在SAML源上拥有账户,能够修改其NameID值(通常是用户名或电子邮件),并且启用了XML签名。攻击者可以通过在NameID值中注入注释来修改发送给authentik的SAML断言,有效地将NameID值截断为注释前的片段,从而允许攻击者访问任何用户账户。该问题已在2025.12.5和2026.2.3版本中修复。
该漏洞的核心技术原理在于XML解析器处理SAML NameID节点时的逻辑缺陷。当authentik处理SAML响应时,它提取`<NameID>`标签内的内容作为用户唯一标识。攻击者如果能够控制SAML源端的NameID(例如注册包含特殊字符的用户名),便可以在其中插入XML注释(`<!-- ... -->`)。根据描述,authentik的提取逻辑未能正确处理注释节点,导致解析过程在遇到注释时停止或仅保留注释前的文本。例如,若攻击者构造NameID为`victim<!-- random -->`,解析器可能将其截断为`victim`。反之,如果攻击者构造`attacker<!-- victim -->`且系统逻辑存在特定缺陷,或者利用注释绕过某些校验,即可实现身份冒充。由于SAML断言是经过签名的,攻击者需要能够控制签名内容或利用签名验证的漏洞(但在本例中,描述指出攻击者在源上有账号且能修改NameID,这意味着攻击者生成合法的SAML响应,只是NameID内容被精心构造以利用解析端的截断漏洞),从而欺骗服务端(SP)将请求认证为截断后的用户身份。