Security-testing-testing-buffer-overflows

提供:Dev Guides
移動先:案内検索

セキュリティテスト-バッファオーバーフロー

プログラムが一時的なデータ保存領域(バッファ)に保持する予定よりも多くのデータを保存しようとすると、バッファオーバーフローが発生します。 バッファは有限量のデータを含むように作成されるため、余分な情報が隣接するバッファにオーバーフローし、バッファに保持されている有効なデータが破損する可能性があります。

バッファオーバーフローの典型的な例を次に示します。 これは、動作を制御するために外部データに依存する最初のシナリオによって引き起こされる単純なバッファオーバーフローを示しています。 ユーザーが入力したデータの量を制限する方法はなく、プログラムの動作はユーザーが入力した文字数に依存します。

   ...
   char bufr[BUFSIZE];
   gets(bufr);
   ...

ハンズオン

  • ステップ1 *-インターネットにアクセスするには、名前と部屋番号でログインする必要があります。 これがシナリオのスナップショットです。

buffer_overflow

  • ステップ2 *-以下に示すように、Burp Suiteで「非表示フォームフィールドを再表示」も有効にします-

buffer_overflow1

  • ステップ3 *-名前と部屋番号のフィールドに入力を送信します。 また、部屋番号フィールドにかなり大きな数字を入力しようとします。

buffer_overflow2

  • ステップ4 *-以下に示すように、非表示フィールドが表示されます。 [同意する]をクリックします。

buffer_overflow3

  • ステップ5 *-攻撃は成功し、バッファオーバーフローの結果、隣接するメモリ位置の読み取りを開始し、以下に示すようにユーザーに表示します。

buffer_overflow4

  • ステップ6 *-表示されたデータを使用してログインします。 ロギング後、次のメッセージが表示されます-

buffer_overflow4

予防メカニズム

  • コードレビュー
  • 開発者トレーニング
  • コンパイラツール
  • 安全な機能の開発
  • 定期的なスキャン