专栏名称: 雷峰网
中国智能硬件第一媒体
目录
相关文章推荐
新浪科技  ·  【#特斯拉Rivian就技术盗窃案达成和解# ... ·  2 天前  
新浪科技  ·  【#雷军周鸿祎乌镇峰会10年全勤生# ... ·  4 天前  
ZOL中关村在线  ·  手机电池到底怎样充电才能用得更久? ·  5 天前  
51好读  ›  专栏  ›  雷峰网

小米手机藏后门可远程安装任意APP?真相如此惊悚吗?

雷峰网  · 公众号  · 科技媒体 硬件  · 2016-09-21 18:48

正文


王小二跟邻居张大牛买了一只鹅。


张家出品的鹅号称一条龙服务,如果鹅生病一定会负责到底,要么治好,要么换鹅。不过,最近王小二发现,张大牛总在王小二不注意或者夜半无人私语时来王家院子偷偷捡鹅粪。


王小二纳闷了,张家到底在干吗?是不是看上了我家翠花?他怒了,在集市上质问张大牛,张大牛百口莫辩,只说捡鹅粪是为了看看鹅有没有生病。


王小二将信将疑,他很生气,那意思是以后时不时还有别家有别的借口来我家遛遛顺点啥?


这个乡村爱情故事可能和今天要说的事情有点关系。


你可能已经习惯了这个场景——新手机会预装一些APP,怎么删都删不掉。但是,手机制造商将这些APP和服务安装在你手机上是否会有特别的目的?这些预装的应用又是否会威胁到机主的安全和隐私?  


荷兰的一位小伙对此就颇有疑问。

他是小米4的用户。小伙有一天发现,手机预装了一个叫 AnalyticsCore.apk(com.miui.analytics)的应用,会自动在后台运行。


小伙很生气,他不喜欢未经许可收集用户信息的应用,因此对它进行了逆向工程,发现该应用每24小时会访问小米官方服务器检查更新,在发送请求时它会同时发送设备的识别信息,包括手机的IMEI、型号、MAC地址、Nonce、包名字和签名。如果服务器上有名叫Analytics.apk的更新应用,它会自动下载和安装,整个过程无需用户干预。


如果应用安装时没有任何验证,该漏洞能被黑客利用,或者小米只需要将想要安装的应用重命名为Analytics.apk就可以将其推送给用户,而且该设备是通过HTTP发送请求和接收更新,这意味着用户很容易遭到中间人攻击。

看样子,一个大新闻要搞出来了!



对此,小米的发言人表示,


AnalyticsCore是内建在MIUI系统中的组件,主要用来分析数据以增强用户体验,比如说MIUI Error Analytics——小米的系统错误分析功能。


为了安全起见,MIUI会在软件的安装和升级期间检查Analytics.apk应用签名,以确保载入的是拥有正确签名的官方安卓软件包。没有官方签名的安卓安装包会被拒绝安装,我们的软件的自动升级功能都是为了更好的用户体验。


在今年四月到五月期间发布的最新版本MIUI v7.3中,HTTPS协议能够有效地保障数据传输安全,避免中间人攻击。

究竟是怎么回事?我们再来挖一下。


 ● 


1.BUG在哪里?


HTTPS,是以安全为目标的HTTP通道,简单而言,是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。


小米的老版本用的是HTTP协议,确实埋了一个漏洞。某知名安全公司资深安全专家告诉雷锋网(搜索“雷锋网”公众号关注)宅客频道(微信公众号 ID:letshome),这是小米的一个预装应用的升级机制没有做好安全措施,24小时升级一次,期间可以被中间人劫持替换。


新版用了HTTPS协议后,就意味着“可能被劫持”这个问题被解决了吗?


该专家表示,官方虽然说用了HTTPS升级就无法被中间人劫持了,但新版他也不确定,老版是HTTP,24小时升级1次,场景对一般小黑客而言,要攻击还是比较有限制,不过技术好点的黑客可以用NTP欺骗手机时间的方式攻击,提高升级概率来劫持。


一旦发生劫持,恶意软件就拿了一把钥匙可以随意打开你家的门,在手机上安家落户。


还有一个BUG是,上传设备隐私信息是明文。


 ● 


2.小米真的在窃取用户隐私吗?


这个问题在知乎也引起了讨论,知乎用户 Android Framework认为:


小米不能背锅。


所谓的漏洞,其实是小米开发的一个功能,会有签名检查一类的机制来尽量保障大家的设备不被利用;所谓的信息收集,我觉得其实是对小米的不信任,同样的事情 Google 在做,Apple 也在做。


以下是他的详扒过程:(知乎用户 Android Framework 如何评价 MIUI 的 AnalyticsCore 后门?)


看到 @vczh 轮子哥关注了这个问题,正好有相关背景,回答一记。

利益相关: 米黑(小米1,小米4用户)。


先说结论:这个锅不能让小米背。


很多 Android 用户很诟病的一点是国内 Android 手机都没有 GMS 服务,并且称其为“安卓”或者说是阉割版的 Android。


有人说谷歌移动服务(简称GMS,包括gtalk,gmail等)是Android的精髓,没有GMS就不算真正的Android,这个说法不太对,连谷歌自己都不是这么认为的。谷歌开源的Android代码不包含任何GMS应用;在谷歌内部,Android和GMS是两个独立的团队,GMS经常先推出iPhone版然后才发布Android版的。


