安全研究人员Hector Marco发布公布了针对64位Linux内核的ASLR防护的绕过(slide和论文),这种攻击被称为offset2lib。 ASLR的实现是在Linux内核里,而在GNU/Linux发行版上加载一个应用程序到内存中会先找一个随机的地址加载第一个共享库,之后加载的共享库紧跟之前加载对象的地址,一个内存地址的泄漏就足够让地址随机化变得无用,甚至GOT(Global Offset Table)的地址泄漏都不是必须的。由于大部分的GNU/Linux发行版(除了像Gentoo这种每个源码包都需要自己编译)的包都是预编译的二进制文件,所以这些发行版的offset都是一样的。 作者的POC中是轻松的绕过了NX(stack上不允许执行),ASLR(地址随机化)+PIE(针对代码段的随机化),SSP(压栈出栈检测是否被修改的canary)的组合防御,offset2lib攻击为绕过普通的GNU/Linux针对漏洞的整体防御给以了致命的一击。
不过这种攻击方式对于Grsecurity/PaX无效,Grsecurity/PaX早在13年前的实现就已经杜绝了这种攻击的可能性,但不幸的是只有Gentoo和Debian Mempo提供了直接使用Grsecurity/PaX的途径。 (责任编辑:IT) |