HWASan, ASan e KASAN

Hardware Address Sanitizer (HWASan), Address Sanitizer (ASan) e Kernel Address Sanitizer (KASAN) são um conjunto de ferramentas de detecção de erros de memória que devem ser usadas durante o desenvolvimento.

Eles inserem instrumentação do compilador para cada operação de memória que adiciona uma sobrecarga significativa -- 2x CPU, 15-30% RAM (ASan: 100% RAM), 50% do tamanho do código, o que os torna inadequados para uso em produção.
Como a instrumentação é inserida para cada operação de memória, eles detectam uma variedade maior de bugs de segurança de memória, incluindo aqueles aplicáveis ​​à pilha e globais. Isso complementa as ferramentas de detecção de heap descritas nas seções acima.

Os desenvolvedores devem verificar a presença de falhas verificando /data/tombstones ou logcat para relatórios de bugs.

HWASan e ASan para detectar bugs de segurança de memória no espaço do usuário

No arm64 recomendamos o uso de HWASan , enquanto para o arm de 32 bits e para plataformas não Arm recomendamos o uso do ASan . Eles fornecem funcionalidade equivalente e devem ser usados ​​para detectar bugs de segurança de memória no código do espaço do usuário.

Ativá-los requer uma compilação separada, pois os binários não são compatíveis com versões sem endereço limpo. Para habilitar o HWASan, defina SANITIZE_TARGET=hwaddress no ambiente de compilação ou simplesmente use os destinos com sufixo _hwasan- .
Para obter mais informações sobre HWASan e ASan, consulte a documentação.

Desinfetante de Endereços Desinfetante de Endereços

KASAN para detectar bugs de segurança de memória do kernel

KASAN é a contrapartida 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.