새니타이저는 컴파일러에 의해 삽입된 추가 계측을 통해 런타임 시 프로그램의 실수를 찾아내는 동적 분석 도구 그룹입니다. 여기에는 메모리 안전 문제를 감지하는 것이 포함됩니다. Android가 지원하는 다음과 같은 새니타이저를 사용하는 것이 좋습니다.
하드웨어 지원 AddressSanitizer (HWASan)
HWASan은 메모리 안전 문제를 감지하는 기본 새니타이저입니다. ARM64가 필요하며 다음을 감지합니다.
- 스택 및 힙 버퍼 오버플로우 또는 언더플로우
- 프리 후 힙 사용
- 범위를 벗어난 스택 사용
- 반환 후 스택 사용
- 더블 프리 또는 와일드 프리
Address Sanitizer (ASan)
ASan은 HWASan과 비슷한 도구입니다. 더 많은 플랫폼에서 작동하지만 Android에서는 지원되지 않습니다.
KernelAddress Sanitizer (KASan)
KASan은 위 사용자 공간 도구의 커널 버전입니다. 동일한 컴파일러 구현을 공유합니다. KASAN과 ASan/HWASan은 한 도구가 커널에 적용되고 다른 도구는 사용자 공간에 적용되므로 상호 보완적입니다. 빌드 구성 수를 줄이고 테스트 매트릭스를 줄이려면 두 가지를 동시에 사용 설정하는 것이 좋습니다.
UndefinedBehavior Sanitizer (UBSan)
UBSan은 컴파일 시간을 계측하여 다양한 유형의(메모리 안전 이외) 정의되지 않은 동작을 검사합니다. 여기에는 부호 있는 정수 및 부호 없는 정수 오버플로 검사(IntSan), 정적 크기 배열의 범위 검사(BoundsSan) 및 많은 다른 유형의 정의되지 않은 동작이 포함됩니다. IntSan 및 BoundsSan은 프로덕션의 보안 완화 역할로 사용 설정하는 데도 적합합니다.