Return-to-libc攻撃

提供: セキュリティ
2015年9月22日 (火) 16:53時点におけるDaemon (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

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

関連項目




スポンサーリンク