O GWP-ASan e o KFENCE são ferramentas probabilísticas de detecção de memória para o espaço do usuário e o kernel, respectivamente. Quando ativado, um pequeno número de alocações é protegido com páginas de memória adicionais ao redor da memória alocada. Isso permite detectar overflows de buffer e uso após a liberação com uma sobrecarga de desempenho insignificante. Mesmo com uma taxa de amostragem pequena para as alocações protegidas, quando implantadas em grande escala, elas podem detectar com eficiência bugs de segurança de memória. Desde a introdução, essas ferramentas ajudaram a identificar vários bugs da plataforma e provaram ser uma ferramenta valiosa para melhorar a estabilidade e a segurança. Recomendamos que os fornecedores ativem e monitorem de perto os bugs detectados nos dispositivos dos usuários finais.
Os desenvolvedores precisam verificar a presença de falhas verificando /data/tombstones
, logcat
ou monitorando o pipeline DropboxManager
do fornecedor em busca de bugs do usuário final.
Para saber mais, consulte nossos documentos sobre depuração de código nativo do Android.
Depuração de código nativo da Plataforma AndroidGWP-ASan para detectar bugs de segurança da memória do espaço do usuário
O GWP-ASan foi introduzido no Android 11 para alocações de heap
do espaço do usuário. Quando o GWP-ASan detecta um bug, ele registra um relatório de erros com Cause: [GWP-ASan]:
e encerra o processo. Os relatórios de bugs
contêm outras informações de alocação e desalocação que facilitam
a identificação da causa raiz.
O GWP-ASan é ativado aleatoriamente na inicialização para 1% dos processos ou
apps do sistema e para aplicativos que definem o android:gwpAsanMode
no
arquivo AndroidManifest.xml
.
KFENCE para detectar bugs de segurança de memória do kernel
O Android 12 introduziu o KFENCE para alocações de heap
do kernel. Quando o KFENCE detecta um bug, ele registra um relatório de falha inicializando
com BUG: KFENCE,
, desativa as páginas de proteção e continua a execução.
Isso permite um mecanismo de detecção de bugs do kernel que impacta minimamente a experiência do
usuário.
Para saber mais sobre o KFENCE, consulte a documentação disponível em https://www.kernel.org.