ヒープオーバフローとは 〜Windows XP SP2 の DEP によって攻撃者の注目が集まる
バッファオーバフロー攻撃は、オーバフローさせる領域の違いによって、スタックオーバフローとヒープオーバフローが存在する。シンプルなコンセプトであるスタックを使ったオーバフロー攻撃が、Windows XP SP2 の DEP 等によって困難になる現状において、比較的難易度
特集
特集
今回編集部では、企業に対する多数のペネトレーションテスト実績を持ち、エクスプロイトコードの作成に詳しい、株式会社サイバーディフェンス研究所の松野真一氏に取材し、ヒープオーバフローの仕組み、DEPが有効となった環境下での攻撃方法について話を聞いた。
─
SCAN:
今、エンジニアがヒープオーバフローを理解することの重要性は何でしょう?
松野氏(以下敬称略):
最近のコンパイラでは、ビルド時に「スタッククッキー」などの仕組みで、潜在するスタックオーバフローの問題を見つけ、かつ、それがエクスプロイトされないようにするセキュリティ機能が実装されています。その他stack canaryなどのスタック保護システム等の対策も行われています。
しかしその一方で、ヒープオーバフローなどの、動的に割り当てられるバッファ領域のオーバフローに繋がる問題の対策は比較的に進んでいないように感じられます。それによって、ヒープオーバフローへの攻撃者の注目が集まっているのです。シンプルなスタックオーバフロー攻撃がすでに一般化した現状を踏まえると、ヒープオーバフロー攻撃の普及も時間の問題と言えるでしょう。
SCAN:
スタックバッファオーバフローのエクスプロイトと、ヒープバッファオーバフローのエクスプロイトの違いは何でしょう?
松野:
スタックオーバフローはいたってシンプルです。データのサイズやオフセットは固定で、レジスタのEIPを書き替えればプログラムの実行フローを直接に制御できます。基本的なコンセプトが理解できれば、誰でも5分程度でエクスプロイトを書くことができるでしょう。
これに比べて、ヒープオーバフローは複雑です。データのサイズは大きく変動しますし、他にも考慮しなくてはならない動的な要素が多いことが特徴として挙げられます。
しかし、Windows XP SP2以降で各OSに実装されたデータ実行防止(DEP: Data Execute Prevention)が一つの要因となって、ヒープオーバフローへの関心が高くなっています。DEPによって、シンプルなコンセプトのスタックオーバフローで任意のコードを実行させることはできなくなりました。
SCAN:
DEPが有効になっている環境で任意のコードを実行することはできるのでしょうか?
松野:
可能です。オーバフローが起こるコンテキストやアプリケーションにもよりますが、多くの場合はエクスプロイトするためのペイロードが複雑になるだけで、絶対無理ということはありません。
SCAN:
どういうプロセスで実現するのですか?…
【執筆:編集部】
【関連リンク】
Heap Overflow と最新OSの攻略
http://www.cyberdefense.jp/service_seminar/seminar07.html
【関連記事】
本当に面白い事件とは…? − Immunity社CTO Dave Aitel氏インタビュー
https://www.netsecurity.ne.jp/3_11034.html
──
※ この記事は Scan購読会員向け記事をダイジェスト掲載しました
購読会員登録案内 http://www.ns-research.jp/cgi-bin/ct/p.cgi?w02_ssw
《ScanNetSecurity》