リモートBOF攻撃
確保したメモリ領域(スタック領域)を超えて不正なデータを書き込み、システムの侵入や管理者権限の取得を
試みる攻撃手法
C/C++等で開発されたプログラムのバグにより発生する。
開発する上での対策
・入力データをサイズの制限なくメモリにコピーする関数(strcpy等)をできるだけ使用しない。
・入力データのレングスチェックを行なう。
利用者の対策
・OSおよび使用しているソフトウェアのバージョンを最新化し、パッチを適用する
・脆弱性検査を実施し、BOF攻撃に関するセキュリティホールが塞がれていることを確認する
「問題」
Q1 スタックとはなにか。 どのような特徴があるのか。
Q2 C/C++言語のどうような特徴がこの攻撃を成立させているのか。
Q3 BOF攻撃によってなぜ管理者権限がうばわれてしまうのか。
Q4 BOF攻撃への有効な対策としては何があるか。
「解答」
Q1
スタックは、データ記憶構造の一種であり、最後に書き込んだデータが最初に読み出される
後入れ先出し(LIFO)となっている
スタックはプログラム内でサブルーチンを呼び出す際に、その戻り位置(リターンアドレス)、
変数の格納など一時的に使用されるデータを確認するのに使用される。
BOF攻撃では、スタック領域のリターンアドレス、変数が不正に書き換えられる。
Q2
C/C++言語のstrcpy関数では、サイズの制限なしに入力データをメモリ内の変数領域にコピーしてしまう。
その結果、確保されていた領域を超えスタック内の他の領域まで上書きしてしまう。
strcat gets spritfも同じ
Q3
もし、管理者権限で実行されているサービスに対してBOF攻撃で、不正なプログラムを実行に
成功した場合には、そのサービスが実行されている権限と同じ権限でホストの操作が可能だから
Q4
OS及び使用しているソフトウェアのバージョンを最新化しパッチを適用する
脆弱性検査を実施し、BOF攻撃に関するセキュリティホールが塞がれていることを確保する