XML-DSig 验证的是 Reference URI 所指向的任何内容,通常是带有给定 ID 的元素;而应用之后往往按另一条规则定位“断言”,例如取第一个 Assertion 子元素。攻击者把真正的已签名断言包装到某个扩展或其他位置,再在应用查找的位置添加一个未签名的断言。Somorovsky 等人在2012年证明,他们测试的大多数 SAML 框架都易受这种攻击,而且新的变种仍在不断出现。
防御方法:只处理确实经过验证的那些节点(让验证器返回它们);通过严格的 schema 校验拒绝含有重复 ID 或结构异常的文档;要求签名覆盖整个响应或断言;使用仍在维护的 SAML 库。基于 JSON 的格式不会出现这一类问题,因为签名覆盖的是固定的字节,不过它们也有各自的陷阱。