导语:他们知道我们是否在一辆超速驾驶的汽车中,知道我们是在走路、骑车或者是乘坐在公共汽车上,甚至也知道我们每天接收电话的数量、时间等信息,当然对于我们解锁设备的个人识别码或者登陆时的双重验证他们更是了如指掌。
事实上,智能手机对于其使用者都非常了解。他们知道我们是否在一辆超速驾驶的汽车中,知道我们是在走路、骑车或者是乘坐在公共汽车上,甚至也知道我们每天接收电话的数量、时间等信息,当然对于我们解锁设备的个人识别码或者登陆时的双重验证他们更是了如指掌。而最近,研究人员设计了一种攻击方式—利用一个网站来秘密收集手机大量的数据,而这些数据目前来看准确性惊人。
目前来说键盘记录攻击最有效的是猜测四位数的PIN码,一般来说第一次输入的准确率为74%,第三次尝试的成功率为94%。相同的技术还可以用于推断其他输入,包括许多Android用户依赖锁定手机的锁定模式,尽管准确率可能会有所不同。攻击过程中只要求用户打开恶意网页,并在关闭之前输入字符就可以了,整个过程中不需要安装任何恶意应用程序。
恶意网页或浏览器可以通过基于HTML的iframe标签提供恶意广告或恶意内容,合法网站可以使用标准JavaScript代码来安装攻击,该代码可访问内置于几乎所有iOS和Android设备中的运动和方向传感器。为了说明攻击是如何工作的,英国纽卡斯尔大学的研究人员写了一个名为PINLogger.js的攻击代码。在不发生任何警告或外部预警的情况下,JavaScript能够准确地推断出输入到设备中的字符。
“这意味着每当你在网页上输入私人数据时,例如网页上都会显示一些广告横幅,则广告提供者可能会“监听”并发现你在该页面中输入的内容。新西兰大学研究人员之一的暹罗F Shahandashti向我们展示了这一攻击,“据我们所了解,当攻击进行时,在一些浏览器中如果你打开一个页面A,然后再打开一个页面B,而不关闭页面A(大多数人做的)那么页面A在后台就可以监听你在在页面B中输入的内容。”
修复困难
各种类型的攻击工作的具体条件在浏览器与浏览器之间都会有所不同,而起在一定程度上还取决于每个浏览器运行的操作系统。百度所提供的浏览器,无论是在iOS或Android上运行,都能最大限度地访问传感器。因此,当恶意网页直接加载到打开或背景浏览器标签中时,浏览器会提供敏感的传感器数据,作为iframe加载或打开或背景选项卡中,甚至是当设备屏幕被锁定时,恶意页面直接加载或作为iframe加载。相比之下,其他广泛使用的浏览器限制了对传感器数据的访问,但也仍然提供了滥用的机会。
例如,Chrome for iOS将传感器数据提供给直接加载的恶意站点,作为iframe或作为广告进入活动选项卡。但Google浏览器却会阻止访问加载到背景选项卡中的所有网站,并且iPhone被锁定也会如此。Chrome for Android除了不向传输服务器提供传感器数据之外工作原理都类似。当JavaScript直接托管或通过活动选项卡上的iframe加载而不是后台选项卡时,Android上的Firefox也可以访问传感器。与此同时,Safari具有与Firefox相同的访问权限,但是当iPhone屏幕被锁定时,Apple制造的浏览器也访问了代码。各种浏览器的条件完整总结如下表所示:
研究人员分别向Chrome,Firefox,Safari和Opera的厂商报告了这一情况。Mozilla在版本46中发布了部分修复程序,其中Firefox限制了JavaScript访问运动和方向传感器到顶级文档和同源的iframe。在2016年3月发布的iOS 9.3的Apple安全更新中,Safari在隐藏页面时暂停了运动和方向数据的可用性,采取了类似的对策。尽管这些确实是阻止PINLogger攻击的有效手段,但更新也阻止了浏览器支持一些有用的功能,例如健身和运动网站提供的功能。而Chrome则还是可以使传感器数据可用于加载到活动选项卡中的网页,Chrome开发人员在此公开承认这个问题。(Opera开发人员回应不清楚)
另外纽卡斯尔大学的研究员冯浩告诉我们,“这个问题没有直接的解决办法,也没有打破潜在有用的Web应用程序,目前没有人能够提出明确的解决方案。”
它知道你什么时候睡觉
通过访问加速度计和陀螺仪传感器,Web托管的JavaScript可以测量手机角度,旋转,移动速度和类似特征的微妙变化。这些数据反过来可以显示关于手机及其用户的敏感信息,包括每个电话的准确开始和结束以及使用它的人是不动的,行走的,在公共汽车上,在汽车中或在一列火车上。研究人员还尝试使用运行在Android 5.1.1版的Nexus 5手机上的Maxthon浏览器来进行攻击,它和运行其他浏览器的不同设备的行为也类似。
在传感器显示的所有信息中,输入的击键几乎可以说是最敏感的。研究人员使用人工神经网络训练将某些传感器测量结合到50位四位PINS中包含的特定字符中。PINLogger能够在第一次尝试时推断出准确率为74%的受试者PIN,并在五次尝试中使得准确率接近100%。相比之下,来自一组50个PIN的随机猜测在第一次尝试中只有2%的准确率,在三次尝试中也只有6%的准确性。
研究人员写道:“人们可能会认为攻击应该针对整个4位数的PIN空间进行评估。但是,我们认为,由于用户不会随机选择PIN码,因此从有限的一组PIN中进行选择时,这种攻击仍然可行。据报道,所有可能的4位数PIN码中约有27%属于一组20 PIN,包括简单的PIN,如“1111”,“1234”或“2000”。”
研究人员继续进行了一轮评估对所有可能的四位数PIN的培训。培训包括两种模式。第一种,被称为多用户模式,其被训练使用几个主题。另外一种则被称为同一用户模式,它主要依赖于攻击目标的个人的训练。研究人员写道:
我们在多用户模式的结果表明,我们可以分别在第一,第二和第三次尝试中推断成功概率为70.75%,83.27%和94.03%。这意味着对于4位数的PIN,并且基于获得的传感器数据,攻击者可以从一组3 ^4 = 81个可能的PIN 中猜测PIN ,成功概率为0.92064 = 71.82%。然而,随机攻击只能在81次尝试中以0.81%的概率预测4位数PIN。相比之下,PINlogger.js的成功率比随机攻击者高得多。
而在同一用户模式下,81次尝试中猜测PIN的成功概率为85.46%。
还有个“关键问题”
现在没有理想的方法来防止攻击,是因为如前所述,一个无法访问传感器数据的浏览器可能会阻止许多有用的程序站点进行正常工作。对于使用Chrome的用户,一个很好的做法是尽可能多地关闭标签页。研究人员警告说,除非浏览器和操作系统制造商找出更好的长期解决方案,否则威胁可能会持续增加。
他们写道:“通过JavaScript访问移动传感器数据其实仅限于几个传感器,但这一情况可能会在未来扩大,特别是随着物联网中传感器设备的快速发展,因此设计安全可用的传感器数据管理的机制仍然是未来研究的关键问题。