Chromium漏洞允许在Android设备上绕过SameSite Cookie防护
Ben Dickson
2023年2月27日 11:50 UTC
漏洞概述
最近修复的Chromium项目漏洞可能允许恶意攻击者绕过Android浏览器上的敏感Cookie保护功能。SameSite设置使开发者能够限制对Cookie的访问。例如,通过设置SameSite=strict,可以防止当用户通过另一个网站的链接或重定向请求导航到该网站时,Cookie出现在HTTP响应中。
SameSite通过intent请求被绕过
然而,安全研究员Axel Chong发现,如果使用intent scheme导航到目标网站,他可以绕过SameSite保护。Intents是外部协议处理程序,允许Android应用打开其他应用,例如从浏览器跳转到地图应用或从短信跳转到浏览器。
Chong告诉The Daily Swig:“我在阅读关于intents的有趣漏洞时发现了这个bug。由于intent URL可以指向同一个应用(本例中为Chrome)并创建一个新的浏览上下文,我当时想知道intent URL可能绕过哪些安全措施。”
intent URL应被视为外部来源并受到SameSite限制。但Chong用Python创建的证明概念显示,当Web服务器使用intent URL发起重定向时,带有SameSite=strict设置的Cookie会被携带过去。
同样的方案还绕过了Sec-Fetch-Site头部,该头部用于确定请求的来源,并使网站能够控制来自外部来源的资源访问。Chong表示:“这两者通常用于防止CSRF(跨站请求伪造),因此影响将是绕过这些防护。”
普通重定向也受影响
进一步调查显示,SameSite Cookie也会通过简单的重定向请求(无需intent协议)被携带。虽然这在早期版本的Chrome中已修复,但由于导致破坏性更改,后来被禁用。
实验性Cookie功能标志(chrome://flags/#enable-experimental-cookie-features)将恢复安全行为,防止SameSite Cookie通过普通重定向请求发送。但该标志不影响intent重定向的不安全行为。Chong还表示,该标志不影响Sec-Fetch-Site行为,需要单独修复。
修复难度大
修复该漏洞并非易事,因为开发者必须考虑如何确定可信应用,包括浏览器。最终决定不信任intents,因为“(a)设备上的其他应用可能不可信,(b)网站可以使用Intent URL/重定向反射回Chrome,并可能利用它绕过SameSite限制。”
这里的教训是,鉴于应用和浏览器之间复杂的通信方式,开发者应为其应用采用多层安全防护。Chong建议:“这类浏览器安全机制(即SameSite Cookie、Fetch元数据)仅作为深度防御。你应该使用它们,但不要依赖它们作为唯一的防御形式。”