2012年4月29日日曜日

セキュリティについて:DEP, ASLR

コンピュータへのHackingに対抗するための技術としてDEP(Data Execution Prevention:データ実行防止)、ASLR( Address space layout randomization:アドレス空間配置のランダム化)というのをあるのを知りました。結構昔からある技術でした。wikipediaでも調べればのってますが、概要をメモしときます。昔からよく行われるHackingの手法に「バッファオーバーフロー攻撃」というのがありますが、どちらもそれに対抗するものです。

・DEP
「バッファオーバーフロー攻撃」はデータをバッファのサイズ以上に書き込んで、その時意図的に自分の実行したいプログラムをそのデータ列にいれて、そこを実行させようとします。そこでメモリ管理テーブルにNXビットというのを設けて、データエリアとプログラムエリアを判別できるようにしてやろうということです。バッファオーバーフローではデータエリアにデータが書き込まれるはずなので、そこを実行しようとしたらOS側で検知して、中止します。windows XP SP2以降のwindowsに実装さrているそうです。(Linuxにはなし)
ただこれをすり抜ける技術としてReturn-to-libc攻撃というのが考えられて、さらによりセキュリティをあげるため、以下のASLRが考えられたようです。

・ASLR
バッファオーバーフロー攻撃を成功させるためにはスタック領域やヒープ領域のアドレスがわかっていないとできません。(更にいうとReturn-to-libc攻撃を成功させるためにはlibcのアドレスも必要です)そこで、これらのアドレスを実行時にランダムに配置してやれば攻撃できない(正確には難易度があがる)ということになります。Return-to-libc攻撃がかなり困難になります。windowsはVista以降、Linuxはカーネル2.6.12から、Mac OSXは10.5から一部のライブラリに実装したそうです。
ただこれはOSが32bitの場合、16bitでしかランダム化できないため、力技で攻撃すれば総当りで、最近のCPUなら分単位で突破できる可能性があります。(64bitのOSだと、成功の確率が飛躍的に下がるため、非常にセキュアになるそうです)

0 件のコメント:

コメントを投稿