安全研究人員Hector Marco發(fā)布公布了針對64位Linux內核的ASLR防護的繞過,這種攻擊被稱為offset2lib。
ASLR的實現(xiàn)是在Linux內核里,而在GNU/Linux發(fā)行版上加載一個應用程序到內存中會先找一個隨機的地址加載第一個共享庫,之后加載的共享庫緊跟之前加載對象的地址,一個內存地址的泄漏就足夠讓地址隨機化變得無用,甚至GOT(Global Offset Table)的地址泄漏都不是必須的,由于大部分的GNU/Linux發(fā)行版的包都是預編譯的二進制文件,所以這些發(fā)行版的offset都是一樣的。
作者的POC中是輕松的繞過了NX(stack上不允許執(zhí)行),ASLR(地址隨機化)+PIE(針對代碼段的隨機化),SSP(壓棧出棧檢測是否被修改的canary)的組合防御,offset2lib攻擊為繞過普通的GNU/Linux針對漏洞的整體防御給以了致命的一擊。
這次offset2lib的曝光引起了0ld sch00l黑客社區(qū)的廣泛討論,多年來Linux內核開發(fā)者社區(qū)的自大是導致這種程度攻擊的主要原因。雖然offset2lib攻擊在目前的內核代碼里比較容易修復,但是這種攻擊方式對于Grsecurity/PaX無效,Grsecurity/PaX早在13年前的實現(xiàn)就已經杜絕了這種攻擊的可能性,不幸的是只有Gentoo和Debian Mempo提供了直接使用Grsecurity/PaX的途徑。