リンカ・ローダと実行形式
メモリのページに「書き込み可能」と「実行可能」を同時には許さない(W^X、書き込みと実行の分離)ことで防ぎやすくなる攻撃はどれか。
- Aパスワードを総当たりで試す攻撃
- B大量の通信を送ってサーバを止める攻撃
- Cスタックなどのデータ領域に攻撃用の機械語を書き込み、そこへ飛ばして実行させる攻撃
答えと解説を見る
正解:C. スタックなどのデータ領域に攻撃用の機械語を書き込み、そこへ飛ばして実行させる攻撃
昔の攻撃では、バッファオーバーフローでスタックに機械語を書き込み、戻り先をそこへ向けて実行させる方法がよく使われました。CPUのページテーブルには実行禁止のビット(NXビットなど)があり、OSがスタックやヒープ、.dataを実行禁止に、.textを書き込み禁止にすれば、この方法は使えなくなります。JITコンパイラのように実行中にコードを作る場合は、書き込みと実行の権限を切り替えて使います。
- A. パスワードの総当たりはメモリの権限と関係ありません。
- B. 通信の量による攻撃はメモリの権限では防げません。
- C. 正しい。書けた場所は実行できなくなります。