别急着放弃你的安卓设备
几天前,安全公司 Perception Point 发布了 Linux 内核中的一个零日漏洞的详细信息,该报告表明数百万 Android 设备存在漏洞,引发了一阵恐慌。
虽然在大多数 Linux 发行版上修补安全问题非常容易,但对于 Android 用户来说要困难得多。 PC 用户和服务器管理员通常可以通过几个终端命令或通过 GUI 软件商店更新他们的系统。
Android 设备的更新过程不同。 Android 用户必须等待来自制造商的无线更新。
然而,谷歌的 Android 安全负责人 Adrian Ludwig 声称,大多数 Android 设备实际上是安全的。 Android 4.4 及更早版本使用从未包含该错误的旧内核版本。 即使在将该错误引入内核后,大多数 Android 版本也不包含内核中的密钥环功能。 最后,较新版本的 Android 使用 SELinux,它可以阻止用户空间程序部署可以使用该漏洞执行的有效负载。
"密钥环"漏洞利用了密钥环功能中的一个漏洞。 具有讽刺意味的是,密钥环应该使 Linux 更安全。 它用于缓存安全详细信息、密钥和证书。
虽然您可能希望密钥环漏洞暴露密码和登录名,但实际上它并不那么直接。 一个小错误使得可以使用该功能来强制内核执行任意代码。 恶意有效负载获得完全 root 权限,使整个系统面临风险。
Perception Point 在记录该漏洞以及如何利用它方面做得非常出色。 您可以在 http://perception-point.io/2016/01/14/analysis-and-exploitation-of-a-linux-kernel-vulnerability-cve-2016-0728/ 阅读详细信息。
简而言之,恶意进程会为会话请求一个新的密钥环,然后它会向内核发送大量请求,请求一个具有相同名称的密钥环。 内核中的代码识别到密钥环已经存在并发送错误代码。
该漏洞在于,每次发送请求时,密钥环的内部“引用计数”都会增加。 内核使用此引用计数来跟踪有多少程序正在使用密钥环。 当所有应用程序都完成使用密钥环后,内核可以随意删除它。
每个额外的请求都会使引用计数增加一。 通过发送数十亿个虚假请求,恶意代码可以强制引用计数溢出为零。 此时,从内核的角度来看,密钥已被释放并且可以擦除。
在欺骗内核之后,恶意进程用邪恶的有效负载覆盖释放的内存。 实现此目的的一种方法是通过进程间通信功能 (IPC)。
由于恶意代码在内存中引用了密钥环,它可以强制内核将其视为正常的密钥环。 某些系统调用会使内核从密钥环对象执行代码,但存储在内存中的实际代码不再是密钥环对象。 因此,恶意进程能够欺骗内核以 root 级别的权限运行有效负载。
这非常可怕。 幸运的是,Perception Point 在向世界其他地方宣布消息之前通知了 Linux 内核团队。 补丁已可用,可以通过正常渠道安装。
最初的报告称 66% 的 Android 设备存在漏洞是夸大其词,但某些设备确实受到影响。 Android 团队正在努力修复,但要到 2016 年 3 月 1 日才会发布。