A pilha pode ser trocada para o disco no Linux e pode ser impedida?

1

No Linux, é possível que as páginas de memória que contêm a pilha do processo sejam trocadas para o disco? Em caso afirmativo, existe uma maneira de evitar isso, seja em tempo de compilação ou em tempo de execução.

Estou perguntando por causa de uma discussão no GitHub sobre possíveis vazamentos de segredos de variáveis locais na pilha

Caso uma resposta para essa questão não dependa apenas do kernel, mas também dependa da toolchain do userspace em uso (libc, dynamic linker etc.), minha pergunta é sobre GNU / Linux e Android em particular.

    
por FSMaxB 29.09.2017 / 15:04

1 resposta

3

No Linux, (quase) toda a memória de um processo pode ser trocada, incluindo o heap e a pilha.

No entanto, é possível bloquear páginas de memória na RAM física, para que não possam ser trocadas. Isso é feito usando a mlock chamada de sistema (ou mlockall para bloquear todos da memória de um processo). Essa é uma operação privilegiada, portanto, o processo precisa ter o recurso apropriado, CAP_IPC_LOCK (consulte gnome-keyring-daemon para um exemplo disso: /sbin/getcap /usr/bin/gnome-keyring-daemon ).

    
por 29.09.2017 / 15:56