一个网页是如何从你的手机中盗窃数据的

    来源: 赢家财富网 作者: 佚名

    摘要: 今年9月15日,Chrome61发布,它启用了WebUSB作为其默认功能。而WebUSB是一个Javascript API,可以允许网页访问已连接的USB设备。这里的USB设备是指系统和工业的USB设备,所以不支持常见的USB设备(比如网络摄像头,HID或大容量储存设备)。

      今年9月15日,Chrome61发布,它启用了WebUSB作为其默认功能。而WebUSB是一个Javascript API,可以允许网页访问已连接的USB设备。这里的USB设备是指系统和工业的USB设备,所以不支持常见的USB设备(比如网络摄像头,HID或大容量储存设备)。然而通过WebUSB API,很多其他的USB设备可以被访问,且当用户授权给网页时,自己可能根本不了解网页获取的访问权限级别。

      这篇文章探寻WebUSB的功能,以深入了解其工作原理,攻击方法及隐私问题。我们会解释访问设备所需的过程,以及浏览器是如何处理权限的,然后我们会讨论一些安全隐患,并演示一个网站如何使用WebUSB来建立ADB连接来入侵安卓手机。

      基础

      当USB设备插入主机时,浏览器会读取设备发送的描述符,然后将其储存在内部USB设备储存器中。此过程由Chrome的浏览器内核Blink处理。日志可以在chrome://device-log(GET参数“refresh = 1”非常有用)中查看。

      根据规范,设备可以在其二进制对象存储中的平台描述符中明确地声明对WebUSB的支持。

      


      浏览器将每个USB设备存储在自己的设备存储器中。WebUSB的可访问性由本机驱动程序支持所决定。在Windows上,我们可以通过浏览器访问由WinUSB驱动程序处理的每个USB设备。其他的诸如大容量存储设备,网络摄像头或HID等就无法通过网络访问了,因为它们具有处理这些设备的专用驱动程序。

      根据规范(和本博客文章),一旦设备注册,浏览器就会显示一条通知。看起来像这样:

      


      但是,这种行为不容易重现。我们在以下系统上尝试过:

      Windows 7, Chrome 61 Windows 10, Chrome 61 Debian, Chromium 60 (启用了chrome://flags/#enable-experimental-web-platform-features) Debian, Google Chrome 61 Arch Linux, Chromium 61 Arch Linux, Google Chrome 61

      Platform Descriptor中有一个有趣的元素叫做“iLandingPage”。即使规范将协议“http://”和“https://”作为前缀,我们也可以选择一个空协议,在这种情况下,我们应该可以在提供的URL本身中指定协议。

      但是,Chrome已移除或根本没有实现注入任意URL前缀的功能。以下是源文件中名为“webusb_descriptors.cc”的代码片段。它解析接收到的描述头,包括“iLandingPage”。将URL前缀限制为“http://”和“https://”。

      // Look up the URL prefix and append the rest of the data in the descriptor. std::string url; switch (bytes[2]) { case 0: url.append("http://"); break; case 1: url.append("https://"); break; default: return false; } url.append(reinterpret_cast(bytes.data() + 3), length - 3);

      请求访问设备

      网页可以打开提示请求访问设备,它必须指定过滤器来过滤可用的设备。如果过滤器为空,那么即允许用户从所有可用设备中选择设备。打开的提示如下所示:

      


      用户可以看到所有(过滤的)可用设备。设备名称引用于自身所发送的产品名称。如果没有指定产品名称,Chrome会尝试通过有关设备的已知信息来猜测一个表达性的名称。然后,它会将设备命名为“来自”的未知设备。用户选择设备并点击“连接”后,即可授予访问设备的权限。

      权限处理

      权限由Chrome的permission API处理。一旦向网页授予权限访问设备,权限会一直持续,直到用户手动撤销。处理权限的API根据其根源区分“网页”,即当具有匹配的协议,主机和端口时,浏览器就会认为这个网页与另一网页相同。浏览器识别唯一设备的行为不是很明显,用于识别的候选目标由设备在其描述头中发送。候选目标如下:

      GUID Vendor ID Product ID

      虽然GUID是唯一的ID,但它不能用于识别设备。以下是多次插入和拔出测试设备的日志的截图,可见每次设备都有不一样的GUID,即便如此,每次插入后设备都被许可且可以访问,不需要进一步的许可请求。

      


      这表明Chrome使用Vendor ID和Product ID的组合来标识设备。

      访问设备

      一旦网页被授予访问设备的权限,那么就可以访问它了。首先其必须打开设备,打开设备的过程中就开始了与设备的会话,然后设备会被锁定,这样同一浏览器会话中的其他选项卡就无法访问了。但是另一个浏览器的另一个网页仍然可以打开相同设备。

      为了与设备进行通信,浏览器必须声明要与之通信的接口。在声明接口之后,主机上的任何其他应用程序都是无法声明的。使用声明的接口,页面可以与指定接口的端点通信。

      接下来,页面启动控制传输来设置设备,这基本上指定了它希望与设备通信的方式以及所要求的确切功能。一旦设备设置好,它就可以传输数据,并且完成USB设备接口的所有功能。

      检查WebUSB的支持

      我们构建了一个小型概念性证明(PoC)工具,可以轻松确定WebUSB是否支持设备。该工具测试是否能至少声明一个已连接的USB设备的接口,如果存在,那么就意味着它可以与设备通信,因此该设备是被支持的。

      不过该工具无法测试USB设备是否完全不受支持,因为无法声明接口的原因有所不同。该接口可以被另一个程序声明,或浏览器可能没有系统(Linux)的访问权限。

      该工具是一个简单的静态网站。你可以点击这里下载。这是它的外观:

      


      要测试设备是否支持,请单击“选择设备”按钮打开权限提示。此提示将列出所有可用的USB设备。通过选择所需的设备并单击“连接”,工具将打开设备,并遍历每个可用的界面,并尝试声明。结果记录在页面底部的表格中。被声明的interfaces列显示可以声明的接口编号。

      


      如果要在其他地方使用受支持的设备,则需要刷新站点或关闭该选项卡。

      安全性考虑

      总体来说WebUSB是安全的,但是像所有新添加的代码一样,它扩大了代码库,因此也扩大了浏览器的受攻击面。这是一种新技术,所以问题是不可避免的,在这方面的一些安全状况已经有了初步意见。

      WebUSB在Chrome的浏览器内核Blink中运行。因此,发现WebUSB中的内存崩溃可能并不比Blink中其他地方的内存崩溃更影响更大。

      实现WebUSB的网站应确保节制使用XSS是一个优先事项。利用XSS漏洞的攻击者可能具有与网站相同的对已连接设备的访问权,期间用户并不会注意到。

      处理WebUSB的权限对于用户可能不是很明显。当页面请求访问USB设备时,向用户发出的通知不包含任何警告,而该站点从这时起将具有对该设备的完整的,静默的USB访问权限。

      我们构建了一个概念性证明(PoC)来证明这个问题。在这种情况下,基于WebUSB的ADB主机实现被用于访问连接的Android手机。一旦用户接受请求,该页面使用WebUSB可以从相机文件夹中检索所有图片。

      通过这种访问级别,网站不仅可以从文件系统中窃取每个可读取的文件,还可以安装APK,访问摄像头和麦克风来监视用户,并可能将权限升级到root。

      该示例受到用户交互的高度限制,因此风险大大降低 – 用户必须向其手机授予网页权限,在其手机上激活USB调试,并最终允许来自主机的ADB连接。到目前为止,这只适用于Linux,因为在Windows中的实现相当不稳定。然而,它既可以作为在WebUSB上运行复杂协议的示例,也可以显示WebUSB请求的一次点击如何导致数据泄露。

      您可以在下面的视频中看到PoC的操作。有两个虚拟机,左边的一个作为恶意的Web服务器,右边的一个作为受害者。网站连接到手机后,ADB连接在手机上确认。然后检索所有拍摄的照相机图像并将其显示出来。

      进一步的研究

      进一步的研究可能集中在发现实现WebUSB的缺陷,并可能会披露内存崩溃bug。然而,代码库相对较小,并且新的修复也在持续写入。

      另一个有趣的调查对象是用恶意的USB设备攻击Chrome。前者可能会发送错误的USB描述符,并可能在浏览器中触发未预期的行为。 Chrome可以为WebUSB(chrome://usb-internals/)添加虚拟测试设备,这很有帮助。这样的攻击向量需要物理访问设备,所以显得有点不太现实。

      另外,在研究WebUSB或任何其他新的网络标准时,如Web蓝牙或Web NFC,请记住,这些功能日新月异,甚至一个月前的信息可能已经过时了。

      总结

      一般来说,由于在有限的审查期间管理和限制,WebUSB被确定具有良好的安全标准。支持的设备非常有限,WebUSB无法访问网络摄像头,HID和大容量存储设备。然而进一步研究后,我们发现这是一个有趣的技术,特别是在引入重大变化或附加功能时。

      建议用户永远不要让不受信任的网站访问包含任何敏感数据的USB设备。这可能导致设备被入侵。

    关键词:

    网页,盗窃数据

    审核:yj194 编辑: yj194

    免责声明

    1、凡本网注明“来源:***”的作品,均是转载自其他平台,本网赢家财富网 www.yjcf360.com 转载文章为个人学习、研究或者欣赏传播信息之目的,并不意味着赞同其观点或其内容的真实性已得到证实。全部作品仅代表作者本人的观点,不代表本网站赢家财富网的观点、看法及立场,文责作者自负。如因作品内容、版权和其他问题请与本站管理员联系,请在30日内进行,我们收到通知后会在3个工作日内及时进行处理。

    2.本网站刊载的各类文章、广告、访问者在本网站发表的观点,以链接形式推荐的其他网站内容,仅为提供更多信息供用户参考使用或为学习交流的方便(本网有权删除)。所提供的数据仅供参考,使用者务请核实,风险自负。

    版权属于赢家财富网,转载请注明出处
    查看更多
    • 内参
    • 股票
    • 赢家观点
    • 娱乐
    • 原创

    融券制度调整 量化私募影响有限

    ●本报记者王宇露证监会日前表示,根据当前市场情况,对融券及战略投资者出借配售股份的制度进行针对性调整优化,在保持制度相对稳定的前提下,阶段性收紧融券和战略投资...

    键凯科技(688356)低开收上下影中阳线,沪港通概念主力资金净流出64.76亿元

    键凯科技(688356)10月18日低开收阳,收盘价为122.9,相较于昨日阴线收盘价118.85,上涨4.05元,小幅上涨3.41%,近两日收一阴一阳俩根K线,近两日呈现上涨趋势,近10个交...

    提供保费补助 多地力推科技保险产品

    深圳市地方金融监督管理局等五部门日前联合发布《深圳市关于金融支持科技创新的实施意见》,提出发挥科技保险保障作用,引导和鼓励保险公司研发和推广科技保险产品。记者...

    受益于国产替代逻辑,概伦电子股价大涨

    今日开盘,概伦电子股价大涨。盘中涨幅一度超过8%。消息面上,据英伟达公司向美国证券交易委员会提交的最新公开文件,美国政府已经发布更新和修正后的临时最终决定。受管...

    早知道:2023年10月19号热点概念与题材前瞻

      上证指数目前处于下跌趋势中,依据赢家江恩价格工具得出:当前支撑位:3018.56点、3053.04点,当前阻力位:3063.04点、3139.61点,由赢家江恩时间周期工具展示得出:...

    早知道:2023年10月18号热点概念与题材前瞻

      上证指数目前处于下跌趋势中,依据赢家江恩价格工具得出:当前支撑位:3053.04点、3063.04点,当前阻力位:3143.77点、3152.02点,由赢家江恩时间周期工具展示得出:...

    籍贯所在地与户口所在地有什么区别?籍贯所在地怎么写

    籍贯所在地与户口所在地有什么区别?籍贯指祖籍,一般在填写身份信息时会用到,主要以户口信息为主。

    双黄连全国禁用了么?什么原因导致的?

    新冠肺炎肺炎疫情期间,中成药双黄连口服制剂被炒热,甚至引起抢购。然而,没有证据证明它对治疗新冠肺炎肺炎有效。相反,双黄连口服制剂还可能出现的不良反值得公众警惕...