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). 

外部連結

編輯