如何評價 MIUI 的 AnalyticsCore 後門?
相關新聞
荷蘭的一位小米4用戶發現手機預裝了一個叫 AnalyticsCore.apk(com.miui.analytics)的應用,會自動在後台運行,他不喜歡未經許可收集用戶信息的應用,因此對它進行了逆向工程。他發現該應用每24小時會訪問小米官方伺服器檢查更新,在發送請求時它會同時發送設備的識別信息,包括手機的IMEI、型號、MAC地址、Nonce、包名字和簽名。如果伺服器上有名叫Analytics.apk的更新應用,它會自動下載和安裝,整個過程無需用戶干預。應用安裝時沒有任何驗證,也就是說該漏洞能被黑客利用,或者小米只需要將想要安裝的應用重命名為Analytics.apk就可以將其推送給用戶。不出乎任何人意料的是,設備是通過HTTP發送請求和接收更新,這意味著用戶很容易遭到中間人攻擊。http://www.solidot.org/story?sid=49701
看到 @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
其他廠商的就不一一找出來列舉了。
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進行連接,有點說不過去。小米被花式黑的問題讓我漲了好多姿勢。
關注小米很漲姿勢,各種問題都會被問到,比得上大學重修一個專業
他發現該應用每24小時會訪問小米官方伺服器檢查更新,在發送請求時它會同時發送設備的識別信息,包括手機的IMEI、型號、MAC地址、Nonce、包名字和簽名。
現在的聯網服務不是都會發送這些么?包括但不限於廣告,統計,計費,push等等的第三方sdk,
其實不僅僅是這些,還有地理位置也會被sdk收集發送,早就見怪不怪了,有機會寫一個常見sdk各種所需許可權的吐槽你們就知道多可怕了
所以說你們就是喜歡搞個大新聞。
Android靜默安裝Apk需要包名一致,簽名一致,才能覆蓋原來的App完成更新。況且傳輸過來的Apk在調用介面靜默安裝前肯定還有校驗的步驟,要確保Apk是由小米下發的才會安裝呀。從原理上講,他應該實地重現一下這個中間人攻擊以證明這個漏洞確實有效。畢竟僅僅從描述上看很難搞清楚新聞稿是否刻意漏掉了什麼東西。
當然,如果確實漏洞有效的話,建議報告給烏雲,或者同類的白帽子機構,由他們跟小米去交互去。所以小米已經在荷蘭開賣了?
拋開http不談,除非能拿到小米的簽名,不然這個漏洞貌似無效,如果有簽名....
聯繫小米改https
關於更新apk那個,這叫feature不叫漏洞。各大廠安卓客戶端基本都用這種插件化更新方法。360還開源了一套。
這些信息不應該上傳,但是根據以前我在小米工作的經驗來看他們不會直接上傳imei和mac等信息,因為工信部有要求不能收集類似能精準定位到某個特定用戶的信息imei和mac就是其中,當然,他們還是有自己的打點統計方法的。如果這個 apk這樣做了確實是不好的。還有這些信息的傳輸不應該直接使用http請求,在未經過加密處理的情況下,如果這樣做了,這樣做的開發同學要回去補補課啊,對用戶的隱私信息不上心,遲早會出事的。 至於被攻擊,風險存在在那裡,必然是個問題,有問題就是個安全隱患,只不過這個隱患在我看來不是特別大,可能我的水平有限,目前我也沒找到合理利用這個漏洞的方法,在沒拿到小米的官方數字簽名私鑰的情況下。 雖然安全問題不是特別大,但是隱私相關信息不重視是要吃虧的,起碼別人寫出來的有理有據,沒有瞎黑你,是自己做得不好,公關上又要浪費一堆資源去洗地,虧。 至於這個東西的危害,能不能被人利用,不好說,但可以確定的是,能通過這個「漏洞」就攻擊了你的手機的牛逼黑客,也不會care我們這種小屁民了,更重要的是,如果能做到,他已經不用通過這樣去賺錢了(滑稽)
這個更新都會有校驗,哪那麼容易就中間人攻擊了。如果有實際的簡易的攻擊方法再討論。(高級黑客就不考慮了,美國國防部都攔不住的,小米也攔不住,0day這類只要及時修復也不算)
關鍵在中間人!這個很恐怖的
推薦閱讀:
※如何評價小米公司沒有開除秦濤?
※微博上的「秋葉隨風ivan」是誰?有哪些詳細的故事?
※華為手機和小米手機的品控哪個比較好?
※小米電飯煲為什麼沒有火起來?
※小米2S用四年依舊流暢, 而華為的只敢吹18個月, 是否小米在技術上比華為強太多?