バッファオーバーフローとは、メモリ上の一時的なデータ領域(バッファ)に許容量を超えるデータが入力されることで生じる脆弱性です。この脆弱性を悪用した「バッファオーバーフロー攻撃」では、システムのクラッシュや不正コードの実行など、重大なリスクを引き起こす可能性があります。
攻撃手法は主に「スタック領域型」「ヒープ領域型」「静的領域型」の3種類に分類されます。
- スタック領域型:プログラムの実行に必要な情報が保存されている領域を標的にした攻撃
リターンアドレスが上書きされ、悪意あるコードが実行される恐れあり
- ヒープ領域型 :プログラムの実行時に必要に応じて、メモリの確保や開放をする領域を標的にした攻撃
過剰なメモリ使用を引き起こし、プログラムの動作を妨害する
- 静的領域型 :グローバル変数など、複数の関数に用いられる変数を格納する領域を標的にした攻撃
ジャンプアドレスを書き換え、悪意あるコードを実行させる恐れあり
利用者はOSやソフトウェアを最新の状態に保ち、アンチウイルスソフトを導入することで、これらの攻撃を防ぐことができます。また開発者側では、データの入力サイズ制限、Javaなどメモリを直接操作しない言語の使用、安全なライブラリの活用、脆弱性診断の実施により、バッファオーバーフローのリスクを軽減できます。