来自 GPZ 的研究员 Jann Horn 表示,不仅仅是三星,不少智能手机制造商都会向下游添加自定义驱动程序,以此直接通过硬件访问 Android 的 Linux 内核。但其实,最好还是应当使用 Linux 内核中已经存在的安全功能。
Horn 在 Galaxy A50 的 Android 内核中发现的正是上述类型的错误,原本旨在降低内核安全性的措施却引发了内存损坏的问题。具体来讲,这些漏洞允许在运行 Android 9.0 和 10.0 的某些 Galaxy 设备上“执行任意可能的代码”。Google 于去年 11 月向三星报告了该错误,三星在 2 月刚刚发布的针对 Galaxy 手机的更新中进行了修复。
目前,一些 Android 手机通过专用的帮助程序来访问硬件,这些帮助程序在 Android 中统称为硬件抽象层(HAL)。但在 Horn 看来,手机厂商修改 Linux 内核核心部分的工作方式反而破坏了其原有的攻击锁定性能。就像三星一样,某些被添加的自定义功能是不必要的,完全可以删去,也不会造成任何影响。
因此,他建议手机制造商使用 Linux 已经支持的直接硬件访问功能,而无需再自定义 Linux 内核代码。如果要进行修改的话,“我认为,特定于设备的内核修改最好是放到上游或移入用户空间驱动中,在这里它们可以用更安全的编程语言和/或沙箱实现,同时也不会使更新的内核版本复杂化。”