编号为 CVE-2016-5195 的漏洞在 Linux 内核社区修复完成后的故事并没有结束,72小时内公开的可作非稳定漏洞利用的 PoC 已经有 9 个。如果是标准版本的内核,写 /proc/pid/mem
,vDSO
(部分版本)以及常规 ptrace()
方法都可以直接利用,PaX/Grsecurity 内核对于这个 PoC 也难以防御。针对 ptrace/madvise 做 seccomp 的规则虽然可以减缓攻击进度,但带来性能开销的同时也不能一劳永逸的解决这个问题,如果没有 RBAC 的场景还是建议升级。
这个漏洞在自由软件世界是比较罕见的,对 GNU/Linux 服务器构成巨大威胁和风险的同时也成为了 Android root 恶意代码链条(包括一键 root 工具)以及 IoT 入侵的强大助攻。Jonathan Corbet 的文章提到 Linux 内核社区对待安全的态度需要反思,这个严重漏洞的修复竟然是和 cleanup 的 patch 一起合并到主线的,即使是单独的提交也像往常一样并未提供更多的安全评估信息。
这种不提供公开漏洞信息的做法是在 1990 年代用于防御脚本小子获得更多信息,后来 Linux 基金会的“客户”们并没有提出改变的意见所以一直沿用至今。但 2016 年的互联网环境和 1990 年代有着很大的区别,即使没有公开的漏洞信息攻击者可以凭着对代码提交的理解也可以打造出相应的漏洞利用。
或许在 Linux 内核自防护项目开始 10 个月后遇到了 DirtyCow 并不是件坏事。内核自防护项目尝试移植 PaX/Grsecurity 的一些特性终结掉 Linus Torvlads 的“A bug is bug”流派,而 DirtyCow 有望在生态上让 Linux 基金会的“客户”们向 Linux 内核社区施压,说不定会改变“security through obscurity”的格局。毕竟今天是一个更开放的年代,个体更注重安全,GNU/Linux,Android 和 IoT 的相关厂商都重度依赖于 Linux 的安全性,RedHat 或者 Linux 基金会在安全方面想要一手遮天相比 2002 年还是困难很多。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/54783.html