1

WindowsとUnixのバッファオーバーフロー間のセキュリティ上の懸念を理解しようとしています。

私が理解しているように、各プロセスには独自のメモリスペースが与えられているため、バッファオーバーフローのWindowsハッキングをUnixで実装することはできません。これは、Windowsのプロセスがメモリスペースを共有することを意味しますか?

4

3 に答える 3

2

共有メモリスペースは、ほとんどのバッファオーバーフローエクスプロイトの理由ではありません。WindowsはWin3.0(または80286で実行されているWin 3.1)以降、共有メモリを備えていません。そのため、共有メモリモデルをサポートするWindowsが最後に出荷されてから、ほぼ20年が経過しました。

バッファオーバーフローにより、攻撃者は悪用されているプロセスのメモリを変更できます。これにより、攻撃者は、ターゲットプロセスの特権レベルを使用して、システム操作(たとえば、プロセスの開始、ダイナミックライブラリのロード、特定のユーザーの権限の変更など)を実行することを目的としています。

これは、Win *プラットフォーム、* nixプラットフォーム、およびその他の多くのプラットフォームで可能です。悪用されているOSとアプリケーションがこの試みにどのように対処しているかが、違いを生むのです。アプリケーション側では、これを回避するために通常は慎重なバッファサイズチェックが必要です。ASLR(攻撃者が害を及ぼすために呼び出す必要のある関数のアドレスを推測することを防ぐアドレス空間配置のランダム化)やDEP(攻撃者が実行可能コードをデータ領域に挿入することを防ぐデータ実行防止)などのテクノロジーが提供されますOSによって、途方もなく助けてください。OS側では、ルート/管理者としてアプリケーションを実行しないことが、おそらく最も重要な防御線です。

于 2009-10-22T00:06:04.443 に答える
2

WindowsプロセスとUnixプロセスの両方にメモリ分離があります。バッファオーバーフロー攻撃は、両方の環境で発生する可能性があります。

于 2009-10-21T23:57:06.800 に答える
1

たぶん、「バッファオーバーフローWindowsハック」の意味を明確にする必要があります。バッファオーバーフローは、必ずしも他のプロセスのコードを変更する必要はありません。

例:cin固定サイズのバイト配列への読み取りを使用して、カスタムコードを実行できます。プログラム自体がrootとして実行されている場合、UnixもWindowsもハッキングを防ぐために何もできません。つまり、メモリの分離はまったく役に立ちません。

Toddが指摘したように、WindowsとUnixはどちらもメモリ分離が可能です(これはDEPASLRと比較して非常に基本的なものです)。

于 2009-10-22T00:06:54.957 に答える