在英语中,lottery除了表示彩票,也可以表示“碰运气的事”,今天我们来看看一篇USENIX Security 2022的论文——The Security Lottery: Measuring Client-Side Web Security Inconsistencies,看看研究人员怎么分析在web安全领域,那些凭借“运气”来绕过安全防护的情况
过去十余年的web安全研究有效推动了各大网站主动部署相关的防护策略。在保护web安全敏感数据(cookie、token、credentials)免遭HTTP流量嗅探(sniffing)和跨站脚本攻击(XSS)等流行的攻击手段威胁时,目前日益流行的防御手段是在客户端部署各种安全策略(client-side Web security)。然而,本文作者注意到有一个比较隐秘的角落被开发人员所忽视:针对不同的客户端,服务器端可能会实施不同的防护策略,有些防护策略可能更加宽松(而不安全)。造成这种问题的主要原因,可能是安全测试的时候只使用了特定的客户端(例如特定版本的浏览器)进行访问测试,没有考虑到世界的多样性和复杂性。作者于是想到,如果模拟各类不同的客户端来请求服务器,是否会看到不同的响应(和防护策略)?更进一步,是否存在特定的客户端,能够让服务器端为它提供不是那么安全的防护策略,从而允许一些web安全攻击得以实施?这就是本文关注的核心问题,让我们看看作者的调查结论。
作者统计了Tranco list
(January 1, 2022)中的站点(只关注"@“和"www”,即:https://site.com 和 https://www.site.com)忽略了所有不能用HTTPS访问的站点,并且跟随了重定向,检查重定向的结果和开始访问的域名是否相同,防止访问到的站点不是高排名站点。最终作者分析了启用HTTPS的top 10000高排名站点。
在分析中,作者假定使用的客户端实现了所有安全机制,并假设客户端根据其官方文档正确实现了所有安全机制。在客户端差异性方面,作者对如下三点进行了考察
User-Agent
Vantage Point: geographical/VPN /Tor
Client Configuration: Accept-Language
作者还特别考虑到,服务器那一端也可能会有一些非确定性因素,例如:
负载均衡
middleboxes (例如CDN, 防火墙, 高防流量清洗, 流量过滤)
DNS将同一个域名解析到不同的IP
针对这种不确定性,作者也在研究中也特地进行了处理(重放其相同的请求,观察是否得到不同的响应)。
在分析客户端请求造成的差异性上,作者考虑了两类一致性(consistency):
Intra-Test Consistency:这类一致性表征的是在使用相同的客户端配置请求时,是否会出现(由于服务器本身的部署,例如使用了CDN)每次回复的差异性;
Inter-Test Consistency:这类一致性表征的是客户端请求存在差异性时,服务器返回的安全策略是否一致。
作者使用不同的用户代理、网络访问方法或语言设置,以不同的方式访问同一站点。理想情况下,所有这些访问都应有相同的安全策略,否则将会发生所谓的“security lottery”,即根据特定的客户特征,向用户提供不同级别的客户端安全策略。
作者对服务器通过响应标头设置的客户端安全策略进行了全面总结,请收好下面这份list:
Content Security Policy(CSP)
unsafe-inline
nonces
hashes
script-src
default-src
frame-src
frame-ancestors
upgrade-insecure-requests (tls)
block-all-mixed-content
X-Frame-Options(XFO)
SAMEORIGIN
DENY
HTTP Strict Transport Security(HSTS)
max-age
SubDomains
cookie security attributes
HttpOnly
Secure
SameSite (None, Lax, Strict)
特别地,作者指出,如果存在多个标头的情况,分析会将其折叠为单个标头,折叠的策略如下
Cookie: 最后一个值优先
CSP: 同时启用
XFO: 检查语法差异
HSTS: 第一个值优先
经过实验测试,在top 10000的站点里面,共有8174个部署了推送给客户端的防护策略,这其中使用最广泛的是X-Frame-Options
(5692个站点使用),其次是HSTS
(4562个站点使用),其余各项策略的具体部署数据可参考下表:
从表格中我们发现,在8174个站点中,321个站点出现了不一致性:其中127个站点包含了某一类intra-test inconsistency,而有194个站点只包含了inter-test inconsistencies问题,两种不一致性都出现的站点共有267个。作者在论文的6.2和6.3章详细分析了发现的问题,有兴趣的读者可以去阅读细节。
论文PDF:
https://swag.cispa.saarland/papers/roth2022lottery.pdf
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...