O Ubuntu usa recursos de segurança como DEP e ALSR?

11

Costumo ler que recursos como DEP (Data Execution Prevention) e ASLR (Address Space Layout Randomization) são fornecidos no Windows. No Windows, você tem controle sobre ativar a DEP para programas de 32 bits.

  • Esses recursos estão disponíveis no Ubuntu
  • há algo que precisamos fazer para ativar esses recursos?
hhlp
fonte

Respostas:

20

Sim para ambos. Eles estão ativados por padrão; você não precisa fazer nada para habilitá-lo. Resposta mais longa segue ...

DEP é usado por padrão no Ubuntu. Isso é feito através do bit NX, se a CPU suportar, ou emulado via segmentação de memória, se a CPU não suportar. Para mais detalhes, consulte o item de recurso de memória não executável .

O ASLR é usado por padrão no Ubuntu em qualquer segmento de memória que possa ser realocado (pilha, bibliotecas, heap, mmap). A única parte de um programa que não é realocável por padrão é a principal área de código (segmento "texto"). Os programas precisam ser especialmente compilados como PIE (executável independente da posição) para permitir isso. Muitos programas sensíveis já foram criados dessa maneira. Para mais detalhes, consulte a lista

Muitos recursos de segurança adicionais também estão disponíveis por padrão no Ubuntu. Veja a documentação dos Recursos de Segurança do Ubuntu para obter a lista completa.

Kees Cook
fonte
1

O kernel do Linux, por padrão, faz uso de tecnologias semelhantes, porém são diferentes das versões do Windows. Se o seu processador tiver a capacidade de definir o bit NX (CPUs mais modernas), o kernel fará uso dele. Há também uma implementação fraca no ASLR no kernel, e outras mais fortes podem ser instaladas, mas não são instaladas por padrão no Ubuntu.

Ryan Gooler
fonte
3
Não consigo encontrar referências no momento (o artigo da Wikipedia en.wikipedia.org/wiki/ASLR não possui os bits de comparação de entropia), mas meu entendimento é de que o Windows ASLR é mais fraco que o Linux. E se você quiser um ASLR de serviço mais pesado que o padrão do Linux, poderá criar seu próprio kernel, o PaX Patchset, que oferece maior entropia com um pequeno custo de compatibilidade.
precisa
Um bom artigo detalhando as diferenças cert.org/blogs/certcc/post.cfm?EntryID=191 , é claro, que não estaria completo com alguns debates sobre os detalhes mais delicados: D reddit.com/r/netsec/comments/ 1xjwde /…
Univ426
0

De maneira geral e simples, você precisaria de uma versão PAE do kernel para isso. Para informações detalhadas sobre este tópico, consulte este resumo .

organizar
fonte
3
O PAE é necessário apenas para o hardware NX. 64 bits já é PAE, portanto, em 32 bits, se você não estiver executando um kernel PAE, ou se seu hardware não tiver o bit NX, o Ubuntu emula o recurso NX usando segmentação de memória.
precisa
@ Kees Cook: Obrigado pela informação. OP perguntou sobre os 32 bits. No meu sistema (ubuntu 10.10 32bit) dmesgdiz NX (Execute Disable) protection cannot be enabled: non-PAE kernel. Por outro lado, quando eu corri testes de bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/... , nx parecia ser executada, mas não para o -piee -rietestes. Então é um pouco confuso para mim.
organize
2
infelizmente, o relatório dmesg da 10.10 e versões posteriores tem um erro em que não diz quando a emulação do NX é ativada no hardware com o NX, mas sem o kernel PAE: kernel.ubuntu.com/git?p=ubuntu/…
Kees Cook
1
(Isto foi reportado como um bug agora: bugs.launchpad.net/ubuntu/+source/linux/+bug/745181 )
Kees Cozinhe