漏洞概述 该漏洞涉及在SAML自动提交表单中未正确转义HTML属性值,导致潜在的反射型XSS(跨站脚本攻击)风险。当Logto作为SAML IdP生成自动提交HTML表单时, 、 和 的值被直接插入到HTML属性中,而未进行适当的转义。 影响范围 受影响组件:Logto作为SAML IdP时生成的自动提交HTML表单。 具体影响:如果值中包含双引号,浏览器会在该引号处截断属性。这会导致任何发送JSON字符串作为 (例如HubSpot会员SSO)的SP被截断,丢失登录重定向上下文,导致验证失败。 其他影响: 由于使用base64编码(无引号),虽然未直接受影响,但同样存在不安全插值的问题。 修复方案 代码修改:添加了一个小的 辅助函数,并将其应用于 、 和 在 中。 额外改进:此修复还关闭了一个反射型标记注入向量,位于中间页。 POC代码 浏览器解析属性值时,如果值中包含双引号,会在该引号处截断属性。例如,上述代码中的 值会被截断为 ,导致后续处理错误。 测试 更新了现有的“转义特殊字符”期望,以反映 转义。 添加了测试,确保JSON 被转义且不被截断。 添加了测试,确保 和 中的标记字符被转义( / 被反射)。 总结 此修复通过正确转义HTML属性值,解决了潜在的反射型XSS漏洞,确保了SAML自动提交表单的安全性。