[ネットワークセキュリティ]さまざまなシステムセキュリティの脅威

1845 ワード

バッファオーバーフロー

  • プロセスメモリ領域では、バッファに値を入力することで、システムを停止したり、任意の操作を行ったりすることができます.
  • バッファオーバーフローの概要


    スタックバッファオーバーフロー

  • ターゲットは、ルート権限で実行するSetUIDが設定されたプログラムで、合計
  • 入力値に許容可能バッファより大きい値を入力し、ルート権限で任意の攻撃コードを実行します.
    原理
  • のプログラムで関数を実行すると、スタックは、前の関数に戻るアドレス(関数で返すときにその値とともに返すアドレスを呼び出す)→バッファに大きな値を入れると、そのスタック領域を侵す→戻るアドレスがある場所にShellコードや他のプログラムのアドレスを入れると
  • が実行される.

    ヒップバッファオーバーフロー

  • HIPデータ領域のバッファオーバーフロー
  • これは
  • スタックオーバーフローほど一般的ではありません.
  • プログラム関数ポインタは、
  • 動的メモリ割り当て接続(malloc高度データ)を上書きすることによって操作される.
  • バッファオーバーフロー応答


    スタック保護


    戻りアドレスと変数の間に
  • という完全性チェック値を挿入します.
  • オーバーフロー値が変化し、戻りアドレスは呼び出されません.
  • この技術は
  • gccなどの各種コンパイラに反映され更新された.
  • スタックバッフル

  • 関数が開始されると、戻りアドレスはグローバルRETという特殊なスタックに保存されます.
  • 関数が終了すると、スタックのRET値と記憶値が異なる場合はオーバーフローとみなされ、プログラムの実行が停止します.
  • ASLR(Address Space Layout Randomization)

  • メモリ攻撃を防ぐため、アドレス空間を乱設する.
  • が実行されるたびに、メモリアドレスを変更することによって、バッファオーバーフローによる特定のアドレス呼び出しが阻止される.
  • Linuxでは、次のように設定できます.
  • echo 2 > /proc/sys/kernel/randomize_va_space

    実行不可領域

  • Solaris 2.7以降の/etc/systemファイルで、noexec user stack、noexec user stack logを1に設定して
  • を有効にします.
  • スタックおよびhipを実行不可能領域にする.
    NXBIT/DEP:NX-BIT(Never eXecute Bit、実行防止ビット):データ実行予防(DEP)、データ領域でコード実行権限を剥奪する
  • https://itwiki.kr/w/%EB%B2%84%ED%8D%BC_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C%EC%9A%B0
    https://c0wb3ll.tistory.com/entry/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%B3%B4%ED%98%B8-%EA%B8%B0%EB%B2%95-NX-Bit