本文来自微信公众号“嘶吼专业版”,作者/ang010ela。
研究人员发现谷歌、Cloudflare等知名网站的网页HTML源码中都以明文形式保存密码,恶意扩展可从中提取明文密码。威斯康星大学麦迪逊分校研究人员在Chrome应用商店上传了恶意扩展PoC,成功从网站源码中窃取明文密码。
问题产生的根源
由于Chrome扩展和网站元素之间缺乏安全边界,浏览器扩展对网站源码中的数据具有无限制的访问权限,因此有机会从中提取任意内容。此外,Chrome浏览器扩展可能滥用DOM API直接提取用户输入的值,绕过网站使用的混淆技术来保护用户敏感输入。
谷歌Chrome引入的Manifest V3协议被许多浏览器采用,限制了API滥用,防止浏览器扩展提取远程保存的代码,防止使用eval来实现任意代码执行。研究人员分析发现Manifest V3并未在扩展和web页面之间引入安全边界。
图扩展和网站之间的安全边界
上传PoC到Chrome扩展商店
为测试谷歌的Chrome扩展商店审查过程,研究人员创建了一个可以发起密码窃取攻击的Chrome扩展,并将该扩展上传到平台。该扩展的功能是一个基于GPT的助手,可以:
·获取用户登录页面的HTML源码;
·滥用CSS选择器来选择目标输入字段,使用.value函数提取用户输入;
·通过元素替换使用不安全的密码字段来替换基于JS的混淆字段;
图提取字段内的代码(左)和执行元素替换(右)
该扩展并不包含明显的恶意代码,因此可以绕过静态检测,并且不会从外部源提取代码,所以是支持Manifest V3的。因此,该扩展通过了审查,并被应用商店上架。
漏洞利用
随后的实验数据发现,前1万个网站中有1100个在HTML DOM中明文保存了用户密码。其他7300个网站也易受到DOM API访问和用户数据直接提取攻击。
图受影响的网站
一些知名网站缺乏安全保护的网站包括:
·gmail.com–HTML源码中明文保存密码
·cloudflare.com–HTML源码中明文保存密码
·facebook.com–通过DOM API提取用户输入
·citibank.com–通过DOM API提取用户输入
·irs.gov–网页源码中明文保存SSNs
·capitalone.com–网页源码中明文保存SSNs
·usenix.org–网页源码中明文保存SSNs
·amazon.com–页面源码明文保存信用卡信息和邮政编码
图Gmail和Facebook也受到用户输入提取攻击影响
研究发现有190个扩展可以直接访问密码字段,并保存了字段的内容,表明有开发者可能已经利用了该安全漏洞。
厂商回应
Amazon称,客户安全非常重要,将采取措施对用户输入进行保护,输入亚马逊网站的用户信息是安全的。此外,鼓励浏览器和扩展开发者使用亚马逊提供的服务采用安全最佳实践来保护用户数据。谷歌发言人称将开始调查这一问题。但Chrome扩展的安全问答并不认为访问密码字段是安全问题。
论文下载地址:https://arxiv.org/abs/2308.16321