Return-to-libc攻撃とは、バッファオーバーランによってコールスタック上のリターンアドレスを別のサブルーチンへのアドレスへ書き換え、さらにスタック上の引数に当たる位置も書き換えることで、サブルーチンを呼び出させるコンピュータセキュリティの攻撃手法である。攻撃者は、悪意あるコードをプログラムに注入することなく、単に既存の関数を呼び出すだけで攻撃を行う。

Unix系システムでは、C言語ランタイムとして "libc" という共有ライブラリが使われる(Windows でも該当するライブラリが存在する)。バッファオーバーランでは攻撃者は任意のコードに戻るように細工できるが、常にリンクされていて攻撃に使い易い機能が多く存在する libc をターゲットとすることが多い(例えば、system() は引数さえ正しく指定すれば、任意のプログラムを実行できる)。このため、全く別の場所を呼び出すようになっていても総称として "return-to-libc" と呼ぶ。

防御方法

編集

スタックに実行コードを書き込むようなバッファオーバーランを利用した攻撃の場合と異なり、NXビットでスタック上のコード実行を防御しても、return-to-libc攻撃ではスタック上のコードを実行するわけではないので、防ぐことができない。Stack smashing protection は、スタック内容の破壊を検出したり、可能であれば破壊されたセグメントを復旧することで、この種の攻撃を防御できる。

ASLR (Address Space Layout Randomization) は、実行プログラムの各モジュールのコードが配置される位置をランダム化することで、狙い撃ちでコードを実行されることを防ぐ。ASLRは、特に64ビットシステム上での攻撃成功確率を劇的に低下させる。32ビットシステムでは、一般的には16ビット分のランダム化しか提供しないため(すなわち65536通り)、総当たり攻撃により分単位で攻撃を成功されてしまう可能性がある。

関連項目

編集

参考文献

編集
  • Shacham, Hovav; Page, M.; Pfaff, B.; Goh, E. J.; Modadugu, N.; Boneh, D. “On the Effectiveness of Address-Space Randomization” (PDF). Proc. of CCS 2004.

外部リンク

編集

📚 Artikel Terkait di Wikipedia

実行保護

実行保護(じっこうほご、ESP:Executable space protection)とは、意図しないコードの実行を阻止するためのコンピュータセキュリティ上の機能の1つ。 今日では、メモリの領域に実行不可とマークすることにより、その領域上でコードを実行しようとすると例外を発生させる仕組みが導入されている。

Linuxディストリビューションの比較

ディストリビューション 強制アクセス制御 (Mandatory access control) ソフトウェア実行保護 (Software executable space protection) grsecurity RSBAC Arch Linux オプション (SELinux) オプション (PaX) オプション

Mozilla Firefoxのバージョンの変遷

Protection を有効化。 2021年7月13日にリリースされた。 Windows 上で Firefox が実行されていない時 Firefox を自動で更新するように。 FTP プロトコルのサポート削除。 2021年8月10日にリリースされた。 Total Cookie Protection