在奥斯丁举行的互联网自由和开放通信研讨会 FOCI 16会议上,加拿大多伦多大学公民实验室的研究人员总结了中国三大巨头的浏览器——阿里巴巴的 UC 浏览器、腾讯的 QQ 浏览器和百度的浏览器的隐私与安全问题。
这些浏览器在中国有着庞大的用户基数,市场份额均位居前列,其安全性对广大用户而言影响深远。
中国的第三方浏览器市场在全球的地位不言而喻,特别是中国的“三巨头”科技公司,包括百度(B),阿里巴巴(A),腾讯(T),江湖人称“BAT”。这三家公司已分别发布了自己免费的浏览器,分别为百度浏览器,UC浏览器和QQ浏览器。所有的浏览器都是基于Chromium平台,这些浏览器提供一套Chrome和Safari等浏览器不具备的功能,包括产品组合绑定运营;内置洪流(built-in torrent)支持,鼠标手势(mouse gesture),以及压缩功能旨在减少移动数据使用量等。
这三个浏览器用户群庞大,尤其是在中国和整个亚洲。QQ浏览器和UC浏览器均跻身中国最常用的浏览器前五位,而百度浏览器在10名开外,位居22名。其中 UC 浏览器是仅次于 Chrome 的第二大移动浏览器,用户数量数以亿计。
但是,调查分析的主要结果如下:
这三大浏览器都会收集和传输非常大量的用户隐私数据,包括各种硬件识别码,位置数据以及用户网页浏览历史数据等;
三大浏览器都使用不安全的方法来传输这些数据,例如使用极易破解的对称式加密法,在没有任何加密措施的情况下传输用户隐私数据;
三大浏览器在软件更新进程都存在漏洞,每个浏览器至少有一个版本在软件更新进程中为攻击者留下可以执行任意代码的漏洞;
三大浏览器没有使用行业标准的安全数据传输方法,比如没有使用标准的 OpenSSL 协议,而是使用自制的协议。
这些结果显示安全和隐私方面的缺陷并不是每一家公司孤立的问题,而是反映了中国流行应用开发和安全的更广泛问题。 尽管这些浏览器拥有海量用户群,尤其是在中国,但是信息安全研究界对应用安全的重视度还是有限的,而这种意识的缺失是非常病态的,因为众所周知,西方情报机构曾利用UC浏览器使用不安全的传输方法传输用户个人数据而成功获取用户信息,实施监视活动。 因此,我们认为安全研究人员应该更多的关注那些拥有亿万用户群却缺乏外部监管的应用程序。
三大浏览器的开发企业是中国最大的三家科技公司,在中国在线搜索,社交媒体和电子商务领域占据重要地位。在谷歌浏览器脱离中国市场的情况下,百度搜索引擎始终占据主导地位, 2016年3月的报告显示,其市场份额达到70%,每月拥有6.6亿移动搜索用户。腾讯运营着两家世界最大的通信平台,QQ平台拥有8.53亿用户,微信拥有6.97亿月度活跃用户。阿里巴巴经营着中国最大的电子商务网站,包括淘宝和天猫,拥有超过3.67亿的活跃用户。
三大浏览器的准确市场占有率很难获取,但是通过研究我们发现,UC浏览器是目前最流行的,是中国,印度和印度尼西亚最流行的手机浏览器。此外,据估也是世界上第二大流行的手机浏览器。虽然一些报告估计QQ和百度浏览器在中国分别为第二和第三大流行的手机浏览器,但是也有人指出他们加在一起的市场份额还不到10%。
不安全传输用户隐私数据和应用程序中存在潜在的执行任意代码漏洞都不再是假想的担忧。根据“棱镜门”事件中爱德华·斯诺登泄露的文件显示,西方情报机构早在2012年就已经成功识别UC浏览器中的信息泄露漏洞,随后成功地利用漏洞设计了一个XKeyscore插件以窃取应用程序的用户数据,实施监控。
以下的分析包括百度,QQ和UC浏览器的Android和Windows共11个不同的版本,具体如表1所示:
浏览器 | 操作系统 | 版本 |
---|---|---|
百度浏览器 | Windows (C) | 7.6.100.2089 |
百度浏览器 | Windows (I) | 43.22.1000.452 |
百度浏览器 | Android (C) | 6.2.18.0 |
百度浏览器 | Android (I) | 5.1.0.1 |
QQ浏览器 | Windows | 9.2.5478 |
QQ浏览器 | Android | 6.3.0.1920 |
UC浏览器 | Windows (C) | 5.5.10106.5 |
UC浏览器 | Windows (I) | 5.5.9936.1231 |
UC浏览器 | Android (C) | 10.9.0.703 |
UC浏览器 | Android (C) | 7.9.3.103 |
UC浏览器 | Android (I) | 10.9.0.731 |
表1:应用程序版本分析(Ⅰ)指国际版,(C)指中文版
我们发现,无论是浏览器的哪个版本都存在收集用户个人信息(如硬件序列号等)的情况。大部分浏览器存在传输用户位置信息的情况,如GPS坐标或附近的WiFi网络,还有大多数浏览器会跟踪浏览网页的完整URL,即使是通过HTTPS最初检索的页面。
在谈到三大浏览器使用的加密的时候我们会用到“易破解”这个词语。当我们说加密术是“易破解”的时候,并不是说加密本身的算法是有缺陷或是不安全的(尽管有时候百度浏览器使用的算法的确是这样)。相反的,我们的意思是该算法使用不当,其使用的加密法是完全对称的,并且使用了硬编码密钥。由于用的是对称算法,所以任何分析浏览器使用的加密算法和硬编码的密钥的人都可以轻易破解它们加密的内容。
关于对称加密和非对称加密
加密数据有两种基本方法:对称加密或是非对称加密。对称加密相比于非对称加密的优点是加密速度快。缺点就是只要你知道使用的算法和某个键,你就能破解任意的密码。利用简单的算法,做到这点易如反掌。当加密术只使用了对称算法的时候,只要对程序稍加分析就可以写出一个破解工具来。
我们通过使用自己编写的代码破解了每个浏览器的加密流量证实了这一情况。表2中是我们总结的每个浏览器的不安全数据泄露情况。
浏览器(操作系统) | 用户个人信息 | 地址信息 | 浏览行为 |
---|---|---|---|
百度浏览器 (W) | ✓ | ✓ | |
百度浏览器 (A) | ✓ | ✓ | ✓ |
QQ浏览器(W) | ✓ | ✓ | |
QQ浏览器(A) | ✓ | ✓ | ✓ |
UC浏览器(W) | ✓ | ✓ | |
UC浏览器(A) | ✓ | ✓ |
表2:每个中文最新版浏览器是否存在泄露用户隐私数据,地址或浏览器活动的情况;
(W)指Windows版本,(A)指Android版本
最后,我们发现大多数浏览器在其自我更新的过程中,允许有人从网络的特权点(privileged point)上注入流量,进而导致浏览器运行任意代码漏洞。下文为我们分析总结的百度,QQ以及UC浏览器中文版本的相关情况。
如表3所示,我们发现百度浏览器(W)7.6.100.2089版本中存在通过网络泄漏敏感数据的情况。
数据信息 | 数据类型 | 加密措施 |
---|---|---|
MAC地址 | 用户个人信息 | 易破解 |
硬盘序列号 | 用户个人信息 | 易破解 |
搜索字词 | 浏览行为 | 未加密 |
完整的HTTP(S) 链接 | 浏览行为 | 易破解 |
HTML页面标题 | 浏览行为 | 易破解 |
表3:百度浏览器(W)7.6.100.2089中文版本数据泄露情况总结
简单加密的数据信息也只是通过对称分组密码进行保护,这种数据是用一种改编的TEA密码进行加密的,我们称为MTEA。百度用MTEA使用的密码模式块是CBC的一种非标准修改,叫做MCBC。
我们还发现,该浏览器并没有使用非对称加密算法来验证软件更新。更新元数据也是通过对称的MCBC + MTEA算法进行传输的,此外,下载的二进制文件也只使用MD5 hash进行验证,而不是数字签名验证。在浏览器检索更新时,通过发起中间人攻击,攻击者就能够下载并运行任意可执行文件。
此外,如表4所示,我们还发现百度浏览器(A)6.2.18.0版本通过网络泄露敏感数据的情况。
数据信息 | 数据类型 | 加密措施 |
---|---|---|
国际移动设备标识(IMEI) | 用户个人信息 | 易破解 |
GPS坐标 | 地址信息 | 未加密 |
附近的WiFi网络 | 地址信息 | 易破解 |
搜索字词 | 浏览行为 | 未加密 |
完整的HTTP(S)链接 | 浏览行为 | 未加密 |
表4:百度浏览器(A)6.2.18.0中文版数据泄露情况总结
所谓简单加密也只是使用一些简单的对称算法进行加密。用户的IMEI信息通过不安全的传输方式被发送到多个地方,其中一个例子中,浏览器使用了一种“自制”算法,32位XOR mask,bit rotations和非标准的Base64编码。另一实例中,加密算法仅使用了硬编码5字节ASCII RC4密钥(“HR2ER”)进行加密。
我们还发现,百度浏览器加密数据使用的硬编码ASCII AES密钥(“h9YLQoINGWyOBYYk”)含有IMEI数据,GPS坐标,以及附近的WiFi接入点等信息。我们确定该代码不属于正式的百度浏览器,而是属于百度移动统计SDK。通过使用Lookout(一家移动安全公司)的数据,我们发现这个SDK不仅被用于百度产品,还为成千上万的第三方谷歌Play Store应用程序所用。其中,最流行的应用程序是ES File Explorer File Manager(com.estrongs.android.pop),据谷歌Play Store报告,该应用程序拥有1-5亿的安装量。 (由于谷歌Play Store在中国无法访问,所以这个数字很可能还不包含大量的中国大陆用户。)
此外,我们发现Android版本的更新程序同样易受中间人攻击,因为其更新程序仅仅依靠MD5 hash保护。通过注入网络流量,攻击者就能够攻击浏览器,并提示用户安装任意应用程序。
QQ浏览器(W)9.2.5478版本泄露敏感数据的情况总结如下表5所示:
数据信息 | 数据类型 | 加密措施 |
---|---|---|
设备硬件编号 | 用户个人信息 | 未加密 |
机器主机名称 | 用户个人信息 | 易破解 |
网关MAC地址 | 用户个人信息 | 易破解 |
硬盘序列号 | 用户个人信息 | 易破解 |
Windows用户安全标识符 | 用户个人信息 | 易破解 |
搜索字词 | 浏览行为 | 未加密 |
完整的HTTP(S)链接 | 浏览行为 | 未加密 |
表5:QQ浏览器(W)9.2.5478版本数据泄露情况总结
表中提及的“易破解”加密方式采用的是多种含有硬编码密钥的加密算法,包括DES+ECB以及3DES+ECB模式。但是很有趣的是,大部分敏感数据都是采用和百度浏览器一样的非标准的MTEA+MCBC模式加密。目前还不清楚,为什么百度和QQ浏览器使用相同的非标准加密模式对敏感数据进行加密。
我们针对QQ浏览器在更新进程中存在的两个安全漏洞进行了概念验证(proof-of-concept)。第一个安全漏洞说明仅是验证数字签名还不足以认证软件更新的安全性。数字签名验证只是判断下载的EXE是不是由腾讯签名的,但是不会判断这个EXE会不会更新QQ浏览器-这个EXE可以是任何一个腾讯签名的程序。我们发现,旧版的QQ浏览器安装程序不会执行签名检查(这个安装程序本身只使用了对称加密),在更新时也是这样,我们使用了漏洞版本的QQ浏览器在线安装服务来“更新”用户的QQ浏览器,然后下载和执行我们选择的一个EXE。
第二个漏洞是在QQ浏览器更新进程中的目录遍历攻击(directory traversal)。通常,当有更新时,QQ的服务器会在响应中给出EXE文件的下载链接,MD5哈希,新功能和修复简介,EXE的文件名和保存位置。我们发现文件名中出现了目录,通过目录遍历,攻击者可以覆盖用户有权限写入的任何文件。例如,将文件命名为../../../../../../../../../program files/tencent/qqbrowser/qqbrowser.exe,我们就可以用任意程序替换QQ浏览器,这样用户在下次执行QQ浏览器时,实际执行的就是我们的程序。攻击者可以利用这种攻击方式来安卓隐藏的间谍软件或木马。
QQ浏览器(A)6.3.0.1920版本泄露敏感数据的情况总结如下表6所示:
数据信息 | 数据类型 | 加密措施 |
---|---|---|
国际移动设备标识(IMEI) | 用户个人信息 | 易破解 |
国际移动用户识别码(IMSI) | 用户个人信息 | 易破解 |
安卓ID | 用户个人信息 | 易破解 |
QQ用户名 | 用户个人信息 | 易破解 |
WIFI MAC地址 | 用户个人信息 | 易破解 |
附近的wifi接入点 | 地址信息 | 易破解 |
Wifi热点 | 地址信息 | 易破解 |
搜索字词 | 浏览行为 | 未加密 |
完整的HTTP(S)链接 | 浏览行为 | 未加密 |
表6:QQ浏览器(A)6.3.0.1920版本数据泄露情况总结
该浏览器使用了RSA-AES加密敏感数据,RSA-AES是非对称算法,但是由于AES秘钥使用的是一个128位的RSA公钥加密,而RSA的安全程度取决于加密秘钥的系数分解难度,只有128位的RSA公钥加密分解起来并不难(RSA秘钥一般建议至少2018位)。使用 Wolfram Aplpha在线计算引擎 ,用不了1秒就可以分解秘钥的系数:245406417573740884710047745869965023463,指数:65537。分解后,得到了下面两个质因数:14119218591450688427 x 17381019776996486069
总之,该浏览器的软件更新进程同上述的百度浏览器(A)一样易受攻击,用户信息安全性得不到保障。
UC浏览器(W)5.5.10106.5中文版信息泄露情况总结如下表7所示:
数据信息 | 数据类型 | 加密措施 |
---|---|---|
硬盘序列码 | 用户个人信息 | 易破解 |
基板序列码 | 用户个人信息 | 易破解 |
文件系统卷标信息序列码 | 用户个人信息 | 易破解 |
完整的HTTP(S)链接 | 浏览行为 | 未加密 |
表7:UC浏览器(W)5.5.10106.5中文版信息泄露情况总结
该浏览器只通过基于XOR masks ,使用硬编码秘钥的“homebrew”算法来保护这些“易破解”的敏感数据。此外还发现,中文版的UC浏览器使用的是神马搜索引擎,输入的搜索查询词是不会被加密的。
而在软件更新进程中则使用了一个复杂的更新方案,旨在有效的修补软件以实现减少下载字节的目的。然而,一旦该方案被破解,它将如同上述的百度浏览器(W)一般极易受到攻击。
UC浏览器(A)10.9.0.703版本信息泄露情况总结如下表8所示:
数据信息 | 数据类型 | 加密措施 |
---|---|---|
国际移动设备标识(IMEI) | 用户个人信息 | 易破解 |
国际移动用户识别码(IMSI) | 用户个人信息 | 易破解 |
搜索字词 | 浏览行为 | 未加密 |
完整的HTTP(S)链接 | 浏览行为 | 易破解 |
表8:UC浏览器(A)10.9.0.703版本信息泄露情况总结
如Windows版本一样,UC浏览器(A)也只通过基于XOR masks ,使用硬编码秘钥的“homebrew”算法进行保护。Dalek等人的报告中还曾对10.2.1.161版本进行过研究,并通过硬编码AES密钥来揭示该版本的数据泄露情况,但目前我们发现,这些泄漏已经被修复。
我们还针对2011年发布的UC浏览器(A)7.9.3.103版本进行了分析,因为根据“棱镜门”斯诺登所公布的文件表明,西方情报机构就是利用该版本的漏洞,开发XKeyscore插件成功窃取了大量用户隐私数据。我们在该版本中并未发现Dalek等人研究报告中提及的漏洞,这意味着他们并不是利用该漏洞开发XKeyscore插件的人。
然而,我们在10.9.0.703版本中发现的大部分的数据泄露情况同样存在于7.9.3.103版本中。这些泄露情况泄露的是与上表中相同的数据,这也就意味着我们在最新版本的浏览器中发现的漏洞很可能与2012年被用于开发XKeyscore插件的漏洞是一样的。
虽然在最新版本的浏览器中确实对下载的APK文件进行了数字签名认证,但是我们发现在7.9.3.103版本中并不存在,如此一来,在软件更新进程中就很容易发生如上述QQ和百度浏览器(A)一样的漏洞。
从情报机构发布的报告发现,供应商可以更新软件并且具备将“恶意软件”推送至“受害者”设备的能力。这与我们在7.9.3.103版本中发现的中间人攻击漏洞一致。软件升级此前只被推测是国家网络间谍组织用于注入恶意软件。
除了中文版本外,百度和UC浏览器也有国际版本提供。我们发现,这些版本也具有上述文章相似的漏洞。
我们已经通知三家公司其各自浏览器中存在的问题,并承诺延缓公布我们的研究结果45天。我们也将继续按照首次披露的顺序对该三家公司进行进一步研究,旨在进一步谈论我们的关注点以及他们提出的修复方案。目前根据我们得到的通知,这三个公司都已经发布了他们的浏览器更新版本,而根据我们的分析表明这些新版本也解决了一些问题,但不是我们所识别的全部安全问题。
在竞争激烈的高科技市场,每家公司都力争推陈出新,不断发布新产品推出新功能,加之缺乏外部审计,这种种诱因都使得产品自身的隐私和安全问题被忽视。
同时,这种强大的市场压力也促使这些企业不断的加强对用户数据的收集,而且这种压力并不是针对某一家web浏览器而是所有中国本土企业。所以面对不断增长的应用市场和日益严峻的隐私和安全现状,安全研究人员和开发企业都必须高度重视应用程序的安全性,在保护用户的隐私和安全的前提下提供更优质的服务。
* 原文链接: usenix 、米雪儿编译,转载请注明来自FreeBuf(FreeBuf.COM)