特集/連載
知っておきたい「バッファオーバーフロー攻撃」とは? 主要な4種を紹介:「バッファオーバーフロー攻撃」を知る【前編】
メモリに許容量以上のデータを送り込む「バッファオーバーフロー攻撃」にはさまざまな種類がある。主要な4種類について、それぞれの特徴と攻撃手法について説明する。
「バッファオーバーフロー攻撃」とは、プログラムやプロセスの処理対象データを一時的に保持する固定長のメモリ領域「バッファ」に、許容量より多くのデータを書き込む攻撃のことだ。攻撃者は外部端末やプロセスから入力を受け取るプログラムを利用して、バッファオーバーフロー攻撃を引き起こし、プログラムの制御やクラッシュ、変更を可能にする。
アプリケーションベンダーはさまざまなパッチを提供して、バッファオーバーフロー攻撃に対処してきた。だが企業が社内で開発したアプリケーションはどうだろうか。自社開発のアプリケーションも、商用アプリケーションと同様にバッファオーバーフロー攻撃を受ける可能性がある。バッファオーバーフロー攻撃の仕組みを理解し、自社開発のアプリケーションの導入前に脆弱(ぜいじゃく)性テストを実行することが重要だ。
併せて読みたいお薦め記事
メモリの脆弱性
- 「RAMBleed」とは? 物理メモリからデータを盗む新手の手口
- Windows 10のエクスプロイト対策、3つの重要機能とは
- 「Meltdown」と「Spectre」は本当にCPUの脆弱性か、それとも単なる欠陥か
バッファオーバーフロー攻撃を知る
バッファオーバーフロー攻撃の種類
バッファオーバーフロー攻撃は、プログラムやプロセスが使用するメモリ内でのバッファの位置に応じて、以下の4種類を利用した攻撃に分類できる。
スタック
「スタック」とは、関数呼び出しに関するデータを格納するための、連続するメモリ領域だ。具体的には関数パラメータやローカル変数の他に、スタックフレーム(呼び出したデータの集合)やスタックポインタ(データの格納場所を示す情報)などスタックを操作するための管理情報も格納する。スタックベースのバッファオーバーフロー攻撃は、プログラムやプロセスを悪用して、入力情報をスタックに不正に格納する。
ヒープ
Copyright © ITmedia, Inc. All Rights Reserved.