答え1
バッファオーバーフローの悪用の可能性は、周囲のコードによって大きく異なります。たとえば、スタックカナリアなどの他の緩和技術はありますか?ただし、DEP/W^X のみを検討している場合は、通常、それを悪用する可能性があります。
これを利用する方法は、主にバッファオーバーフローの種類によって異なります。 NOPスライドの使用に関する言及を見ると、簡単スタックベースのバッファオーバーフロー。この場合、次のようなものを使用できます。リターン指向プログラミング(ROP)またはジャンプ指向プログラミング(JOP)。これらの技術は、実行可能とマークされたメモリ部分に存在するコードを再利用する。したがって、実行可能で書き込み可能とマークされたメモリは不要です。
これらのコード再利用攻撃を軽減する1つの技術は次のとおりです。制御フロー整合性(CFI)調べる。この緩和は、コードが既知の「良好な」パスを介してのみ流れるようにしようとします。近年、これは次の会社のコンパイラのサポートなど、より多くの主流のサポートを受け始めました。クラン/llvm。