近日,Google Project Zero(GPZ)团队向三星发出警告,如果三星在 Galaxy 系列手机中修改内核代码,将会暴露更多安全漏洞。
手机产商造成的安全漏洞
据了解,GPZ 研究员 Jann Horn 在三星 Galaxy A50 的安卓内核中发现错误。Jann Horn 指出,像三星这样的智能手机制造商会通过添加下游定制驱动程序来直接访问 Android 的 Linux 内核,结果造成了更多的安全漏洞。
同时,Jann Horn 还表示,三星的做法在所有智能手机厂商中相当普遍——即手机厂商向 Linux Kernel 中添加未经上游(upstream)内核开发者审核的下游(downstream)代码,增加了与内存损坏有关的安全性错误。
尽管这些下游定制代码旨在增加设备的安全性,但是它们可能会带来新的安全漏洞。例如,三星原本准备增强内核安全的代码结果带来了内存损坏漏洞。2019 年 11 月,Google 向三星通报了这一漏洞。
据悉,该漏洞影响了三星的额外安全子系统,这个额外的系统名为 PROCA 或 Process Authenticator 。随后,在 2020 年 2 月,三星表示已在手机更新程序中修复了该漏洞。
另外,值得一提的是,三星在 2 月份的手机系统更新中还包括一个针对“TEEGRIS 设备”中严重缺陷的补丁。据介绍,TEEGRIS 设备指的是搭载三星专有 TEE 操作系统的较新 Galaxy 手机上的可信执行环境(TEE);而 Galaxy S10 就是 TEEGRIS 设备之一。
在三星的描述中,SVE-2019-16132 (按:三星对该漏洞的代号)是一个并不严重的问题,是由 PROCA 中的 Use-After-Free 和 Double-Free 漏洞组成,允许黑客在一些运行 Android 9.0 和 10.0 的 Galaxy 手机上“执行任意代码”。
不过,在 Jann Horn 看来,他更关注 Android 如何减少智能手机供应商向内核添加独特代码带来的安全问题。Jann Horn 进一步补充说明:
Android 已经通过锁定哪些进程可以访问设备驱动程序来降低此类代码的安全影响。这些设备驱动程序通常是针对特定智能手机供应商的。
比如说,较新的 Android 手机通过 Android 中专用的助手进程——统称为硬件抽象层(HAL)——访问硬件。但 Jann Horn 认为,智能手机供应商修改 Linux 内核代码的工作方式会破坏上述努力。
不仅如此,Jann Horn 还表示,手机制造商应该使用 Linux 已经支持的直接硬件访问功能,而不是定制 Linux 内核代码。同时,Jann Horn 还指出,三星增加的一些定制功能是不必要的,如果它们被删除了,也不会影响设备的安全性。
据 Jann Horn 的推测,PROCA 是为了限制已经获得内核读写访问权限的攻击者。但他认为,三星可以通过引导工程资源,从一开始就阻止攻击者获得这种访问权限,从而提高效率。
Jann Horn 解释说:
我认为,特定设备的内核修改最好上移到用户空间驱动程序中,因为在用户空间驱动程序中,它们可以用更安全的编程语言和 sandboxed 来执行,同时也不会使更新的内核版本复杂化。