@levinzhang
2019-11-10T21:33:55.000000Z
字数 2761
阅读 541
by
2019年6月的一项研究显示,在Alexa排名前100万的网站中,每600个网站中就有1个在执行WebAssembly(Wasm)代码。此外,研究发现,50%以上使用WebAssembly的Web站点将其用于恶意目的,如挖矿和混淆。
2019年6月发布的一项研究显示,在Alexa排名前100万的网站中,每600个网站中就有1个在执行WebAssembly(Wasm)代码。此外,研究发现,50%以上使用WebAssembly的Web站点将其用于恶意目的,如挖矿和恶意代码的混淆。
在Technische Universität Braunschweig的应用安全研究所(Institute for Application Security)和系统安全研究所(Institute of System Security)的一项研究中,Marius Musch、Christian Wressnegger、Martin Johns和Konrad Rieck分析了Alexa排名前100万的网站中WebAssembly的流行情况。该团队检查了Alexa样本中四天内的Web站点,并成功研究了947,704个网站,最终访问了3,465,320个网页。该研究提供了有关WebAssembly流行程度、具有Wasm模块的网站对WebAssembly的使用程度的最新信息,并对这些网站对WebAssembly的使用目的进行了分类。
他们在1639个站点(大约每600个站点中就有一个)中发现了1950个Wasm模块。这些模块很重要的一点在于,它们不是通过网站的首页加载的,而是通过第三方脚本或其他源的iframe(样本中的795个网站)加载到子页面上的。该研究报告称,1950个Wasm模块代表了150个唯一的样本,这表明在多个站点中都发现了某些Wasm模块,极端情况是在346个不同站点中都存在同一个模块。相反,有87个样本是某些Web站点特有的,表示它是该网站自定义开发的。按照研究,使用WebAssembly的网站在每页上平均使用1.2 Wasm模块。在排名方面,Alexa排名较低的网站,即较高的用户访问量(例如google.com排名第一),倾向于更频繁地使用WebAssembly。
该研究还提供了WebAssembly在相关网站中使用程度的数据,为了达到该目的,他们使用了两个指标。第一个是WebAssembly模块的大小,范围从8个字节到25.3MB不等,每个模块的中位数为100KB。这样的差异可以通过站点使用WebAssembly的不同目的来解释。报告指出,有的站点仅仅是测试一下浏览器是否支持WebAssembly,而另一些站点则完全依赖于模块所暴露的功能。
第二个则是由Chrome浏览器的集成性能profiler所提取到的WebAssembly与JavaScript的相对使用数据,在这方面呈现出了两个极端情况。一方面,大多数站点(1121个站点或者说大约样本的三分之二)几乎从来没有用到WebAssembly。而另一方面,其余的站点几乎把所有的时间都用在了运行Wasm代码上了。
研究团队将Wasm模块手动分成六类,以反映使用WebAssembly的目的:自定义(Custom)、游戏(Game)、库(Library)、挖矿(Mining)、混淆(Obfuscation)和测试(Test)。在这六个分类中,有两种(分别是占网站样本55.6%的挖矿和占网站样本0.2%的混淆)代表了对WebAssembly的恶意使用。研究的详情:
在WebAssembly中,所观测到的最大分类是加密货币挖矿,在Alexa前100万个网站中,我们在913个站点中找了28个独立样本。
(…) 56%,在Alexa前100万的站点中,WebAssembly大多数被用于恶意的目的。
与其他分类的样本相比,挖矿类别的Wasm样本具有独特的特征。所收集到的WebAssembly挖矿代码具有高度的相似性。此外,profiling数据表明,大量使用Wasm的网站(运行WebAssembly代码的时间超过50%的时间)确实是在挖掘加密货币。对挖矿类别中的模块进行的手动分析,未呈现出大量Wasm代码使用的情况(相对CPU份额低于50%),他们发现Wasm代码运行失败的四个主要原因:
- 包含了挖矿脚本,但是矿工没有启动或被禁用了,脚本没有被移除。
- 矿工只有在用户与Web页面交互的时候或者在特定的延迟之后才会启动。
- 矿工已经不可用,这可能是因为不合法的修改或者远程API已修改。
- WebSocket后端没有响应,这阻碍了矿工的运行。
研究得出了如下的结论:
[研究]表明,我们仅仅看到了新一代恶意软件的冰山一角(...)。因此,结合WebAssembly代码进行分析对未来的有效防御机制至关重要。
完整的研究结果可以在线获取。同时,也可以参考对研究结果的简短总结陈述。
在数据收集的方法论方面,他们将站点定义为Alexa列表中的一个条目,以及与该条目共享相同源的页面。研究团队使用浏览器来收集所有WebAssembly代码。一项初步的研究表明,访问域的首页时大部分站点并未加载Wasm代码,因此研究团队从首页三个随机选择的链接中收集数据。与忽略所有子页面的爬虫相比,这导致识别使用WebAssembly的站点增加了25%,并多收集了40%的独特样本。
研究团队还使用了profiler来收集所访问站点的CPU使用率的信息,从而使团队能够评估执行JavaScript和WebAssembly代码所花费的时间百分比。为了进行分析,研究团队测量了Wasm和JavaScript代码的执行时间,并排除了等待网络响应时的所有其他因素,例如空闲时间。
在技术层面,研究团队透明地hook了所有可编译或实例化Wasm模块的JavaScript函数的创建。这包括instantiate
方法、instantiateStreaming
方法和WebAssembly.Module
构造函数等。
Alexa提供网站流量统计信息,其中包括网站流量排名。排名是使用专有方法计算出来的,该方法会将网站的每日唯一访问者的估计平均值以及过去三个月的综合浏览量估算值结合在一起进行计算。
Technische Universität Braunschweig(布伦瑞克工业大学)是德国最古老的技术大学(与美国体系中的技术研究所类似),是德国顶尖的工程大学之一。
查看英文原文:
Recent Study Estimates That 50% of Web Sites Using WebAssembly Apply It for Malicious Purposes