DPoP 存储悖论:为什么基于浏览器的持有证明仍然是一个未解决的问题 (opens in new tab)
📌 One-Sentence Summary 本文剖析了浏览器中的 DPoP 存储悖论:存储在 IndexedDB 中的不可提取 CryptoKey 仍然容易受到基于 XSS 的签名预言机攻击,并评估了 BFF 模式和纯内存方法作为缓解措施。 📝 Summary 本文探讨了基于浏览器的 DPoP(RFC 9449)实现中的一个关键安全漏洞:虽然该协议将令牌绑定到客户端密钥对,但并未指定密钥的存储方式。作者证明,将私钥作为不可提取的 CryptoKey 存储在 IndexedDB 中并不能阻止 XSS 攻击,因为攻击者可以调用 `crypto.subtle.sign()` 来伪造 DPoP 证明,而无需提取密钥。这种“预言机攻击”在 IETF 自身的安全考虑中已有记载。文章评估了当前行业标准——后端即前端(BFF)模式,该模式将密钥材料移至服务器端,从而同时防止了预言机攻击和新鲜令牌获取攻击。对于无法使用 BFF 的场景(例如浏览器扩展、嵌入式小部件),作者提出了一种纯内存密钥方法,并配合惰性重新绑定握手,将 XSS 攻击范围限制在单个会话内。文章最后比较了这些模式,并讨论了未来方...
Read the original article