Abstract
近年來,許多位址空間佈局隨機化的技術已受到廣泛的重視。位址空間佈局隨機化可以使得攻擊者不能藉由相同的攻擊程式達到像蠕蟲一樣廣泛攻擊的目的。現今,這項技術已經被廣泛的應用於Unix-like的系統上,Windows也將位址空間佈局隨機化的技術整合進新推出的作業系統Vista上。然而,Windows Vista上位址空間佈局隨機化的技術只提供8-bit的值,遠比PaX位址空間佈局隨機化(16-bit)的機制少很多。此外,Windows Vista只有在每次重新開機時,作業系統才會重新佈局DLL在記憶體中的位址空間。近年來已有研究利用return-into-libc attack破解PaX位址空間佈局隨機化的機制,我們也將利用相同的方式(return-into-dlls attack)來破解Windows Vista上位址空間佈局隨機化的機制。在本篇論文中,我們將設計一種應用於Windows Vista上之加強動態鏈結程式庫隨機化的機制並且能夠防止攻擊者透過retrun-into-dlls attack來達到攻擊的目的。我們不但提供了13-bit隨機化的值,而且在每次呼叫完Win32 API後,隨機改變Win32 API的入口位址,達到每次呼叫隨機化的目的。實驗結果顯示我們的系統可以抵擋傳統位址空間佈局隨機化的機制所不能抵擋的攻擊,例如:資訊揭露攻擊(information leakage attack)。此外,我們的系統對整體效能影響不大,平均只有增加大約8%的時間。