Confira !!
Um engenheiro da Microsoft está propondo o Trampoline File Descriptor "TRAMPFD" como uma nova API do kernel para lidar com segurança com o código de trampolim nos sistemas. Já existem preocupações sobre as possíveis implicações no desempenho, mas parece haver algum interesse nessa abordagem.
O TRAMPFD visa proteger melhor o código do trampolim usado por pessoas como funções aninhadas do GCC e a biblioteca Foreign Function Interface (libffi), onde as páginas com as instruções tendem a ser mapeadas com permissões de execução. Embora existam módulos de segurança Linux e SELinux que tentam se proteger de páginas que possuem permissões de gravação e execução, Madhavan Venkatarama, da Microsoft, tem como objetivo fornecer uma maneira de executar trampolins com segurança, sem abrir exceções de segurança e reduzir ainda mais a superfície potencial de ataque.
O TRAMPFD visa fornecer uma API do kernel apoiada por descritores de arquivos anônimos que podem ser usados para criar e executar trampolins.
O kernel cria o mapeamento de trampolim sem nenhuma permissão. Quando o trampolim é executado pelo código do usuário, ocorre uma falha na página e o kernel assume o controle. O kernel reconhece que esta é uma invocação de trampolim. Ele configura os registros do usuário com base no contexto de registro especificado e / ou envia valores na pilha do usuário com base no contexto de pilha especificado e define o PC do usuário para o PC de destino solicitado. Quando o kernel retorna, a execução continua no PC de destino. Portanto, o kernel faz o trabalho do trampolim em nome do aplicativo.
Nesse caso, a superfície de ataque é o buffer de contexto. Um hacker pode atacar um aplicativo com uma vulnerabilidade e pode modificar o buffer de contexto. Portanto, quando o contexto de registro ou pilha é definido para um trampolim, os valores podem ter sido adulterados. Do ponto de vista da superfície de ataque, isso é semelhante à emulação de trampolim. Mas com o trampfd, o código do usuário pode recuperar o contexto de um trampolim do kernel e adicionar verificações defensivas para verificar se o contexto foi violado.
O descritor de arquivos do trampolim tem como objetivo ser personalizável, fornecer uma estrutura para futuros tipos de trampolins e fornecer outras funcionalidades do kernel.
Mais detalhes sobre o trabalho proposto no kernel do TRAMPFD e a discussão que se seguiu até o momento, através deste thread de lista de discussão do kernel .
Fonte
Até a próxima !
Nenhum comentário:
Postar um comentário