影响数百万Android设备的MTK芯片漏洞

xiannv  1735天前

近日,谷歌发布了2020年3月的Android 安全公告,最新公告的漏洞之一是CVE-2020-0069,这是一个关键的安全漏洞,它影响了安装着台湾大型芯片设计公司联发科(MediaTek)所设计芯片的海量设备。

该漏洞的细节实际上从2019年4月开始就一直被公布在XDA-Developers论坛上。

联发科在发现漏洞一个月后就发布了补丁,但该漏洞仍然可以在数十款设备上被利用,并且正在被黑客广泛利用。

MediaTek-su的起源

2019年2月,XDA高级成员diplomatic为了绕过亚马逊Fire平板电脑中Android的安全模式,发现了该漏洞并在亚马逊Fire平板电脑论坛上发表了帖子。他随后意识到,这个漏洞远不止影响亚马逊的Fire平板电脑。

经过diplomatic和其他社区成员的一些测试后,证实了这种攻击针对大量联发科芯片都有效。作者指出,该漏洞在“联发科几乎所有的64位芯片上都可以利用”:MT6735, MT6737, MT6738, MT6739,MT6750, MT6753, MT6755, MT6757, MT6758, MT6761, MT6762, MT6763, MT6765, MT6771,MT6779, MT6795, MT6797, MT6799, MT8163, MT8167, MT8173, MT8176, MT8183, MT6580,和 MT6595。由于有许多联发科芯片组受到这一漏洞的影响,因此攻击被命名为“MediaTek-su”或简称为“MTK-su”。

2019年4月17日,diplomatic在“Miscellaneous Android Development”论坛上发布了第二个帖子,标题为“联发科ARMv8的惊人临时Root”。在这个帖子中他共享了一个脚本,用户可以执行这个脚本来获取超级用户访问权限并将SELinux(为进程提供访问控制的Linux内核模块)设置为高度不安全的“允许”状态。用户在自己的设备上设置Root权限和设置SELinux“允许”状态特别容易:你要做的事情就是将脚本复制到一个临时文件夹,更改脚本存储的目录,为脚本添加可执行的权限,然后执行脚本。

微信截图_20200306202956.png

到目前为止,这个漏洞影响了市场上大量的设备。联发科的芯片为数百款经济型和中档智能手机型号、廉价平板电脑和非品牌机顶盒提供“大脑”,其中大多数产品在销售时,都没有指望产品制造商及时安全更新。因此,许多仍受MediaTek-su影响的设备在漏洞披露之后都不太可能得到修复,即使该漏洞已经发布了补丁。

为什么MTK-su是一个高危的安全漏洞

在Android设备上实现Root访问的典型方法是首先解锁引导程序,这将禁用对引导分区的验证。一旦引导程序被解锁,用户可以向系统引入一个超级用户二进制文件,还可以引入一个超级用户管理应用程序来控制哪些进程可以访问root。解锁引导程序是故意禁用设备上的一个关键安全特性,通常是通过在开发人员选项汇总启用切换,然后想引导程序发出解锁命令。但是,对于MediaTek-su,用户不必解锁引导程序来获得root访问权限。相反,他们要做的就是将一个脚本复制到他们的设备并在shell中执行它。但是,并不是只有用户可以这样做。你手机上的任何应用程序都可以将MediaTek-su脚本复制到它们的私有目录中,然后执行它以获得root权限。

有了root权限,Android的安全模型基本上崩溃了。有root权限的应用也可以在后台悄悄安装它想要安装的任何其他应用程序,然后授予它们所需的任何权限来侵犯你的隐私。XDA论坛上的开发者topjohnwu表示,恶意应用程序甚至可以“使用ptrace直接向Zytoge进程(zygote是一个native进程,是Android系统上所有应用进程的父进程,我们系统上app的进程都是由这个zygote分裂出来的。)注入代码”,这意味着你设备上任意一个普通应用可能会被劫持,听从攻击者的命令。上述例子只讲述了应用程序在你不知情的情况下在后台破坏你安全的几种方式。请注意,恶意应用程序完全可以明目张胆地对你的设备造成伤害,例如,勒索软件在root环境中就非常“厉害”。

MediaTek-su唯一的“弱点”是它只授予应用程序“临时”root权限,在设备重启后将失去超级用户权限。此外,在Android 6.0 Marshmallow和更高版本的设备上,存在Verified Boot 和dm-verity模块对只读分区(如system和vendor)的修改。为了克服临时root权限的限制,恶意应用程序可以在每次引导时简单地重新运行MediaTek-su脚本。

如果你在技术层面上想知道MediaTek-su是怎么利用的,MediaTek与我们分享了下面的图表,其中总结了入口点。这个漏洞显然存在于联发科的一个名为“CMDQ”的Linux内核驱动程序中。该描述指出,“通过在CMDQ设备节点中执行IOCTL命令,本地攻击者可以任意读取/写入物理内存,将内核符号表转储到预分配的DMA缓冲区,并操作DMA缓冲区以修改内核设置以禁用SELinux并升级到‘root’权限。”

微信截图_20200306203014.png

联发科CVE-2020-0069安全漏洞总结

根据联发科与我们共享的图表,此漏洞影响运行Android 7.0 Nougat、8 Oreo或9 Pie的Linux内核版本3.18、4.4、4.9或4.14的联发科设备。在运行Android 10的设备上无法利用该漏洞,因为“SELinux强行限制了CMDQ设备节点的访问权限”。这种防御可能来自联发科的BSP更新,而不是Android本身。Android10对这个漏洞的唯一的防御是它限制了应用程序在主目录中执行二进制文件;但是,正如XDA论坛的开发人员topjohnwu说的,恶意应用程序可以简单地在动态库中运行MediaTek-su代码。

尽管联发科已经在所有受影响的芯片组中修复了这个漏洞,但他们不能强迫设备制造商安装这些补丁。联发科告诉我们,他们在2019年5月就准备好了补丁。不出所料,亚马逊发现后,立即在其设备上解决了这个问题。然而,自联发科向其合作伙伴提供修复方案以来已经过去了10个月,在2020年3月,还有数十家OEM厂商没有修复他们的设备。大多数受影响的设备都使用很旧的Android版本,如果考虑到使用这些MediaTek芯片的数百种较不知名的设备型号,更新情况会更糟。联发科遇到了这个严重的问题,所以他们向谷歌求助。与联发科不同,谷歌可以通过许可协议或程序条款(如Android One)强制OEM厂商更新设备。

如何检查你是否受到MediaTek-su的影响?

如果要检查你的设备是否易受MediaTek-su攻击,请手动运行XDA论坛中发布的脚本。如果它可以利用,那么你需要等待设备的制造商推出一个补丁MediaTek su的更新。如果您的设备报告的安全修补程序级别为2020-03-05,这是最新的2020年3月SPL,那么它肯定不受MediaTek-su的影响。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://www.xda-developers.com/mediatek-su-rootkit-exploit/

最新评论

昵称
邮箱
提交评论