[新聞] Magisk開發者曝安卓系統重大漏洞:可致

作者: oppoR20 (R20)   2018-11-23 15:09:14
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過,其他品牌要快點更新啊。
作者: Jokering5566 (揪客56)   2018-11-23 15:16:00
台灣神人

Links booklink

Contact Us: admin [ a t ] ucptt.com