バッファオーバーフローとは?
バッファオーバーフローとは、システムが処理できるデータ以上大容量のデータをシステムに送り付け、システムに誤作動を引き起こさせる悪意のあるサイバー攻撃の手口のひとつです。バッファオーバーフローでは具体的にどんな方法で攻撃が実行されるのでしょうか。また、どのような対策が必要でしょうか。
今回は、バッファオーバーフローの概要、仕組み、被害事例、対策をまとめます。
バッファオーバーフローの概要
日常生活でもよく大量の仕事が舞い込んだ時に「バッファを超えた」などと口にしますが、システムにもバッファが存在します。システムにおけるバッファとは、プログラムを実行するための領域のことをさします。
システム上では、プログラムを実行するために、実行命令が収納される「コード領域」、計算や操作のためのデータを保管する「ヒープ領域」、一時的にデータを保管する「スタック領域」などの領域があり、バッファオーバーフローでは、このバッファをターゲットに処理できない大容量のデータが送りつけられます。
処理能力を超えたデータが送りつけられることによって、コンピュータは誤作動を引き起こします。誤作動によってコンピュータを混乱させるだけでなくバッファオーバーフローでは、悪意のある攻撃者が脆弱性を狙ってシステムを乗っ取ります。また、乗っ取られたシステムが踏み台にされて、他のシステムへとサイバー攻撃を拡大させていきます。
バッファオーバーフローの仕組み
バッファオーバーフローによる誤作動は、バッファを超えたデータが他のデータを書き換えてしまうことが主な原因です。バッファオーバーフローでは、ヒープ領域やスタッグ領域を狙って攻撃が実行されます。
ヒープ領域
ヒープ領域を狙ったバッファオーバーフローはヒープベースバッファオーバーフローとよばれています。
ヒープ領域は、計算や操作のためのデータを保管するのが役割ですが、ヒープ領域のデータを追加したり削除したりする作業をスピーディにおこなうために、ポインタのつなぎ変えのみで素早く実行できるデータ構造(双方向リスト)が採用されていることが多くあります。
ヒープベースバッファオーバーフローでは、悪意のある攻撃者がポインタのつなぎ変えのアルゴリズムの脆弱性を狙って、不正な書き込みを行います。
スタッグ領域
スタッグ領域を狙ったバッファオーバーフローはスタックベースバッファオーバーフローとよばれています。プロフラム実行時には、関数の呼び出しに必要なデータをスタッグフレーム単位で管理するために、プログラムごとにスタッグ領域が用意されています。
スタッグフレームは、関数で使用するデータの一時的な保管場所である「バッファ」の高位に、ローカル変数、ローカル変数にアクセスするためにアドレスになるebpレジスタ、高位のアドレスから関数実行後の戻りアドレスとなるリターンアドレスなどが収納されています。
スタックベースバッファオーバーフローでは、悪意のある攻撃者が、スタッグ領域のバッファに対して処理できない大量のデータが送りつけます。スタッグ領域の脆弱性によって、スタッグフレームの中でバッファの高位にあるデータが上書きされてしまうことを狙います。
たとえば、スタッグフレームの中でバッファの高位にあるリターンアドレスが書き換えられてしまうと、プログラムが破壊されたり、コンピュータを乗っ取られてしまう可能性があります。
バッファオーバーフローの被害事例
バッファオーバーフローは、ソフトウェアの脆弱性を狙った代表的なサイバー攻撃であり、多くの被害を引き起こしてきます。Microsoft社のサーバーやFacebookへの攻撃など、世界規模で実行されたケースもみられます。企業だけでなく公的な機関が攻撃を受けるケースもあり、日本では中央省庁のホームページが改ざんされた被害事例があります。
また、バッファオーバーフローによって入り込んだマルウェアによってシステムが乗っ取られたり、他のWebサイトやサーバーに対して攻撃を拡大するケースもありサイバー攻撃の踏み台にされる事例もみられます。
バッファオーバーフローの対策
現在開発されているWebアプリケーションの多くは、直接メモリ操作ができないPHPやPerl、Javaといったプログラミング言語で作成されているため、バッファオーバーフロー攻撃を受ける可能性は少ないといえます。
問題は、直接メモリにアクセスできるプログラミング言語(CやC++、アセンブラなど)で記載されたプログラムです。直接メモリにアクセスできる言語はできるだけ使用しないようにするとともに、バッファオーバーフローの脆弱性がないことを厳重にチェックする必要があります。
セキュリティ対策のために導入しているソフトや修正パッチは常に更新することや、IDSなどのセキュリティシステムを導入することもバッファオーバーフロー対策として有効です。
まとめ
バッファオーバーフローの概要、仕組み、被害事例、対策をまとめました。バッファオーバーフローによってシステムが乗っ取られたり、サイバー攻撃の踏み台にされたり甚大な被害が起きる可能性があります。バッファオーバーフローの概要を理解し、適切な対策をとりましょう。
また、サイバー攻撃は日々巧妙化していますので、最新の状況や事例についての情報を掴んでおく必要があります。