作者oppoR20 (R20)
看板MobileComm
標題[新聞] Magisk開發者曝安卓系統重大漏洞:可致
時間Fri Nov 23 15:09:14 2018
Magisk開發者曝安卓系統重大漏洞:可致手機進程被監視
https://www.ithome.com/0/396/548.htm
—
IT之家11月23日消息 稍早之前,Magisk的開發者topjohnwu宣佈推出了新版的Magisk工具
,繞過一些安卓的SafetyNet Attestation API,讓手機在獲取Root的情況下也能玩具有該A
PI的手游(如《FGO》)。
但是在這之後他發現,這一解決方案對自己的一加6手機無效。之後,他在一則Medium帖子
中表示發現了一個安全漏洞,
《Fate/Grand Order》(通常稱《FGO》)似乎在濫用這一漏
洞,用來監測他一加手機上的Root訪問權。
https://i.imgur.com/ZvUWorm.jpg
XDA發佈了一篇文章,根據他的發現梳理了這一漏洞的信息。以下為該文主要內容翻譯。
Procfs和安卓
在基於Unix的操作系統上,有一個名為「procfs」的特殊文件系統,其中包含有關進程(可
以聯想應用程序)的信息,例如內存使用情況(可以聯想RAM)、狀態(進程是否正在運行
,休眠等)。在大多數基於Unix的操作系統上,用戶和應用程序可以輕鬆訪問procfs,來查
看系統上正在運行的應用程序和服務類型(參考Windows的任務管理器)。然而從安卓7.0「
牛軋糖」系統開始,Google鎖定了對procfs的訪問權限。在Android Nougat(安卓7.x)系
統之前,像SystemPanel這樣的應用程序能夠收集有關正在運行的應用程序的數據,而無需
任何特殊權限。安卓7.x系統之後,應用程序需要通過UsageStats或AccessibilityService
等API才可以做到這一點,這兩個API都由必須通過用戶授予的權限來把關。
Google通過使用「hidepid = 2」標誌掛載/proc,來阻止應用程序通過procfs讀取其他應用
程序的狀態。通過這一手段,應用程序只能看到自己進程的狀態。因此,應用程序需要通過
可被接受的API(如UsageStats或AccessibilityService)來獲取當前設備上正在運行的應
用程序和服務的信息。
漏洞
如果procfs沒有用「hidepid = 2」掛載怎麼辦?那麼,應用程序可以自由地讀取系統上運
行的其他應用程序(和掛載點)的狀態,而無需任何額外的權限(注)。Google在自家的設
備上通過「hidepid = 2」掛載了的procfs,但並未強制其他OEM對設備強制執行此要求。來
自LG、一加、華為/榮耀、小米等公司的幾款設備尚未通過「hidepid = 2」掛載procfs。由
此,《Fate/Grand Order》等應用程序就能利用它來檢測設備上是否存在Magisk(或是否Ro
ot)。
注:安卓9 Pie中的一個安全性改動會阻止應用程序在自己的「SELinux上下文(context,
可大致理解為「環境」)」之外讀取信息,因為每個應用程序現在都是單獨隔離的。SELinu
x是一個內核模塊,充當各種「守衛」,阻止應用程序和服務訪問它們不應該訪問的文件。S
ELinux上下文如同一個文件的標籤,其中包含用戶和角色等信息。如果沒有為procfs啓用「
hidepid = 2」標誌,則處於相同SELinux上下文的應用程序可以讀取同一上下文中有關其他
應用程序的信息。
在運行安卓9 Pie的設備上,只有針對安卓9 Pie構建的應用才會將這一新
的SELinux更改應用在它們身上。只要安裝時沒有通過「hidepid = 2」掛載procfs,針對An
droid 8.1 Oreo或更低版本的應用程序將仍使用舊的SELinux規則,也就可以訪問相同SELin
ux上下文中的進程信息。應Google Play的新要求,你的設備上運行多數應用程序目標API應
對應安卓8.0「奧利奧」,
但是,很多應用程序尚未針對安卓Pie進行更新。
procfs漏洞演示:
https://i.imgur.com/q66NPsJ.jpg
▲左為通過「hidepid = 2」掛載了procfs的Google Pixel 3 XL,右為未通過「hidepid =
2」掛載procfs的華為Mate 20 X
https://i.imgur.com/nvbhpRk.jpg
▲在Google Pixel 3 XL上,「Material Terminal」應用程序只能看到自己的進程;在華為
Mate 20 X上,「Material Terminal」應用程序可以看到其他進程。
我的設備是否受影響?
以下是XDA發現的未使用「hidepid = 2」掛載procfs的設備(項目從左至右對應為:OEM廠
商、設備、安卓版本、是否存在procfs洩密)。
https://i.imgur.com/O2CB7FN.jpg
後果有多糟糕?
如果我們將這個系統漏洞與FuséeGelée、Blueborne、KRACK、Meltdown(熔斷)Spectre
(幽靈)等漏洞進行比較,這個bug就相形見絀了。
應用無法通過這一漏洞獲取root權限,
或竊取你的密碼。你的銀行賬戶、信用卡都是安全的。最壞的情況是,應用程序可以判斷你
的設備上是否有另一個應用程序正在運行,因此用途非常有限。請記住,這是許多GNU / Li
nux發行版的規範行為,另外,Google最近才開始通過安卓7.x系統阻止procfs訪問。這一bu
g能讓應用程序繞過所需的某些權限來監視其他進程,但無法破壞安卓系統的沙箱並從其他
應用程序中竊取數據。可無論如何,這是非預期的行為,且已經打破了安卓的隱私功能,因
此bug必須得到修復。
如何檢測設備是否受影響
若要檢查設備是否會向其他應用程序洩漏進程信息(即procfs未使用「hidepid = 2」掛載
),你可以使用shell命令(參考上文對比圖),也可以使用topjohnwu開發的應用程序(點
此從GitHub獲取)進行檢查。如果你的手機已經獲取Root權限,topjohnwu的應用還能讓你
使用「hidepid = 2」重新掛載procfs。
https://i.imgur.com/jHlgKpO.jpg
會有修復嗎?
是的,這一定會得到修復。谷歌現在會要求所有設備使用「hidepid = 2」掛載procfs。谷
歌將通過更新兼容性測試套件(CTS)來強制執行。這裡的CTS是一組測試,所有設備必須通
過測試,才能使用Google Play應用和服務。想要銷售預裝了Google Play商店的所有OEM,
最後都必須推出更新,以便在不久的將來使用「hidepid = 2」重新掛載procfs。這一問題
最先在一加設備上發現,一加方面已經知悉此問題並正在進行修復。如果其他OEM對此錯誤
發表評論,我們將就在此文進行更新。但是,你大可不必懷疑所使用的設備的OEM是否會發
佈更新,如果他們希望更新通過CTS測試,就必須修復此bug。
—
是的,相比之前Android爆出的漏洞來看,這個漏洞已經算很弱(?)了,只能透過規定以
外的方法來看其他程式的程序。
來自台北的topjohnwu大大又發現了一個漏洞,果然是台灣之光!
或許這個就是之前有些app偵測是否有root或是magisk的方法,這次google作法還蠻屌的,
如果不更新CTS就有可能不會過,這樣就代表很多手機都要更新了,看來有望看到ov升級手
機了(?
名單上看來就google、三星、HMD、moto、sony的系統有patch過,其他品牌要快點更新啊。
--
https://i.imgur.com/7ChJmWc.gif
INNOVATION!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.171.208
※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1542956957.A.BA0.html
推 hoohjoe : 嗯嗯跟我想的差不多 11/23 15:11
推 Jokering5566: 台灣神人 11/23 15:16
推 mainline : 這篇基本上是XDA首頁文章的翻譯版 難得沒有我能吐 11/23 15:20
→ mainline : 槽的地方 11/23 15:20
→ Aerogel : 這不是大家都預期的事 11/23 15:22
推 chocopie : 簽名檔我看一次笑一次XD 11/23 15:22
推 sdtt : 嗯,跟我想的一樣 11/23 15:23
推 HMKRL : FGO:......又少了一個檢查方法 11/23 15:23
推 silverair : FGO777777777777777 11/23 15:23
→ mainline : 補充一下最新進度是 當初谷歌改動的是高通msm bra 11/23 15:23
→ mainline : nch 似乎漏掉拉到常規common branch的動作 所以才 11/23 15:23
→ mainline : 出現這些二三事 11/23 15:23
→ tomsawyer : 標題令我吐血Orz 11/23 15:24
推 Lumia625 : FGO:幹 11/23 15:24
推 fox1103 : FGO的技術力www 11/23 15:29
→ mainline : 這標題除了“重大”二字可爭論外 沒什麼問題啊 昨 11/23 15:30
→ mainline : 夜那篇標題問題比較大 11/23 15:30
→ henrysu1625 : 跟我想的差不多 11/23 15:32
→ oppoR20 : 對topjohnwu來說 確實是重大(?) 11/23 15:33
推 Bencrie : wtf 那這樣全部能存取 /proc 的 OS 都超危險 der 11/23 15:33
推 gawulu : 日系手遊很討厭,喜歡偵測root,這明明算個人隱私 11/23 15:33
→ mainline : 原Po感想有點錯誤 並非不立馬更新CTS就不會過 而是 11/23 15:35
→ mainline : CTS檢測工具已更新抓此問題 廠商在要提供下回更新 11/23 15:35
→ mainline : 時若不修好這問題 會通不過CTS測試導致谷歌不會接 11/23 15:35
→ mainline : 受該新韌體 11/23 15:35
→ mainline : 要修這問題忒簡單 在某文件填加 “hidepid = 2” 11/23 15:36
→ mainline : 搞定 11/23 15:36
推 seanflower : 原來是這樣 想說怎麼怪怪的 怪怪的 11/23 15:38
推 ge53175317 : FGO: 11/23 15:41
推 hyghmax1202 : 中國品牌和中國人創立的品牌都中鏢XDD 11/23 15:44
推 cygnusx123 : 我早就覺得是這樣了,果然沒錯! 11/23 15:51
推 ctes940008 : 在美國念書了?台大資工之光 11/23 15:51
推 andy90498 : fgo484那個糞game啊 11/23 16:23
→ alvistan : 樓上對啊 11/23 16:31
噓 cxz123 : 看沒有,能不能再白話一點翻譯?@@ 11/23 16:37
→ manbow77 : U11沒事U12+卻中標 負責團隊不一樣? 11/23 16:41
→ maplefff : 安卓不意外 11/23 16:58
→ orz811017 : 台灣之光 11/23 17:07
推 doom3 : 可以看出來些廠是互抄code XD 11/23 17:19
推 Bob9154 : 仙子大概連內文都沒看吧 這不只安卓會有 11/23 17:24
→ suifong : 為什麼S9+獵戶座版的是YES 11/23 17:37
→ Kayusumi : 每個字都看的懂,組合起來每個字都看不懂 11/23 17:42
→ GothicKuma : 沒人理辣椒神獸,幫QQ 11/23 17:53
→ sam613 : 其實好像也不能自己remount /proc 11/23 17:57
推 cities516 : FGO不改善安卓版跑狗問題 把技術用在這地方= = 11/23 18:51
推 whhw : fgo: 11/23 19:27
推 WindSucker : yo叔又調皮了 11/23 19:36
推 sooler : 嗯嗯我剛好也發現了 11/23 20:09
推 A4P8T6X9 : 可以看 proc 算啥重大 bug XD 11/23 21:04
推 az25256058 : 樓下幫轉西恰版 11/23 21:10
推 goldie : 這不是 Linux procfs 預期的預設行為嗎? 11/23 23:37
→ goldie : 只是 Android 延用到現在終於控管要改更嚴格了! 11/23 23:37
→ goldie : 既不是 bug ,更無法稱的上“系統重大漏洞”XD 11/23 23:40
推 Geiwoyujie : FGO是佛心優質休閒的好手遊啊 蠻推薦玩的 不需要花 11/24 01:12
推 Arbin : 這bug只能說打臉Android的安全系統八 11/24 09:12
→ Arbin : 畢竟Android 7.0以後就開始做禁止 可是這樣就是繞 11/24 09:12
→ Arbin : 過去了 11/24 09:12