SAML SSO断言攻防
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/saml-sso-assertion-attacks-tt70
技能介绍
SAML SSO 把身份断言塞进 XML 文档里交付。一旦 SP 侧的信任校验有缺口,攻击者可以改写 Audience、替换被签的节点、重放一份旧响应,甚至把 A 租户 IdP 的断言投递给 B 租户。问题往往不在「有没有签名」,而在签名覆盖了哪个节点、断言被谁消费、哪些属性真正驱动账户映射——这三层只要有一层没核清,前面的签名就等于白签。
核心检查点
技能沿断言生命周期拆解检查项:
- 签名覆盖:确认签名的是
Assertion还是Response;在Signature Wrapping场景里,攻击者剥离被签外层后,SP 仍会信任内部未被签名的节点。 - 受众与接收方:
Audience、Recipient、Destination与 ACS URL 的校验强度,弱校验意味着一份断言可以被投递给别的服务。 - Issuer 信任:多租户 IdP 同名、SP 误接受未注册 IdP 导致跨租户信任。
- 新鲜度与重放:
InResponseTo缺失、NotBefore/NotOnOrAfter未强制,旧断言长期有效可被重放。 - 账户映射:仅靠 email 绑定、大小写折叠、属性未经验证,造成越权或错绑。
- XML 解析行为:解析器对外部实体与不安全 transform 的处理,属于 XXE 类问题在 SAML 场景的行为面。
排查流程
- 抓一次完整的登录往返,保留
SAMLRequest/SAMLResponse原文。 - 标注哪些 XML 节点在签名范围内,哪些属性驱动账户绑定。
- 对比 SP 发起与 IdP 发起两条流程的差异。
- 依次测试重放、属性篡改与断言位置混淆。
适用边界
技能覆盖 SAML 协议层的信任校验,不负责 OIDC / OAuth 流程,也不做解析器 CVE 匹配,只给行为层面的检查点。解析器攻击的深度内容走 xxe xml external entity 路线,其他 SSO 方案看 oauth oidc misconfiguration,SSO 之后的认证边界看 authbypass authentication flaws。
使用场景
- 审计企业 SSO 登录链路,确认 SP 是否接受未签名断言或错误节点签名
- 排查多租户 SaaS 中 A 租户 IdP 断言能否被投递到 B 租户的 ACS 端点
- 重放一份旧 SAMLResponse,验证 InResponseTo 与 NotOnOrAfter 是否强制生效
- 检查账户映射是否只依赖 email 属性,大小写折叠与属性未校验导致错绑
适合人员
- 负责 SAML 联邦对接的 SSO 工程师,需要在上线前核清签名覆盖与 ACS 校验缺口
- 处理跨租户投诉的安全工程师,需要定位未注册 IdP 被接受与 Issuer 混淆的来源
- 执行渗透测试的红队工程师,需要按重放、属性篡改、断言位置混淆逐项验证
- 管理企业登录合规的架构师,需要固化签名校验与断言新鲜度的验收标准