Sanitização de dados

Os limpadores são um grupo de ferramentas de análise dinâmica que encontram erros em programas no momento da execução por meio de instrumentação adicional inserida pelo compilador. Isso inclui a detecção de problemas de segurança de memória. O Android oferece suporte e recomenda o uso dos seguintes limpadores:

Limpador de endereços assistido por hardware (HWASan)

O HWASan é o limpador principal para detectar problemas de segurança de memória. Ele requer ARM64 e pode detectar:

  • Excesso ou falta do buffer de heap e pilha
  • Uso de heap depois da liberação
  • Uso de pilha após o escopo
  • Uso de pilha após retorno
  • Double free ou wild free

Limpador de endereços (ASan)

O ASan é uma ferramenta semelhante ao HWASan. Ele funciona em mais plataformas, mas não é compatível com o Android.

Limpador de KernelAddress (KASan, na sigla em inglês)

O KASan é a contraparte do kernel das ferramentas do espaço do usuário acima. Ele compartilha a mesma implementação do compilador. O KASan e o ASan/HWASan são complementares, já que uma ferramenta se aplica ao kernel e outra ao espaço do usuário. Recomendamos ativar os dois ao mesmo tempo para reduzir o número de configurações de build e a matriz de testes.

Limpador de comportamento indefinido (UBSan)

O UBSan executa a instrumentação no momento da compilação para verificar vários tipos de comportamento indefinido (sem segurança de memória). Isso inclui verificação de overflow de números inteiros assinados e não assinados (IntSan), verificações de limites para matrizes de tamanho estático (BoundsSan) e muitos outros tipos de comportamento indefinido. O IntSan e o BoundsSan também são adequados para ativação na produção como mitigation de segurança.