Voltar à lista
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âmetroTipoDescrição
flagsunsigned intReservado para uso futuro; deve ser 0.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1flagsunsigned 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.

Relacionadas