2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
GWP-ASan 및 KFENCE
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
GWP-ASan과 KFENCE는 각각 사용자 공간과 커널의 확률적 메모리 감지 도구입니다. 이를 사용 설정하면 할당된 메모리를 둘러싸는 추가 메모리 페이지로 소수의 할당이 보호됩니다.
이를 통해 미미한 성능 오버헤드로 버퍼 오버플로와 use-after-free를 감지할 수 있습니다. 보호된 할당의 샘플링 레이트가 작더라도 대규모 배포 시 메모리 안전 버그를 효과적으로 감지할 수 있습니다.
도입 후 이러한 도구는 수많은 플랫폼 버그를 식별하는 데 도움이 되었으며 안정성과 보안을 개선하는 데 유용한 도구임이 입증되었습니다.
공급업체는 이를 사용 설정하여 최종 사용자 기기에서 감지된 버그를 면밀히 모니터링하는 것이 좋습니다.
개발자는 /data/tombstones
, logcat
을 확인하거나 공급업체 DropboxManager
파이프라인에서 최종 사용자 버그를 모니터링하여 비정상 종료가 있는지 확인해야 합니다.
자세한 내용은 Android 네이티브 코드 디버깅에 관한 문서를 참고하세요.
네이티브 Android 플랫폼 코드 디버깅arrow_forward
사용자 공간 메모리 안전 버그를 감지하기 위한 GWP-ASan
GWP-ASan은 Android 11에서 사용자 공간 힙 할당을 위해 도입되었습니다. GWP-ASan이 버그를 감지하면 Cause: [GWP-ASan]:
를 사용하여 비정상 종료 보고서를 기록하고 프로세스를 종료합니다. 버그 신고에는
추가 할당 및 할당 해제 정보가 포함되어 근본 원인을 더 쉽게 식별할 수
있습니다.
GWP-ASan은 시작 시 1%의 시스템 프로세스나 앱 및 AndroidManifest.xml
파일에서 android:gwpAsanMode
를 설정하는 애플리케이션에서 무작위로 사용 설정됩니다.
GWP-ASanarrow_forward
커널 메모리 안전 버그를 감지하기 위한 KFENCE
Android 12에서는 커널 힙 할당을 위한 KFENCE를 도입했습니다. KFENCE가 버그를 감지하면 BUG: KFENCE,
로 시작하는 비정상 종료 보고서를 기록하고 보호 페이지를 사용 중지하며 실행을 계속합니다.
이를 통해 사용자 환경에 최소한의 영향을 미치는 커널 버그 감지 메커니즘이 가능해집니다.
KFENCE에 관한 자세한 내용은 https://www.kernel.org에서 문서를 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 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,["# GWP-ASan and KFENCE are probabilistic memory detection tools for userspace\nand the kernel, respectively. When enabled, a small number of allocations are\nguarded with additional memory pages that surround the allocated memory.\nThis allows detecting buffer overflows and use-after-frees at a negligible\nperformance overhead. Even with a small sample rate for the guarded allocations,\nwhen deployed at scale they can effectively detect memory safety bugs.\nSince their introduction these tools have helped identify numerous platform\nbugs and have proved to be a valuable tool for improving stability and security.\nWe encourage vendors to enable them and to closely monitor the bugs detected on\nend user devices.\n\n\nDevelopers should check the presence of crashes by checking\n`/data/tombstones`, `logcat` or by monitoring the vendor\n[DropboxManager](https://developer.android.com/reference/android/os/DropBoxManager)\npipeline for end user bugs.\n\n\nFor more information see our docs on debugging Android native\ncode.\n[Debugging Native Android Platform Codearrow_forward](/docs/core/tests/debug)\n\nGWP-ASan for detecting userspace memory safety bugs\n---------------------------------------------------\n\n\nGWP-ASan was introduced in Android 11 for userspace\nheap allocations. When GWP-ASan detects a bug, it records a crash report with\n`Cause: [GWP-ASan]:` and terminates the process. The bug reports\ncontain additional allocation and deallocation information that make it easier\nto identify the root cause.\n\n\nGWP-ASan is randomly enabled, at start-up, for 1% of system processes or\napps and for applications that set the `android:gwpAsanMode` in their\n`AndroidManifest.xml` file.\n[GWP-ASanarrow_forward](https://developer.android.com/ndk/guides/gwp-asan)\n\nKFENCE for detecting kernel memory safety bugs\n----------------------------------------------\n\n\nAndroid 12 introduced KFENCE for kernel heap\nallocations. When KFENCE detects a bug, it records a crash report starting\nwith `BUG: KFENCE,` disables the guard pages and continues execution.\nThis enables a kernel bug detection mechanism that minimally impacts the user\nexperience.\n\n\nTo learn more about KFENCE see the documentation available at [https://www.kernel.org](https://www.kernel.org/doc/html/latest/dev-tools/kfence.html)"]]