A empresa Google analisou a eficácia do uso no código em C++ do tipo MiraclePtr (raw_ptr) em vez de ponteiros comuns para prevenir vulnerabilidades causadas por acessos a áreas de memória já liberadas (use-after-free). O MiraclePtr fornece uma camada sobre os ponteiros, realizando verificações adicionais e encerrando a execução em caso de detecção de acessos a áreas de memória liberadas. O suporte ao MiraclePtr foi habilitado por padrão nas plataformas Windows e Android em maio de 2022 (no Chrome 102), e nas plataformas ChromeOS, Linux e macOS em junho de 2023. A proteção baseada em MiraclePtr no Chrome é aplicada a todos os processos, exceto ao processo responsável pela renderização (renderer).
Após estudar a dinâmica de envio de relatórios de vulnerabilidades e encerramentos inesperados, bem como analisar incidentes de segurança e resultados de testes de fuzzing, chegou-se à conclusão de que a implementação do MiraclePtr forneceu proteção contra 57% das vulnerabilidades do tipo use-after-free, graças à migração para o uso do MiraclePtr em campos de classes e parâmetros de chamadas de retorno. Além disso, menciona-se que 5 das 6 vulnerabilidades críticas identificadas no ano passado na versão estável do Chrome foram reconhecidas por meio do estudo dos relatos de encerramentos inesperados relacionados ao uso do MiraclePtr.
O custo da aplicação do MiraclePtr é o aumento no consumo de memória, pois os ponteiros requerem armazenamento adicional de 4 bytes para o contador de referências. O consumo de memória do processo principal do navegador ao usar o MiraclePtr aumenta em 5,5-8% nas compilações para sistemas desktop e em 2% na versão para Android. O aumento médio de consumo para todos os processos é estimado entre 1-3%. Além disso, ao utilizar o MiraclePtr, foram observadas regressões isoladas que levam a uma diminuição no desempenho, mas não estão relacionadas a métricas-chave, como tempo de carregamento e renderização da página. Das regressões identificadas, destaca-se um atraso de 1,5% na primeira entrada no Chrome OS, uma desaceleração de 1,5% na abertura de abas na plataforma Android, bem como um aumento na probabilidade de atraso na entrada devido à concorrência no thread principal (aumento na probabilidade em 10% no percentil 99).
Fonte: opennet.ru
