Return-to-libc攻擊


Return-to-libc攻擊(縮寫:ret2libc),即「返回至C標準庫攻擊」,是一種電腦安全攻擊。這種攻擊方式一般應用於緩衝區溢出中,其堆棧中的返回地址被替換為另一條指令的地址,並且堆棧的一部分被覆蓋以提供其參數。這允許攻擊者調用現有函數而無需注入惡意代碼到程序中。

縮寫為libc的共享庫是C標準函數庫,提供了類UNIX操作系統中的C運行時支持。儘管攻擊者可以讓代碼返回到任意位置,但絕大多數情況下的目標都是libc。這是因為libc總是會被鏈接到程序中,並且它提供了對攻擊者而言一些相當有用的函數(如system()調用可以只附加一個參數即執行外部程序)。這即是儘管返回地址可以指向另一個完全不同的區域,但這種攻擊仍被稱為return-to-libc的原因。

對 return-to-libc 攻擊的防護

一個被標記了不可執行位的堆棧可以阻止一些緩衝區溢出攻擊,但無論如何它無法防止return-to-libc攻擊。因為return-to-libc攻擊只用到了標記為可執行的代碼(libc中的函數均為可執行)。當然,攻擊者也只能夠調用已存在的函數。Stack-smashing 防護能夠阻止這種溢出,因為它可以檢測到損壞的堆棧並且有可能移除被攻擊的(segment)。地址空間布局隨機化 (ASLR)使這種攻擊在64位平台上變得幾乎不可能成功,因為所有函數的內存地址都是隨機的。在32位系統中,ASLR能夠提供部分防護,因為只有16位地址可供用於隨機化,這可以用暴力攻擊在很少的幾分鐘內破解。[1]

相關攻擊

面向返回編程 是這種攻擊使用的精心完成的技術,並且,通過串聯起每次單獨的小型攻擊以執行小數目的指令,可被用於進行更一般的操作。

參見

參考資料

  1. ^ Shacham, Hovav; Page, Matthew; Pfaff, Ben; Goh, Eu-Jin; Modadugu, Nagendra; and Boneh, Dan. On the Effectiveness of Address-Space Randomization (PDF). Proceedings of Computer and Communications Security (CCS'04), October 25–29, 2004, Washington (DC). [2011-07-22]. (原始內容存檔 (PDF)於2011-09-15). 

外部連結