새니타이저는 컴파일러에 의해 삽입된 추가 계측을 통해 런타임 시 프로그램의 실수를 찾아내는 동적 분석 도구 그룹입니다. 여기에는 메모리 안전 문제를 감지하는 것이 포함됩니다. 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은 프로덕션의 보안 완화 역할로 사용 설정하는 데도 적합합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Sanitizers\n\n| **Note:** This page talks about sanitizers for Android platform development. For sanitizers for app development, refer to the [NDK documentation](https://developer.android.com/ndk/guides/memory-debug).\n\nThe sanitizers are a group of dynamic analysis tools that find mistakes in\nprograms at runtime through additional instrumentation that was inserted by the\ncompiler. This includes detecting\n[memory safety](/docs/security/test/memory-safety) issues. Android supports\nand strongly recommends usage of the following sanitizers:\n\nHardware-assisted AddressSanitizer (HWASan)\n-------------------------------------------\n\n[HWASan](/docs/security/test/hwasan) is the main sanitizer to provide detection\nfor memory safety problems. It requires ARM64 and can detect:\n\n- Stack and heap buffer overflow or underflow\n- Heap use after free\n- Stack use after scope\n- Stack use after return\n- Double free or wild free\n\nAddress sanitizer (ASan)\n------------------------\n\n[ASan](/docs/security/test/asan) is a tool similar to HWASan. It works on more\nplatforms, but is unsupported on Android.\n\nKernelAddress sanitizer (KASan)\n-------------------------------\n\n[KASan](/docs/security/test/kasan) is the kernel counterpart of the userspace\ntools above. It shares the same compiler implementation. KASan and ASan/HWASan\nare complementary as one tool applies to the kernel and another to userspace.\nWe recommend enabling both at the same time to reduce the number of build\nconfigurations and to reduce the testing matrix.\n\nUndefinedBehavior sanitizer (UBSan)\n-----------------------------------\n\n[UBSan](/docs/security/test/ubsan) performs compile-time instrumentation to\ncheck for various types of (non memory-safety) undefined behavior. This includes\nsigned and unsigned integer overflow checking (IntSan), bounds checks for\nstatically-sized arrays (BoundsSan), and lots of other types of undefined\nbehavior. IntSan and BoundsSan are also suitable for enabling in production as a\nsecurity mitigation."]]