Engenheiros do Google conduziram um estudo analisando 912 falhas de segurança corrigidas no navegador Chrome desde 2015 e classificadas com severidade alta ou crítica, e descobriram que 70% delas são relacionadas a problemas de alocação de memória.
Em destaque está um problema conhecido entre os programadores como “use after free”, quando um programa tenta usar uma área de memória depois ela ter sido marcado como livre para uso pelo sistema operacional.
O número é idêntico a um compartilhado pela Microsoft em fevereiro passado: seus engenheiros descobriram que 70% das correções de segurança para seus produtos eram relacionadas a problemas decorrentes do gerenciamento de memória.
O problema é tão grande que o Google estabeleceu uma nova regra a ser seguida no desenvolvimento de novos recursos para o Chrome. Engenheiros não podem violar a “regra de dois”, ou seja, seu código não pode ter mais do que duas das características abaixo:
- O código lida com entrada (informações) não confiáveis.
- O código não roda em uma sandbox (isolado do restante dos processos do sistema).
- O código é escrito em uma linguagem de programação “insegura”, como C ou C++.
C ou C++ são consideradas linguagens de programação inseguras, pois deixam nas mãos dos programadores a tarefa de gerenciar o uso de memória, incluindo a alocação de novos blocos, liberação dos que não estão mais sendo usados e manipulação de ponteiros.
Uma alternativa é o uso de linguagens mais modernas, como Rust, desenvolvida e divulgada pela Mozilla Foundation e que foi criada com a segurança, especialmente no acesso à memória, em mente.
A Microsoft tem um projeto de pesquisa chamado “Checked C”, que visa criar uma extensão da linguagem C com a segurança em mente, evitando erros de programação comuns como estouro de buffer, acesso a áreas de memória além dos limites do programa ou manuseio incorreto de tipos de dados.
Além disso, a empresa está estudando o uso de Rust e desenvolvendo sua própria linguagem de programação segura, atualmente conhecida como “Projeto Verona”.
O Google também tem esforços neste sentido, prometendo “enfrentar o problema do uso inseguro de memória” no Chrome. Uma iniciativa é o projeto MiraclePtr, que visa modificar a forma como o código lida com ponteiros para a memória, transformando falhas de segurança em simples “crashes” sem complicações mais sérias.
Além disso, a empresa também pretende explorar o uso de linguagens de programação seguras, como Rust, Swift, JavaScript, Kotlin e Java.
Fonte: ZDNet