Desinfetantes

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

HWAddress Sanitizer (HWASan)

HWASan é o principal desinfetante para fornecer detecção de problemas de segurança de memória. Requer ARM64 e pode detectar:

  • Estouro ou estouro do buffer de pilha e heap
  • Uso de pilha depois de livre
  • Uso da pilha após o escopo
  • Uso da pilha após o retorno
  • Duplo grátis ou livre selvagem

Desinfetante de endereço (ASan)

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

KernelAddress Sanitizer

KASan é a contraparte do kernel das ferramentas de espaço do usuário acima. Ele compartilha a mesma implementação do compilador. KASAN e ASan/HWASan são complementares, pois uma ferramenta se aplica ao kernel e outra ao espaço do usuário. Recomendamos habilitar ambos ao mesmo tempo para reduzir o número de configurações de compilação e reduzir a matriz de teste.

Desinfetante de comportamento indefinido (UBSan)

O UBSan executa instrumentação de tempo de compilação para verificar vários tipos de comportamento indefinido (sem segurança de memória). Isso inclui verificação de estouro de inteiro assinado e não assinado (IntSan), verificações de limites para matrizes de tamanho estático (BoundsSan) e muitos outros tipos de comportamento indefinido. IntSan e BoundsSan também são adequados para habilitar na produção como uma mitigação de segurança.