「Return-to-libc攻撃」の版間の差分

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

2015年9月22日 (火) 16:53時点における最新版

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

関連項目