<< 9月 2007 | ホーム | 11月 2007 >>

SecureC: Control-flow Protection Against General Buffer Overflow Attack

バッファオーバーフローを用いた攻撃を防ぐための手法として、C 言語を対象としてソースコード変換とランタイムの提供による手法を提案。一つ目の手法は、配列を shadow stack と呼ぶ領域に確保して、スタックからその領域を指すようにする。これによってスタック上にコードを書き込まれたりリターンアドレスを変更されなくなる。Shadow stack には read-only な領域が続くようにしておいて配列長以上に書き込むと segmentation fault。二つ目の手法は、関数ポインタの指す先が正しいか確認するコードを挿入する。ポインタ変数のスタック上の位置が配列に続く位置の場合は、オーバーフローで変なところを指す可能性があるので、実行直前に代入時と変わっていないか検査する。実装もされていて、時間的性能の低下は約 6% らしい。

author="Hiroyasu Nishiyama",
title="{SecureC: Control-flow Protection Against General Buffer Overflow Attack}",
booktitle="COMPSAC'05",
publisher="IEEE Computer Society Press",
pages="149--155",
year="2005"

タグ : ,