LG 也打算玩折叠手机?LG 申请 Flex、Foldi、Duplex 商标
IT 之家 11 月 23 日新闻 稍早之前,Magisk 的开发者 topjohnwu 宣布推出了新版的 Magisk 工具,绕过一些安卓的 SafetyNet Attestation API,让手机在获取 Root 的情形下也能玩具有该 API 的手游(如《FGO》)。
然则在这之后他发现,这一解决方案对自己的一加 6 手机无效。之后,他在一则 Medium 帖子中示意发现了一个平安破绽,《Fate/Grand Order》(通常称《FGO》)似乎在滥用这一破绽,用来监测他一加手机上的 Root 接见权。
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(或是否 Root)。
注:安卓 9 Pie 中的一个平安性改动会阻止应用程序在自己的 “SELinux 上下文(context,可大致理解为 “环境”)” 之外读取信息,由于每个应用程序现在都是单独隔离的。SELinux 是一个内核模块,充当种种 “守卫”,阻止应用程序和服务接见它们不应该接见的文件。SELinux 上下文犹如一个文件的标签,其中包罗用户和角色等信息。若是没有为 procfs 启用 “hidepid = 2” 标志,则处于相同 SELinux 上下文的应用程序可以读取统一上下文中有关其他应用程序的信息。在运行安卓 9 Pie 的装备上,只有针对安卓 9 Pie 构建的应用才会将这一新的 SELinux 更改应用在它们身上。只要安装时没有通过 “hidepid = 2” 挂载 procfs,针对 Android 8.1 Oreo 或更低版本的应用程序将仍使用旧的 SELinux 规则,也就可以接见相同 SELinux 上下文中的历程信息。应 Google Play 的新要求,你的装备上运行多数应用程序目的 API 应对应安卓 8.0“奥利奥”,然则,许多应用程序尚未针对安卓 Pie 举行更新。
procfs 破绽演示:
▲左为通过 “hidepid = 2” 挂载了 procfs 的 Google Pixel 3 XL,右为未通过 “hidepid = 2” 挂载 procfs 的华为 Mate 20 X
▲在 Google Pixel 3 XL 上,“Material Terminal” 应用程序只能看到自己的历程;在华为 Mate 20 X 上,“Material Terminal” 应用程序可以看到其他历程。
我的装备是否受影响?
以下是 XDA 发现的未使用 “hidepid = 2” 挂载 procfs 的装备(项目从左至右对应为:OEM 厂商、装备、安卓版本、是否存在 procfs 泄密)。
结果有多糟糕?
若是与 FuséeGelée、Blueborne、KRACK、Meltdown(熔断)Spectre(幽灵)等破绽举行对照,这个 bug 就相形见绌了。应用无法通过这一破绽获取 root 权限,或窃取你的密码。你的银行账户、信用卡都是平安的。最坏的情形是,应用程序可以判断你的装备上是否有另一个应用程序正在运行,因此用途异常有限。请记着,这是许多 GNU / Linux 发行版的规范行为,另外,Google 最近才最先通过安卓 7.x 系统阻止 procfs 接见。这一 bug 能让应用程序绕过所需的某些权限来监视其他历程,但无法损坏安卓系统的沙箱并从其他应用程序中窃取数据。可无论若何,这是非预期的行为,且已经打破了安卓的隐私功效,因此 bug 必须获得修复。
若何检测装备是否受影响
若要检查装备是否会向其他应用程序泄露历程信息(即 procfs 未使用 “hidepid = 2” 挂载),你可以使用 shell 下令(参考上文对比图),也可以使用 topjohnwu 开发的应用程序(点此从 GitHub 获取)举行检查。若是你的手机已经获取 Root 权限,topjohnwu 的应用还能让你使用 “hidepid = 2” 重新挂载 procfs。
会有修复吗?
是的,这一定会获得修复。谷歌现在会要求所有装备使用 “hidepid = 2” 挂载 procfs。谷歌将通过更新兼容性测试套件(CTS)来强制执行。这里的 CTS 是一组测试,所有装备必须通过测试,才气使用 Google Play 应用和服务。想要销售预装了 Google Play 商铺的所有 OEM,最后都必须推出更新,以便在不久的未来使用 “hidepid = 2” 重新挂载 procfs。这一问题最先在一加装备上发现,一加方面已经知悉此问题并正在举行修复。若是其他 OEM 对此错误揭晓谈论,我们迁就在此文举行更新。然则,你大可不必嫌疑所使用的装备的 OEM 是否会公布更新,若是他们希望更新通过 CTS 测试,就必须修复此 bug。
XDA 原文地址:点此前往(英文)
购买了 Pixel 3 或者 Pixel 3 XL? 在百思买购买 Pixel Stand 只需 40 美元(50%折扣)
原创文章,作者:菜鸡,如若转载,请注明出处:https://www.20on.com/22733.html