Check point lançou um novo mecanismo Safe-Linking contra links perigosos

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

Check point lançou um novo mecanismo Safe-Linking contra links perigosos
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.

O que está sendo falado no blog

Post Views: 292

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.