web-dev-qa-db-ja.com

実行無効ビットとは何ですか?

X86 CPUでの Execute Disable Bit(EDB) に関する記事を読みました。これは、より広く NXビット として知られています。 IntelはそれをXDとも呼んでいます。

したがって、Windows XPはこのハードウェア機能をサポートしています。そうです!しかし、選択したLinuxディストリビューションがそれをサポートしているかどうかをどうやって知ることができますか?

このBIOSオプションを有効にすると、どのような問題が発生する可能性がありますか?

この機能がLinuxでどのように処理されるかについては、どこで詳しく読むことができますか?

2
Vorac

選択したディストリビューションがそれをサポートしているかどうかはどうすればわかりますか?

それはカーネルにありました 2004年以来 、それで、何らかの方法でそれらはすべてそうします。周りを見回すときは、RedHatに焦点を当てた古い記事は避けてください。約1年前にパッチが適用されていたようです。

1
goldilocks

この機能は、一般的に NXビット として知られています。 [〜#〜] mmu [〜#〜] のメモリページのフラグであり、ページが実行可能でないことを示します。コードがそのページにジャンプすると、セグメンテーション違反が発生しますUNIX用語)が発生します。

コードは通常変更できないため、サポートされている一般的な衛生対策は、書き込み可能なページを読み取り専用としてマークすることです。これはすべての状況で実行できるわけではありません。たとえば、 ジャストインタイムコンパイル が妨げられます。利点は、プログラムがデータを含むメモリ領域にジャンプする原因となる特定のバグを防ぐことです。これは、ユーザーがコードを挿入してプログラムを悪用できるため、そのデータがユーザーによって提供される場合は特に悪いことです。したがって、NXビットにより、セキュリティの脆弱性に対するいくつかのエクスプロイトが機能しなくなります。ただし、セキュリティ対策として、これは万能薬ではありません。 リターン指向プログラミング など、回避するための手法があります。 NXの主な有用性は、バグをより簡単に検出することです。

あなたが引用する記事はやや誤解を招くことに注意してください。 NXは、多くの既存のエクスプロイトが機能するのを防ぎますが、エクスプロイトとウイルスは時代に適応しています。その記事のもう1つのエラーは、NXがBIOSの機能ではなく、CPUの機能であるということです(一部のBIOSは無効にできますが、無効にすることの利点はわかりません)。

ウィキペディアのページ には、UNIXバリアントがNXのサポートを提供する詳細な要約があります。アプリケーションは、 mmap システムコールを呼び出すことにより、ページが実行可能かどうかを制御できます。