2014.10.17
The Attack and Defense of Computers 141015
Dr. Fu-Hau Hsu (許富皓)

Countermeasures of Buffer Overflow Attacks

 
Start from ch.2-44
 
Countermeasures of Buffer Overflow Attacks
-Array bounds checking:check buffer length => 找compiler加檢查碼(buffer使用時是否有超出使用範圍e.g. Java)
可以解決大多數的Buffer Overflow問題,但並不popular => 大多數程式並無source code;High run-time overhead(overhead定義:資料已傳送但存在buffer上,時間的額外花費)
 
-Non-executable stack/heap:直接使stack段不可執行(Disable some original system functions, e.g. signal call handling, nested functions)
具有相容性問題,且不能擋"利用原有code attack"的攻擊
 
Safe C library:有些與字串相關的C library function不會去檢查目標buffer的邊界值;除此之外亦有許多C statements會導致buffer overflow
 
-Compiler solutions, e.g.,StackGuard(參考:http://systw.net/note/af/sblog/more.php?id=172)
在buffer前插入一個canary word,當出現buffer overflow時canary會先被覆蓋,可藉此偵測是否有溢位的情況。
*常見的canary word:Terminator canaries, Random canaries, Random XOR canaries.
Low performance overhead
Change the layout of the stack frame of a function => 不一定適合所有程式,例如debugger
只保護return add.
 
-RADreturn address defender
將返回地址複製一份儲存在RAR(Return address register)
Low performance overhead.
只保護return add.
 
-Type safe language, e.g. Java.
會自動檢查array邊界值
 
-Static source code analysis
    近年誤判率下降
 
-Anomaly Detection, e.g. through system calls.
    System calls呼叫的順序是否與Graph相同(沒效率)
 
-Memory Address Obfuscation/ASLR(Address Space Layout Randomisation)
ASLR => 猜測位置時的難度較高(Segment的絕對位置變動,相對位置不變,Segment中的function順序物可更改)
 
-Randomization of executable Code.
window上效果較差,因其記憶體可選擇之位置較少。
-Network-based buffer overflow detection
 
# Heap Spray and Drive-by Download=>本身不會造成危害,但能提升攻擊成功的機率,可能影響記憶體的使用 
Heap Spray:利用漏洞,在shellcode前加上大量的slide code(一般是NOP,近來也出現類NOP指令)
p.61
每個Injected Heap的字串皆是一object
-實作:Java Script=>NOP sled => 不是 binary
 
#Memory Corruption Exploit(原本Same as buffer flow=> 根據user調整
p.70
Virtual Table -> new -> 從heap中配置,overflow由上到下,寫到table中指向heap,充滿NOP slay(漏洞)
 
p.72
Q:為何不直接注入assembly code?
A:因為不同的browser架構不同,若直接寫死則只能針對特定的browser攻擊;所以先看是什麼Browser(形式蒐集),再決定攻擊字串‧
 
 
 
comment 0 trackback 0
引用 URL
http://icebreak310.blog.fc2blog.us/tb.php/198-947fb29f
引用:
留言:
只对管理员显示