バッファオーバーフロー攻撃の定義
バッファオーバーフロー攻撃はセキュリティ上の 脆弱性攻撃で、 攻撃者がプログラムのバッファ(データを移動する際に使用される一時的な記憶領域)を意図的に過負荷にし、隣接するメモリ領域を上書きさせます。 これによりアプリの実行パスが変更され、ファイルが破損したり、機密データが流出したりする可能性があります。 場合によっては、攻撃者はプログラムの実行コードに巧妙な悪意のあるスクリプトを挿入することさえできます。
バッファオーバーフロー攻撃は、DDoS攻撃の最も一般的なタイプです。 プログラミング言語によっては影響を受けやすいものもあるが、ほとんどすべてのアプリケーションやウェブサーバーに影響を及ぼします。 特に、PERL、Java、JavaScript、C#には、バッファオーバーフロー攻撃に対する安全策が組み込まれています。
実際のバッファオーバーフロー攻撃の例
1988: モリス・ワームが誤ってクラッシュ アーパネット (インターネットの前身)のバッファオーバーフロー攻撃の結果として発生しました。
2019: ハッカーはボイス・オーバー・インターネット・プロトコル(VoIP)の脆弱性を悪用して、WhatsAppに対してバッファオーバーフロー攻撃を成功させ、多くのユーザーのデバイスにマルウェアを注入しました。
バッファオーバーフロー攻撃の阻止
- C/C++でコードを書くのは避けてください。これらのプログラミング言語は、メモリ内のデータへのアクセスや上書きに対する保護を提供していないからです。 代わりにPERL、Java、JavaScript、C#を使いましょう。
- バッファに対して境界チェックを実施し、実行時にそれを強制してください。
- コードを書く際には、境界チェックが行われていない標準ライブラリ関数の使用を避けてください。
- バッファオーバーフローが発生する可能性のあるバグについてコードをテストし、それらを修正してください。