セキュリティテスト-バッファオーバーフロー
バッファオーバーフローは、プログラムが意図したよりも多くのデータを一時データストレージ領域(バッファ)に格納しようとしたときに発生します。バッファは有限量のデータを含むように作成されるため、余分な情報が隣接するバッファにオーバーフローし、バッファに保持されている有効なデータが破損する可能性があります。
例
これは、バッファオーバーフローの典型的な例です。これは、動作を制御するために外部データに依存する最初のシナリオによって引き起こされる単純なバッファオーバーフローを示しています。ユーザーが入力するデータの量を制限する方法はありません。プログラムの動作は、ユーザーが入力した文字数によって異なります。
...
char bufr[BUFSIZE];
gets(bufr);
...
ハンズオン
Step 1−インターネットにアクセスするには、名前と部屋番号でログインする必要があります。これがシナリオのスナップショットです。
Step 2 −以下に示すように、BurpSuiteで「非表示のフォームフィールドの再表示」も有効にします。
Step 3−ここで、名前と部屋番号のフィールドに入力を送信します。また、部屋番号フィールドにかなり大きな番号を挿入しようとします。
Step 4−非表示フィールドは以下のように表示されます。[利用規約に同意する]をクリックします。
Step 5 −攻撃は成功し、バッファオーバーフローの結果、隣接するメモリ位置の読み取りが開始され、以下に示すようにユーザーに表示されます。
Step 6−表示されたデータを使用してログインしましょう。ロギング後、以下のメッセージが表示されます-
予防メカニズム
- コードレビュー
- 開発者トレーニング
- コンパイラツール
- 安全な機能の開発
- 定期的なスキャン