web-dev-qa-db-ja.com

Grsecurityサブジェクトモードx

Hardened GentooのGrsecurityについて調査を行っています。 http://en.wikibooks.org/wiki/Grsecurity を参照してください。具体的には、サブジェクトモードxが違いを生む例を見つけようとしています。

ウィキで述べたように:サブジェクトモードx:このサブジェクトの実行可能な匿名共有メモリを許可します。

今、カーネルは拒否します

mem = mmap(NULL, MAP_SIZE, PROT_WRITE|PROT_EXEC, MAP_ANONYMOUS | MAP_SHARED, -1, 0);

と同様

mem = mmap(NULL, MAP_SIZE, PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0);
mprotect(mem, MAP_SIZE, PROT_EXEC);

またはその逆。一方

mem = mmap(NULL, MAP_SIZE, PROT_READ|PROT_EXEC, MAP_ANONYMOUS | MAP_SHARED, -1, 0);

正常に動作します。

上記のすべてについて、grsecがアクティブであるかどうかは関係ありません。アクティブである場合は、サブジェクトモードxが設定されているかどうかは関係ありません。カーネルは、書き込み可能(または書き込み可能)であった共有メモリを許可しません。実行可能。

したがって、サブジェクトモードxは何に適していますか?また、どのコードに違いがありますか?

3
countermode

Brad Spenglerによると、サブジェクトモードxはSystem V共有メモリにのみ適用されます。 http://forums.grsecurity.net/viewtopic.php?f=5&t=3935 を参照してください。その上、検討中のバイナリに対してMPROTECTが無効にされていない限り、PaXが発生します。

1
countermode