Voltar à lista
Linux x86_64Memória#453

map_shadow_stack

Aloca uma shadow stack de hardware (Intel CET) para proteção contra ataques de ROP (Return-Oriented Programming).

Descrição

Parte do suporte a Control-flow Enforcement Technology (CET) em CPUs recentes: mantém uma pilha de retorno paralela, gerenciada por hardware, que detecta se um endereço de retorno na pilha normal foi corrompido por um ataque de sobrescrita de buffer.

man 2Desde o kernel 6.6

Nota

Exige suporte de hardware (Intel CET) e um kernel/toolchain com shadow stacks habilitadas; retorna ENOSYS em sistemas sem suporte.

Assinatura

long map_shadow_stack(
    unsigned long addr,
    unsigned long size,
    unsigned int flags
);

Parâmetros

ParâmetroTipoDescrição
addrunsigned longEndereço sugerido para a shadow stack, ou 0 para o kernel escolher.
sizeunsigned longTamanho da shadow stack.
flagsunsigned intSHADOW_STACK_SET_TOKEN, entre outras.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1addrunsigned long
rsiargumento 2sizeunsigned long
rdxargumento 3flagsunsigned int

Valor de retorno

Endereço onde a shadow stack foi criada 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