Linux x86_64Memória#447
memfd_secret
Cria um arquivo anônimo em memória cujo conteúdo não é acessível nem pelo próprio kernel após o mapeamento.
Descrição
Vai além de `memfd_create`: a memória alocada é removida do mapeamento direto do kernel, protegendo-a contra leitura acidental por bugs em drivers, dumps de crash do kernel, e certas classes de ataques de side-channel — pensada para armazenar segredos criptográficos sensíveis.
man 2Desde o kernel 5.14
Nota
Precisa ser habilitada explicitamente via o parâmetro de boot `secretmem.enable=1` em algumas distribuições.
Assinatura
int memfd_secret(unsigned int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| flags | unsigned int | Reservado para uso futuro; deve ser 0. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | flagsunsigned int |
Valor de retorno
Um novo descritor de arquivo em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EINVAL(22)
- Argumento inválido.
- ENOMEM(12)
- Memória insuficiente para completar a operação.
- ENOSYS(38)
- Chamada de sistema não implementada nesta versão do kernel.