Abstract
Stack Smashing依然是攔截程式控制權最常用的方法之一。return address是一個程式裡最常被攻擊的目標,而previous frame pointer僅次於它。已經有許多的防禦機制被提出來抵擋Stack Smashing Attack,但是大部份都須要修改compiler或硬體支援,而且只有少數是發展在Windows上。我們發現了一個潛在的安全性問題針對於那些使用動態配置Return Address Stack來抵抗Stack Smashing Attack的方法。我們能夠攔截受這些方法保護程式的程式控制權經由操作Memory Pointer Corruption Attack,因為這些方法只注意到要保護Return Address Stack而完全忽略Return Address Stack的Entry Pointer也是須要保護的。在這篇論文裡,我們將設計一種Secure Return Address Stack來保護上述二者以防禦Stack Smashing Attack在Windows上。此外,我們還延伸我們的方法去處理一個DLL、一個multi-thread程式、多個DLL被應用於multi-thread程式。相較於先前的研究,我們的方法更完善的處理DLL問題。最後,benchmark GnuWin32顯示我們的方法只有增加3.47%到8.59%的performance overhead而已。