安全研究人员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针对漏洞的整体防御给以了致命的一击。 这次offset2lib的曝光引起了0ld sch00l黑客社区的广泛讨论,多年来Linux内核开发者社区的自大是导致这种程度攻击的主要原因,多年来的“修修补补”式的防御设计在一夜之间居然 崩溃掉了,甚至有人怀疑这些来自“上古”时代的防御代码今天是否还有人记得...虽然offset2lib攻击在目前的内核代码里比较容易修复,但你根本 不知道像NSA之类的情报部门是否已经漏洞利用过? 有趣的是这种攻击方式对于Grsecurity/PaX无效,Grsecurity/PaX早在13年前的实现就已经杜绝了这种攻击的可能性,不幸的是只有Gentoo和Debian Mempo提供了直接使用Grsecurity/PaX的途径。当然,为什么Linux内核社区一直抄袭Grsecurity/PaX而不让它进入主干或许是个社区政治问题,但抄的烂也是导致这次攻击的主要原因。 btw:说普通的GNU/Linux安全是相对于Windows而言。 " (责任编辑:IT) |