对商店的全量扩展进行扫描分析,统计风险和漏洞情况
注意:本文写于2023.5,数据可能和当下不同
用户量
从攻击角度看,用户量大的影响面大,漏洞价值就越高,一共12W+
扩展,仅有不到2W
个扩展超过1000用户,非常的“二八原则“
基础扫描
什么漏洞可能会常见?什么漏洞是高价值的?
- 哪些网页会被注入Content scripts
- 哪些网页有externally_connectable权限
- 是否有WAR
- CSP Bypass
- 域权限
- 敏感Chrome API权限,如geolocation,cookies,scripting等
Content scripts注入
all_urls注入
all_urls注入意味着所有网页都会注入,能增加攻击目标网站的攻击面
iframe注入
iframe注入意味着可以通过iframe进行攻击,更加隐蔽,不过也会受SameSite cookies的影响
Background
WAR文件
存在WAR文件意味着可探测,同时也能极大增加Background
的攻击面
整体上有20%左右存在WAR
,随着用户数量增加,存在WAR
的扩展占比也在增加,在超过10W用户的扩展中,半数以上存在WAR文件
Externally connectable
externally_connectable
允许直接与Background
通信,极大增加Background
的攻击面
好在这个配置非常少见,但也存在用户量多占比高的趋势
权限申请
权限意味着在Background
中能做什么事,同时也决定了在Background
中的漏洞价值
all_urls权限
all_urls权限意味着在Background中可以无视同源策略访问任意网站,极大提高在Background
中CSRF
漏洞价值
同样也出现在用户量大的扩展中有更多的扩展申请这个权限
敏感数据API权限
这里将获取网页/历史/书签/cookies等数据,管理/配置等功能都视为可以获取敏感数据,也是Background
漏洞的价值来源
CSP Bypass
Manifest中可以自定义CSP
Manifest V2默认的CSP并不禁止eval和inline,基本可以认为可以绕过
而Manifest V3又过于严格,基本无法绕过
用csp-evaluator扫描检查,有中危视为可Bypass
在各用户分布下存在CSP Bypass的占比都在70%左右,相比Manifest V2大概占比75%差别不大
CSP Bypass的问题基本可以忽略,等价于V2可绕,V3不可绕
漏洞扫描
粗糙的扫描了用户量top300的扩展,人工审查后挖到大大小小20来个漏洞,有几个UXSS的高危漏洞,但大多数可能只有开关标签页的垃圾漏洞
考虑到自动化扫描会漏报,用户量大的漏洞可能也多,估计有漏洞的扩展大概占比3%左右?
结语
从研究者的角度来说:洞多,好挖,速来!
但从用户来说:安装一个浏览器扩展时,信任的是什么?
一般来说我们运行一个程序时,信任的是背后的厂商/开发者,又或者代码开源不作恶,甚至是靠杀软,但对于浏览器扩展来说,好像什么都没有
在研究过程中也确实发现了一些恶意扩展,包括网上也能看到很多恶意扩展报告,目前还是靠主动向Google举报,但从举报到删除至少有两个月左右的时间差,可以参考披露一个恶意Chrome扩展程序
也发现了一些以及所谓“开源”扩展在商店中“货不对板”的情况,虽然深究后没有发现恶意行为,但心理不适