Preparaty do dezynfekcji

Sanitaryzery to grupa dynamicznych narzędzi do analizy, które wykrywają błędy w programach w czasie wykonywania za pomocą dodatkowego instrumentowania wstawionego przez kompilator. Obejmuje to wykrywanie problemów z bezpieczeństwem pamięci. Android obsługuje i zdecydowanie zaleca używanie tych środków do dezynfekcji:

AdresSanitizer wspomagany przez sprzęt (HWASan)

HWASan to główny oczyszczacz, który wykrywa problemy z bezpieczeństwem pamięci. Wymaga systemu ARM64 i może wykrywać:

  • przepełnienie lub niewykorzystanie bufora stosu i kupy
  • Użycie sterty po zwalnianiu
  • Użycie stosu po zakresie
  • Użycie stosu po powrocie
  • podwójne wolne lub dzikie wolne,

Sanitaryzator adresów (ASan)

ASan to narzędzie podobne do HWASan. Działa na większej liczbie platform, ale nie jest obsługiwany na Androidzie.

KernelAddressSanitizer (KASan)

KASan to odpowiednik narzędzi w przestrzeni użytkownika w jądrze. Ma ona tę samą implementację kompilatora. KASan i ASan/HWASan uzupełniają się, ponieważ jedno narzędzie dotyczy jądra, a drugie przestrzeni użytkownika. Zalecamy włączenie obu opcji jednocześnie, aby zmniejszyć liczbę konfiguracji kompilacji i matrycy testów.

Sanitaryzator UndefinedBehavior (UBSan)

UBSan wykonuje instrumentację w czasie kompilacji, aby sprawdzić różne typy niezdefiniowanego zachowania (nie związanego z zabezpieczeniami pamięci). Obejmuje to sprawdzanie przepełnienia podpisanych i niepodpisanych liczb całkowitych (IntSan), sprawdzanie granic dla tablic o statycznym rozmiarze (BoundsSan) oraz wiele innych typów niezdefiniowanego zachowania. IntSan i BoundsSan nadają się też do włączenia w produkcji jako środek zapobiegający naruszeniom bezpieczeństwa.