De acordo com Brad Spengler, o modo de assunto x se aplica somente à memória compartilhada do System V, consulte link . Além disso, o PAX ataca, a menos que o MPROTECT esteja desativado para o binário em consideração.
Estou conduzindo algumas pesquisas sobre o Grsecurity no Hento Gentoo, veja o link . Para ser mais específico, estou tentando encontrar um exemplo em que o modo de assunto x faça diferença.
Como dito no wiki: subject mode x: Permite a memória compartilhada anônima executável para este assunto.
Agora, o kernel rejeita
mem = mmap(NULL, MAP_SIZE, PROT_WRITE|PROT_EXEC, MAP_ANONYMOUS | MAP_SHARED, -1, 0);
bem como
mem = mmap(NULL, MAP_SIZE, PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0);
mprotect(mem, MAP_SIZE, PROT_EXEC);
ou vice-versa. Por outro lado
mem = mmap(NULL, MAP_SIZE, PROT_READ|PROT_EXEC, MAP_ANONYMOUS | MAP_SHARED, -1, 0);
funciona bem.
Para todos os itens acima, não importa se o grsec está ativo ou não, e se estiver, não importa se o modo de assunto x está definido ou não - o kernel simplesmente não permite a memória compartilhada que é (ou foi ) gravável e executável.
Portanto: para que serve o modo de assunto x e para que parte do código faria diferença?
De acordo com Brad Spengler, o modo de assunto x se aplica somente à memória compartilhada do System V, consulte link . Além disso, o PAX ataca, a menos que o MPROTECT esteja desativado para o binário em consideração.
Tags grsecurity shared-memory mmap