Return-to-libc攻撃
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2015/10/10 16:18 UTC 版)
Return-to-libc攻撃とは、バッファオーバーランによってコールスタック上のリターンアドレスを別のサブルーチンへのアドレスへ書き換え、さらにスタック上の引数に当たる位置も書き換えることで、サブルーチンを呼び出させるコンピュータセキュリティの攻撃手法である。攻撃者は、悪意あるコードをプログラムに注入することなく、単に既存の関数を呼び出すだけで攻撃を行う。
|
- 1 Return-to-libc攻撃とは
- 2 Return-to-libc攻撃の概要
Return-to-libc攻撃
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/22 07:15 UTC 版)
「バッファオーバーラン」の記事における「Return-to-libc攻撃」の解説
詳細は「Return-to-libc攻撃」を参照 既に述べたように、典型的なスタックベースのオーバーフロー攻撃では、本来データを格納すべき箇所にシェルコードやNOP命令のようなコードを置き、リターンアドレスを書き換えてこれらのコードにジャンプして、これらのコードを実行する必要があった。しかしW ⊕ {\displaystyle \oplus } Xが実装された実行環境ではデータを格納すべき箇所におけるコード実行を不許可としているので、こうしたオーバーフロー攻撃を仕掛ける事はできない。 そこでW ⊕ {\displaystyle \oplus } Xを回避する為に考案されたのがReturn-to-libc攻撃である。この攻撃では、リターンアドレスのジャンプ先をデータ格納箇所に書き換えるのではなく、標準Cライブラリ(libc)のような共有ライブラリ・DLLにジャンプするよう書き換える。こうしたライブラリはデータ格納箇所以外に置かれているので(W ⊕ {\displaystyle \oplus } Xが実装された環境においても)実行許可がある。そこで攻撃者はライブラリ内の関数を悪用して、攻撃を仕掛ける事ができる。 実行環境がASLRを実装していれば、libc等のライブラリの仮想アドレスはランダムに変わるので、攻撃者がジャンプ先をライブラリに落ちるようリターンアドレスを書き換えるのは困難になる。
※この「Return-to-libc攻撃」の解説は、「バッファオーバーラン」の解説の一部です。
「Return-to-libc攻撃」を含む「バッファオーバーラン」の記事については、「バッファオーバーラン」の概要を参照ください。
固有名詞の分類
標準Cライブラリ | Strcpy Strlen Return-to-libc攻撃 GNU Cライブラリ Memset |
- return-to-libc攻撃のページへのリンク