Offset2lib攻击绕过64位Linux内核防护

Shawn the R0ck 写道 "安全研究人员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而言。 "