だからこのビデオの男:
https://www.youtube.com/watch?v=1S0aBV-Waeo
スタックをオーバーフローさせ、リターンアドレスを改ざんし、スタック内でポイントし、NOPスリップを使用してスタック内の実行可能コードをコピーしました
しかし、Debianシステムを含むすべての最新のLinuxシステムは、ページテーブルでNX(実行不可能)タイプのビットを使用し、そのような停止命令を使用してスタックで動作することにより、これに対する防御策があると思いましたか?または私は何かが欠けていますか?
非実行可能ページ(NXビット)はハードウェア機能です。これにより、オペレーティングシステムは実行可能なページをマークできます。プログラムが実行不可能なメモリページでコードを実行しようとすると、プロセッサに障害が発生します。
さらに、スタックが実行可能かどうかは、コンパイラオプション(および結果のバイナリ)にも依存します。最新のLinuxディストリビューションでは、実行不可能なスタック、スタックカナリア、アドレス空間配置のランダム化など、ユーザースペースバイナリの多くの強化手法が可能です。たとえば、Ubuntuユーザースペースの強化。
それがある可能ビデオ例えば行われていたとしてスタックは、可能溢れて作るために実行可能なスタックで、スタックカナリアせずにバイナリをコンパイルする(コンパイルされたプログラムを見ることができなかった/何のオプションが使用されたが、デフォルトのgccで実行可能なスタックを有効にしないでくださいこのような単純なプログラムの場合)。
さらに、SELinux(およびその他のLinuxセキュリティモジュール)は、実行可能+書き込み可能メモリ(ヒープまたはスタック)を必要とするバイナリをシステムが実行しないように構成することもできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加