百度浏览器的隐私安全问题分析
|
在应用程序启动时,我们观察到百度浏览器向https://hmma.baidu.com/app.gif 发送的HTTP POST 请求。这个HTTP请求的正文是一个压缩的JSON文件。该文件包含了电话和用户的多种细节,有的是纯文本,有的是加密的。 JSON文件中未加密的字段有: o:用户操作系统(比如,安卓) n:百度浏览器版本 w, h:屏幕像素 Gl:GPS位置和最近更新时间 有的字段是用硬编码ASCII编码键的AES+ECB进行加密的 h9YLQoINGWyOBYYk 然后再用Base64编码。这些字段有: Dd:IMEI编号 Ii:包含手机IMEI编号倒序的字串符和安卓软件版本信息的MD5哈希值 Wl2:范围内所有无线网络列表以及它们的MAC地址和信号强度。 根据硬编码键知识,这些字段很容易被破解。用于解密这些字段的python脚本源代码在这。 B.键入地址栏时泄露敏感数据和地址栏内容 和其他浏览器一样,用户可以在百度浏览器地址栏中输入文本来访问一个给定的URL或是执行搜索。以这种方法在地址栏中输入文本时,该文本是不进行加密的,只是作为一个有多个GET参数的HTTP请求访问下面的URL:http://uil.cbs.baidu.com/sug/rich 比如说,在地址栏中键入这样的文本“some address bar contents”:http://uil.cbs.baidu.com/sug/rich?wd=some+address+bar+contents&ua=I4Ly8_OLL8_lPvC0tpwbqkrywN0sCFzKkhF6q9pvANIr5wj0_hHQNgCcvCgnhvId_OXNiyJuvNvrCUdsB&cuid=ga2Pfgal2u0ca28Yg8vkugu0-uYBiSiAlP2Nf_8ZS88Pa28g_a2q8_aq28_qa28qA&cfrom=1200a&from=1200a&crp=0&it=0&ctv=2&st=00000000&nw=3g&cen=ua_cuid 这些GET参数包括: Wd:地址栏内容 Ua:屏幕分辨率、手机型号、安卓版本和百度版本 Cuid:安卓版本信息的md5哈希值和手机IMEI号倒序的字符串 Wd参数值的发送没有加密;ua和cuid参数值的加密很不规范,使用的是很容易被破解的算法,如下所述。UTF8编码的每个32字节都被解释为一个小端字节序列整数,然后循环移位字节到右三位,以及使用硬编码0x2D382324的XOR。最后,生成的32位字段会和下面的自定义64个字符字母进行base64编码: qogjOuCRNkfil5p4SQ3LAmxGKZTdesvB6z_YPahMI9t80rJyHW1DEwFbc7nUVX2- 典型的base64字母表是这样的: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 利用这些算法和自定义字母表,就可以很容易地破解这些字段,解密这些字段的python脚本的源代码在这里。这种算法由百度浏览器的本机代码在libchiperencoder_v1_3_1_browser中执行(chiper可能是拼写错误,实为cipher)。 C.手机包含了每个页面视图中的敏感数据 在浏览器浏览了某个页面后,会有一个GET请求被发送到这个URL:http://t5.baidu.com/kw 这个 HTTP Referer 标题包含了访问过网页的完整URL,并且没有加密。即便是通过HTTPS进行了常规加密,报告发现其实并没有加密。其 etag GET 参数值是使用有ASCII编码的五位字节密钥的RC4进行加密的:HR2ER 进行加密时,标签包含了许多其他的参数,比如说cuid(含有手机IMEI的倒序值)和许多时间信息(加载网页所需时间和步骤,包括DNS查找、创建链接和加载DOM)。 D.软件更新的不安全检查 当应用想要检查更新时,就会发送一个HTTP请求给这个URL: http://uil.cbs.baidu.com/update 这项请求含有多项GEL参数,包括上一节提到的被加密的ua和cuid参数。服务器以一种未加密,但是被zlib压缩的自定义二进制格式进行响应。如果有可用的更新,服务器会在响应中包含对更新的描述以及一个APK的URL。百度浏览器会显示这个描述,并询问用户是否需要进行升级。如果用户确认升级,APK文件会进行下载并自动打开,通过典型的安卓用户安装或升级应用的界面进行提示。(如图三) 百度没有用任何的数字签名验证APK文件,所以中间攻击者就可以通过发送特别编写的响应来实施有效攻击。中间攻击者可以发送任意URL给任意的APK文件,然后这个文件和相关描述还是会被呈现给用户。如果APK文件拥有的数字签名和当前安装的应用不符,那么安卓系统不会允许这种文件来升级应用。所以不能用这种技术来用任意的APK文件替换百度浏览器。但是仍旧可以用一个不同的恶意APK文件(使用百度浏览器的名称和标识)欺骗用户安装一个新的应用程序(如图三所示)。
微软版本 我们分析了 7.6.100.2089 版本的微软版百度浏览器,这是从 http://liulanqi.baidu.com/ 下载的。这种版本也还是有一些隐私安全漏洞。表2 总结了通过该应用收集加密或易加密传送的个人数据。
关于微软版本的收集传输个人数据功能,我们发现了以下几个安全缺陷: A.输入地址栏时泄露地址栏内容 和安卓版本类似,当用户在地址栏输入文本来搜索时,该文本会以HTTP GET请求的形式不加密地发送给这个URL:http://uil.cbs.baidu.com/sug/rich ,地址栏内容会存储在wd参数值中。 B.以一种易破解的协定和百度服务器通信 我们还观察到,在应用程序启动和浏览时,百度浏览器会向 *.br.baidu.comdomain的各子域发送多个HTTP POST请求。这些POST请求的主体始终坚持以这种特定的形式:标题加上加密的有效负载。标题是没加密的两个字符串。第一个是浏览器的GUID,这是这些参数的哈希值: 1、硬盘序列号 2、硬盘型号 3、硬盘控制器版本 4、网络MAC地址 5、BDM字符串 再加上#字符,比如md5(“VBf952409b-973833b1#VBOXHARDDISK#1.0#080027f2c8cf#BDM”). 第二个字符串是浏览器的SupplyID,是HKEY_LOCAL_MACHINESOFTWAREBaiduBaiduBrowserSupplyID的检索值。这可能是与浏览器版本相关的注册表。 加密的有效负载,在解密时包含使用谷歌协议缓冲区(也称为protobuf)的序列化数据。这种数据是用一种改编的TEA密码进行加密的,我们称为MTEA。百度用MTEA使用的密码模式块是CBC的一种非标准修改,叫做MCBC。(见图四)
为了加密解密所有的protobuf信息,百度浏览器使用含有下列硬编码ASCII密钥的MTEA+MCBC:vb%,J^d@2B1l’Abn。使用的都是零字节初始化向量。用于解密这些请求的python脚本源代码在这里。 C.手机里含有每个浏览界面信息,包括硬件序列号 我们解密了浏览器发出的protobuf请求,发现这样的请求(我们称作Page Report请求)会发送用户浏览的每个界面,包括HTTP和HTTPS界面,还有界面和用户的下列信息: 1、界面的完整URL 2、界面的HTTP状态代码 3、界面的HTML标题 4、浏览器存储网络跟踪器的域名(名叫BAIDUID)以及跟踪器的内容(百度使用这个名称的网络跟踪器) 5、机器的CPU型号 6、机器的硬盘序列号 7、文件系统序列号 8、机器的网络MAC地址 9、浏览器的GUID D.对软件更新的不安全审查 当浏览器要查找更新时,会发出一个protobuf请求,我们称之为 Update Info 请求,这是为了获得百度浏览器的最新版本。加密的响应会包含最新发布的版本号、升级的描述、升级到最新版本的URL和文件的md5哈希值。这个可执行文件没有受到任何数字签名的保护,只在加密的请求中有md5哈希值。通过加密并发送protobuf响应,任何的中间攻击者都可以向任何的可执行文件和其md5哈希值中发送URL,这样会导致浏览器下载执行任意代码。
E.更新域列表中的网站会触发代理 浏览器启动时,它会发送一个我们称之为代理信息请求的protobuf请求。在解密该请求时,包括了不同资源的版本号码,这些资源和百度自动代理的境外网站有关,这在本文的第二部分有具体的解释。如果服务器确定这些资源中有需要更新的部分,protobuf响应中会包含资源的最新版本或是最新版本的链接,一起的还有新版本的MD5哈希值和用于解密的密钥。 第二部分:国外网站代理 中国的网络用户面对的是世界上最严格的互联网审查制度之一。在中国最有名的审查制度可能是”长城防火墙“,这是一种网页过滤的综合体系,阻止中国境内对禁止访问内容的访问。因为这种系统限制中国网络用户对境外网页内容的访问,很多用户都在寻求方法来规避这种审查。其中一种方法就是使用国际代理,它会掩盖和重定位网络流向来逃避检查。 除了中国审查制度规定对于信息的访问限制,长城防火墙还会在跨境传输时表现出明显的低效和慢速。代理服务器可以绕开这些网络瓶颈来提高性能。 我们对于百度浏览器Windows版的分析表明,该软件有一个功能,可以自动将请求代理到境外某些网站。百度在其网站中宣传了这种服务,并描述了潜在的性能改进。(见下图)
除了可以提高性能,我们还发现这种代理可以允许访问一些被禁止的网站,比如www.wordpress.com。 kv_auth 资源 (编辑:PHP编程网 - 襄阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


