A Check point lançou um novo mecanismo Safe-Linking contra links perigosos, que no futuro pode impedir esse tipo de exploração.
A Check point é um fornecedor global de soluções de segurança de TI fundada em 1993 e atua em diversos países na área de segurança para internet com produtos como o Check Point Express que é uma solução de segurança e VPN voltada para empresas de médio porte que inclui Firewall, proteção contra ataques à redes e aplicações e gerenciamento centralizado de vários firewalls.
Essa empresa lançou há alguns dias a introdução do mecanismo de segurança “Safe-Linking”, que dificulta a criação de explorações que manipulam a definição ou alteram os ponteiros para buffers atribuídos ao executar uma ligação malloc.
Check point lançou um novo mecanismo Safe-Linking contra links perigosos
O novo mecanismo “Safe-Linking” não bloqueia completamente a possibilidade de explorar vulnerabilidades, mas com sobrecarga mínima complica a criação de certas categorias de explorações, pois além do estouro do buffer explorado, é necessário encontrar outra vulnerabilidade que cause informações sobre o local da pilha na memória.
Os patches de implementação de vinculação segura foram preparados para Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) e Google TCMalloc, além de ter sido proposto modernizar a proteção no Chromium (desde 2012, o Chromium já foi integrado a soluções para o mesmo problema) técnica de proteção MaskPtr, mas a solução Checkpoint mostra melhor desempenho).
“Os patches propostos já foram aprovados para entrega na versão de agosto do Glibc 3.32 e o Safe-Linking será ativado por padrão. No uClibc-NG, o suporte à ligação segura foi incluído na versão 1.0.33 e é ativado por padrão. As alterações são aceitas no gperftools (tcmalloc antigo), mas serão oferecidas como uma opção em uma versão futura.”
Os desenvolvedores do TCMalloc recusaram-se a aceitar a alteração, citando forte sucesso de desempenho e a necessidade de adicionar testes avançados para verificar regularmente se tudo está funcionando corretamente.
Os testes realizados pelos engenheiros do ponto de verificação mostraram que o método Safe-Linking não leva a um consumo adicional de memória e o desempenho da execução de operações dinâmicas de armazenamento diminui, em média, apenas 0,02% e, no pior dos casos, 1,5%
A ativação do Safe-Linking leva à execução de 2-3 instruções adicionais de montagem com cada chamada para instruções free() e 3-4 ao chamar malloc(). O início da inicialização e a geração de valores aleatórios não são necessários.
O Safe-Linking pode ser usado não apenas para aumentar a segurança de várias implementações de heap, mas também para adicionar verificações de integridade a qualquer estrutura de dados que use uma lista de ponteiros vinculados individualmente, localizados ao lado de buffers.
O método é muito simples de implementar e requer apenas adicionar uma macro e aplicá-la aos ponteiros para o próximo bloco do código (por exemplo, para Glibc, apenas algumas linhas no código são alteradas).
“A essência do método é aplicar dados aleatórios do mecanismo de codificação de endereços ASLR (mmap_base) para proteger listas vinculadas individualmente, como Fast-Bins e TCache. Antes de aplicar o valor do ponteiro ao próximo item da lista, a conversão da máscara e a verificação do alinhamento são realizadas ao longo da borda da página de memória. O ponteiro é substituído pelo resultado da operação “(L >> PAGE_SHIFT) XOR (P)”, onde P é o valor do ponteiro e L é o local na memória em que esse ponteiro está armazenado.
Quando utilizados no sistema ASLR (Address Space Design Randomization), alguns dos bits L com o endereço base do heap contêm valores aleatórios que são usados como chave para codificar P (Eles são extraídos usando uma operação de deslocamento de 12 bits para páginas de 4096 bytes).”
Essa manipulação reduz o risco de capturar um ponteiro em uma exploração, já que o ponteiro não é armazenado em sua forma original e, para substituí-lo, é necessário saber informações sobre o local do heap.
O método é eficaz na proteção contra ataques que usam redefinição parcial de ponteiro (deslocamento de baixo byte), reescrita completa do ponteiro (redirecionamento para código do invasor) e reposicionamento da lista em um endereço não alinhado.
Como exemplo, mostra-se que o uso do Safe-Linking no malloc impediria a exploração da vulnerabilidade CVE-2020-6007 descoberta recentemente pelos mesmos pesquisadores na luz de fundo inteligente Philips Hue Bridge causada pelo excesso de buffer e permitindo controlar o dispositivo.
- Como instalar o jogo AstroMenace no Linux via Flatpak
- Como instalar o jogo Biplanes Revival no Linux via Flatpak
- Instalando o simulador de corridas Speed Dreams no Linux
- Como instalar o jogo de corrida SuperTuxKart no Linux