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.