「CITビジネスグロッサリー」は、CIT経営開発が運営するビジネスラーニングプラットフォームです
バッファオーバーフロー(Buffer Overflow)攻撃は、コンピュータのメモリ管理の不備を突いた、古くからある非常に強力なサイバー攻撃の手法です。
簡単に言うと、**「用意された容器(バッファ)の容量を超えたデータを送り込み、隣接するメモリ領域を上書きしてプログラムを乗っ取る」**攻撃です。
プログラムがデータを一時的に保存する場所を「バッファ」と呼びます。例えば、10文字分しか入らない箱に20文字のデータを無理やり流し込むと、あふれた10文字が隣の重要な領域を書き換えてしまいます。
プログラムが実行される際、メモリ内には「次に実行すべき命令のアドレス(戻りアドレス)」が記録されています。
攻撃者は、意図的にバッファのサイズを超える長いデータを送り込みます。
あふれたデータによって「戻りアドレス」が、攻撃者が用意した不正なコード(シェルコード)のアドレスに書き換えられます。その結果、プログラムは本来の処理に戻らず、攻撃者の命令を実行してしまいます。
権限昇格: 管理者権限で動作しているプログラムを乗っ取られると、システム全体の制御を奪われます。
任意のコード実行: ウイルスの感染、データの窃取、バックドアの設置など、攻撃者の思い通りに操作されます。
サービス停止 (DoS): プログラムが異常終了し、システムがクラッシュすることもあります。
現代のシステムでは、以下のような複数の防御層が重ねられています。
境界チェックの徹底
C言語などの「メモリ管理を開発者に委ねる言語」を避け、JavaやPythonなど安全な言語を使用するか、適切にサイズチェックを行う。
ASLR (アドレス空間配置のランダム化)
プログラムが使うメモリのアドレスを毎回ランダムに変更し、攻撃者が標的のアドレスを特定しにくくする。
DEP / NXビット
データ保存用の領域(スタックなど)でのコード実行を禁止する。
スタックカナリア
戻りアドレスの直前に「カナリア」と呼ばれる特殊な値を置き、それが書き換わっていないかチェックする。
バッファオーバーフローは、OSの脆弱性アップデートが頻繁に行われる理由の大きな一つでもあります。