【コラム】
Windowsにおける仮想アドレス空間のレイアウト概要を説明したので、次に、本稿のすすめかたについて念のため触れておきたい。
本稿において最初に説明していきたいのは、Windowsにおけるスタックベースのバッファオーバーフローである。よく略して「スタックオーバーフロー」と呼ぶこともある。このタイプの脆弱性が頻繁に発見されたのは遠い昔(と、いってもここ10年内の話であるが)であり、もはや主要なアプリケーションにおいては「絶滅危惧種」扱いとなっているが、その一方で、攻撃への転用性に優れてもいる。よって、まずはスタックベースのバッファオーバーフローについて本稿をまとめていきたい。
加えて、念のため記述しておくが、単に『スタックオーバーフロー』と記述した場合、通常は巨大なローカル変数を確保することや、再帰呼び出しの回数が多すぎたことに起因し、スタックに割り当て可能なメモリが不足する状態を指すことになる。よって今回は厳密に『スタックベースのバッファオーバーフロー』と記述することにしたい。
次に、スタックベースのバッファオーバーフローを理解するうえで重要となるのは、プログラムの動作におけるスタック領域の利用のされ方である。それを知るためには、サブルーチンの概念ならびにスタックの概念を知らねばならない。このため、やや遠回りをしてこれらについて説明したいと思う。一点付け加えておきたいのは、本稿のテーマは"Windows"であるため、対象となるアーキテクチャはx86である。このため、x86アーキテクチャに則った解説が本稿で行われることがあることにご留意いただきたい。
さて、マシン語によるプログラミングが主流だった時代において、データを格納するために必要なメモリ領域は、コーディングの時点で用意しておく必要があった。ところが、コーディングを行う上では、一時的に小さなデータを保存する必要性に迫られることが頻繁にあった。かつては希少なリソースしかなかったため、ソフトウェアには処理の無駄を省くことで効率化を行い、機械として最大限の能力を発揮させるか、が問われていたという背景がここにはある。そのため、一時的に保存するためのメモリ領域を、コーディング時に細かく沢山確保しておくことは利用可能なメモリ量の逼迫、ひいては効率の低下につながりかねない。
そこで、ある一定の大きさのメモリ領域を確保しておき、それを「一時データ置き場」として活用することが考案された。それが、スタックである。
スタックは「皿の山」や「書籍の山」に喩えられる。ここでは書籍の山としてスタックの概念を扱うことにする。
スタックはこの図版のように、あたかも「積読」状態で、床から本が積みあがるようなデータ構造をとる。以下、その概略について喩えを使いながら記す。
このようなデータ構造は「後入れ先出し(LIFO: Last In First Out; FILO: First In Last Out)」などと呼ばれる。こうした小さなデータ用の格納場所を用意しておくことで、メモリを浪費することを抑制することを実現させた。
x86を含む複数のアーキテクチャにおいて興味深いのは、通常、データやプログラムコードはアドレス低位から高位に向かって並んでいるのに対し、スタックはアドレス高位が基点となって低位に向かって成長する点である。
ちなみに興味本位で、なぜこのようになっているのか、その理由について筆者も調べてみたが、ここやここの文献を読む限りでは、「スタック中のデータを参照する際は、(ESPなどのスタックポインタから)正方向のオフセットを指定することが自然であり、かつ利便性にも勝るため」なのだそうである。
| 12月のセキュリティパッチ公開、IEやWMPに脆弱性 - Wordの脆弱性は解消せず [2006/12/13] |
| 「生産性向上とセキュリティ強化を同時に」- MS、Exchange Server 2007に自信 [2006/12/13] |
| 日立、IIJ、KDDIなど7社、ネットワーク側でセキュリティ確保する技術を開発 [2006/12/11] |
| PERSON 第9回 小山覚(NTTコミュニケーションズ) - 大事だったのは友達 [2006/12/4] |
| 「セキュリティで本当に大事だったのは友達、助けてくれたのは友達」 - NTT Com 小山覚氏 [2006/12/4] |
| MS、総合セキュリティサービス「OneCare日本版」の価格・提供日を発表 [2006/12/4] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第108回 今回のお題は…「issue」 [20:00 5/27] キャリア |
|
TVアニメ『ペルソナ4』、新規カットを加えた再編集版を劇場でイベント上映 [20:00 5/27] ホビー |
|
[9nine]制服姿見納め? セーラー服で登場も川島海荷「4人はコスプレ」 [19:15 5/27] エンタメ |
|
「NO.6」4巻は書き下ろしドラマCD付、木乃のサイン会も [18:49 5/27] ホビー |
|
[今週の新刊]マンガ大賞3回ノミネート「アイアムアヒーロー」 カープ愛「球場ラヴァーズ」も [18:33 5/27] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。