Trail of Bits 研究员撰文分析 SAML 协议的五个结构性缺陷——建立在 XML 之上、依赖 libxmlsec、委员会式设计,认为该退役转向 OIDC。
安全公司 Trail of Bits 一名研究员(早年参与开发 Duo Security 首个本地网关产品 DAG,基于 simpleSAMLphp 构建)撰文认为,SAML 该退役了,问题不在某个实现没写好,而在协议本身的设计。
文章回顾:SAML 由 OASIS 安全服务技术委员会于 2002 年创建,实际是把四套已有 XML 安全协议拼合而成——Netegrity 的 S2ML、Securant 的 AuthXML、VeriSign 的 X-TASS 与 Jamcracker 的 ITML。早期推广主力是学术界:耶鲁 2002 年的 CAS、Internet2 2003 年的 Shibboleth IdP、微软 2003 年的 ADFS、挪威国有公司 Uninett 约 2007 年的 simpleSAMLphp。随后 SSO 行业兴起:Ping Identity(2002)、OneLogin(2009)、Okta(2009)、Duo Security(2010,2015 年才推出首个 SSO 产品)。
SAML 的安全性建立在 XML 签名验证上,而 XML 历史上就存在一整类漏洞(XXE、实体扩展、DTD 引发的 SSRF、XPath/XSLT 注入等),大多数实际部署依赖 libxmlsec 这个"没人真正读过的 C 代码库"。文章称 XML 签名包裹(XSW)攻击是"SAML 的阿喀琉斯之踵":2012 年论文《On Breaking SAML》首次系统化测试并给出自动检测方法,但直到 2025 年,仍有多篇研究披露新的绕过手法,包括利用 libxml2 解析差异绕过 GitHub Enterprise 的 SAML 认证。
作者列出五点:建立在比 JSON 复杂得多的 XML 之上;规范化(C14N)容易引发解析器差异漏洞,2018 年那起知名的"XML 注释绕过"即源于此;签名被"包裹"进被签名的数据体本身,而 JWT 用一个句点把签名与内容分开、结构更简单;委员会式设计导致规范里塞满现实中用不到的内容——现存实现大多只用到规范的一小部分,复杂度却要为整份规范买单;协议僵化于 VPN、内网隔离盛行的年代,假定 IdP 与 SP 可能无法直连,而 OIDC 假定网络连通、走后台通道,payload 更小,且由过去十余年间多份 RFC 有机生长而来,不是一次性设计完的。
作者称"所有路都通向 OIDC",并举例 Fly.io、Tailscale 已经只做 OIDC、不再新增 SAML 集成。文章同时承认 SAML 运行了 25 年,催生了整个 SSO 产业,创造了可观的经济价值。
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断