Return-to-libc攻撃
提供: セキュリティ
スポンサーリンク
Return-to-libc攻撃 とは、バッファオーバーランによってコールスタック上のリターンアドレスを別のサブルーチンへのアドレスに書き換え、スタック乗の引数にあたる位置も書き換えることで、任意のサブルーチンを呼び出す、攻撃手法です。
読み方
- Return-to-libc攻撃
- りたーん とぅ りぶしー こうげき
概要
Return-to-libc攻撃 とは、バッファオーバーランによってコールスタック上のリターンアドレスを別のサブルーチンへのアドレスに書き換え、スタック乗の引数にあたる位置も書き換えることで、任意のサブルーチンを呼び出す、攻撃手法です。
Unix 系のシステムは、 C言語のランタイムとして libc と呼ばれる共通ライブラリを利用します。 常にリンクされていて攻撃に使いやすい機能が多い libc をターゲットにすることが多くなっています。libc以外を呼び出す場合でも、 return-to-libc と呼びます。
防御方法
- Stack Smashing Protector (SSP) は、スタック内容の破壊を検出、破壊されたセグメントをフラッシュアウトすることで、この攻撃を防御できます。
- ASLR は、 64ビットシステムでは、攻撃成功確率を低下させることができます。32ビットシステムでは、ASLR は、16ビット分(65536通り)のランダム化しか提供しないため、総当たり攻撃によりハッキングされる可能性があります。
- Return-to-libc攻撃 に対して、データ実行防止(DEP)で用いられるNXビット は、無力です。
使い方
GCC Stack Smashing Protector は、 -ftsack-protector-all のオプションで有効になります。
gcc -fstack-protector-all foo.c
関連項目
- Stack Smashing Protector
- アドレス空間配置のランダム化 (ASLR
- データ実行防止 (DEP)
ツイート
スポンサーリンク