Windows Vista に ASLR 機能

Windows Vista の Beta バージョンで ASLR (Address Space Layout Randomization) 機能が実装されるというニュース.

バッファオーバーフロー脆弱性を利用して任意のコードを行なうには,事前に対象システムのメモリレイアウトを知っていなければ難しい.よってプロセスを起動するごとにマップ先のメモリ空間を変えてやれば,確率的に任意のコードの実行を防ぐことが出来る.ASLRはそんな技術.

すでにOpenBSDとかLinuxのPaXパッチでは実現されていた技術なので,いつかWindowsでもやるだろうとは思っていた. Windowsではマップ先のアドレスを変えないことで再配置に要するオーバーヘッドを回避するということをやっていた気がするので,もしかしたらASLRによって少しだけプロセス起動の負荷は増えることになるかもしれない. しかし大した問題じゃあないだろう. ASLRはXPで採用されていたデータ実行防止機能(DEP)を補完する対策なので,例えばreturn-to-libcのようなDEPでは防御しにくかった攻撃も高確率で防げるようになる. 良い話だと思う.