现在 Google 已经越来越收紧对 Android 的控制权限,AOSP 中 CPS(联系人,电话,短信)应用已经万年不更新,倒是这些模块的 GMS 版本都更新的很勤快,这不,最近连骚扰拦截这种 MIUI 几乎从最初版本就有的“高大上”的功能也上线了。打个岔,听说最近的 iOS 10 也有这个功能了。


http://www.androidpolice.com/2016/07/25/googles-phone-app-now-shows-a-warning-about-spam-callers-and-makes-it-easy-to-block-and-report-them-apk-download/。

但是,有点实力的 OEM 其实都不太关心这个了,因为大家要做差异化,要做用户体验,这些模块当然自己开发了。比如 CPS 好像是 MIUI 的重点,大家可以自行搜索 11 年的旧闻 “雷军揭秘小米:用CPS重新发明手机”。


回到正题,

请问非小米的 Android 用户,你们的手机中在 /system/app 中有没有一个 PlayAutoInstallConfig.apk 的应用呢。(各位国产机和国行用户就别找了,你们是肯定不会有的。因为,你们连 Google 服务都没有啊!)

Nexus 用户:

android.autoinstalls.config.google.nexus

android.autoinstalls.config.google.fugu

ASUS 用户:

android.autoinstalls.config.asus.pai

HTC 用户:

android.autoinstalls.config.htc.htc_pmeuhl-1

其他厂商的就不一一找出来列举了。


AOSP中包管理的程序是:

PackageInstaller.apk pkgName=com.android.packageinstaller

而带有 GMS 包中有 Google 的一堆应用,其中包含:

GooglePackageInstaller.apk pkgName=com.google.android.packageinstaller

注意到了没有?这两个用于管理(安装,卸载等)程序的程序是 不一样 的!


Google Play 静默安装



Google 在 Android L 之后引入了一个新的功能"PlayAutoInstalls",简称 PAI。

相关功能介绍:

Android 5.0 Lollipop feature: Play Auto Installs bloatware removal

http://www.androidpolice.com/2014/10/28/android-5-0-lollipop-feature-spotlight-carriers-can-now-have-google-play-install-their-crapware-automatically-which-is-good-maybe/


官方开发者页面戳这:

https://developers.google.com/android-partner/reference/rest/v1/playAutoInstalls

简单来说,就家伙是在用户第一次开机的时候,走开机引导流程,登录 google 账户的过程中,在后台默默的给你装一些应用,一般来说会是运营商全家桶。本来嘛,这个功能就是为了 OEM 适应不同的地区,不同的运营商做的。


当然, Google 得知道你的一些信息才能给你装上对应的全家桶,

不然难道给一个联通的用户装一堆移动或者电信的全家桶?


既然它可以在第一次开机的过程中做这些事情,那你们猜猜,不是第一次开机的时候它能不能做这些呢?给你们一次机会,我相信你们是不会猜错的。


它不止可以在后台安装程序哦,还可以修改你的桌面布局

https://android.googlesource.com/platform/packages/apps/Launcher3/+/android-5.0.2_r1/src/com/android/launcher3/AutoInstallsLayout.java

   static final String ACTION_LAUNCHER_CUSTOMIZATION =

           "android.autoinstalls.config.action.PLAY_AUTO_INSTALL";



如果非要说小米收集你的信息了,那请仔细阅读一下小米手机的《用户协议》。


综上,

所谓的漏洞,其实是小米开发的一个功能,会有签名检查一类的机制来尽量保障大家的设备不被利用;所谓的信息收集,我觉得其实是对小米的不信任,同样的事情 Google 在做,Apple 也在做。


不过话说回来,小米使用HTTP进行连接,有点说不过去。 


上述专家认为,这个就看官方怎么解释这个APP的功能了,如果是手机性能测试收集或者crash分析程序的话,算是正常。他指出,别的系统也有类似功能,比如程序crash了要分析上传崩溃日志。


 ● 


3.怎么处理?


如何屏蔽这样的秘密安装呢?权宜之计是利用防火墙屏蔽掉所有通向小米相关域名的连接。


但这样会有什么后果?该安全专家提醒——只屏蔽这个APP的升级地址没问题,如果把升级地址的整个域名都屏蔽了,就会影响MIUI的其他升级。


他表示:


如果他们的最新版本和他们声明一样,可以不用担心黑客劫持升级和明文传输设备隐私信息这些事了。但是之前的屏蔽还是有效的,你继续屏蔽也升级不到他们声明的最新版本,哈哈!


4.其他APP可以套路吗?


你可能想多了。预装APP常常有最高权限,用户可能删除不掉,而且静默升级,你可能也意识不到需要提防。其他APP虽然也可以有类似的问题,但一旦发现,删除起来容易多了!


最后,如果你想围观一把荷兰兄弟的质疑帖,网址在这里:https://www.thijsbroenink.com/2016/09/xiaomis-analytics-app-reverse-engineered/


/ 文章推荐 /




独家解析:特斯拉史上最大漏洞,腾讯科恩实验室如何从千里外黑掉你的车?