作者:{Caviar}@ArkTeam
原文作者:Jiyeon Lee,
Hayeon Kim,
Junghwan Park
原文题目:Pride and Prejudice in ProgressiveWeb Apps: Abusing Native App-like Features inWeb Applications
原文来源:ACM SIGSAC Conference on Computer and Communications Security (CCS ’18) 2018
Google公司自2015年提出Progressive Web Apps(渐进式Web应用,简称PWA)。接着,AliExpress 和Flipkart等一些大公司相继利用PWA技术搭建他们的网站。本文作者系统性地调研了PWA,分析了推送消息功能中的钓鱼风险,利用PWA的离线缓存功能进行侧信道攻击和加密货币挖矿攻击,最后提出了防范的建议。
背景介绍
- Service worker:它是一个事件驱动的Web工作程序,使用JavaScript编写。HTTPS网站在浏览器上注册service worker,将其绑定到由HTTPS协议,域和端口定义的源。
- Web推送:Web推送通知由桌面或移动浏览器控制。推送通知中包含推送图标,推送消息及其发件人的域。
图1 Web推送过程
- Cache:HTML5提供了cache的新功能,cache是不受源限制的本地存储,无论网络状态如何,都可以访问,即可离线访问。
图2 cache使用机制
PWA面临的威胁
- 利用推送通知进行钓鱼:PWA攻击者通过滥用推送通知来发起网络钓鱼活动。利用部分浏览器不显示推送域名的特点,攻击者伪造Web内容诱使用户,并请求用户对攻击者控制的PWA的推送权限。随后,攻击者选择目标URL制作推送消息以重定向受害者。
- 第三方推送服务风险:只有HTTPS站点才能注册其service worker,只有service worker才能显示推送通知,所以HTTP网站本质上无法显示推送通知。该限制可绕过!对于每个嵌入了来自第三方推送服务脚本的HTTP站点,第三方推送服务都会为其分配一个HTTPS的子域。用户就会被重定向到该HTTPS子域接收推送消息。攻击者可利用从HTTP域到HTTPS域的信任转换,将用户重定向到攻击者的HTTP域。另外,部分推送服务中没有VAPID协议,这使得攻击者只需找到从目标域泄漏的订阅对象就能发送带有伪造域的伪造消息。泄露路径有两种,①通过HTTP传输订阅对象,攻击者能够获取明文的订阅对象,提取订阅对象的endpointURL;②通过HTTPS传输订阅对象,部分第三方库使用变量保存要订阅对象的目标URL,但是包含此变量的脚本用HTTP发送,攻击者捕获并修改此变量。攻击流程如下:
图3 通过HTTP和HTTPS传输订阅对象
- 侧信道攻击推断浏览器历史:利用PWA的缓存,当受害者离线打开由攻击者控制的PWA时,攻击PWA会准备多个iframe,其源是目标PWA的HTTPS URL。攻击者还会为每个iframe注册一个onload事件处理程序,以便攻击者控制的PWA知道每个iframe中跨源目标网站的加载完成。如果受害者访问支持离线的目标PWA,将调用onload事件处理程序。
- 加密货币挖矿攻击:service worker会坚持执行事件处理程序直到事件完成,即使关闭网站后也是如此,攻击者利用这种持久性来执行加密货币挖矿的计算。