GWP-ASan과 KFENCE는 각각 사용자 공간과 커널의 확률적 메모리 감지 도구입니다. 이를 사용 설정하면 할당된 메모리를 둘러싸는 추가 메모리 페이지로 소수의 할당이 보호됩니다. 이를 통해 미미한 성능 오버헤드로 버퍼 오버플로와 use-after-free를 감지할 수 있습니다. 보호된 할당의 샘플링 레이트가 작더라도 대규모 배포 시 메모리 안전 버그를 효과적으로 감지할 수 있습니다. 도입 후 이러한 도구는 수많은 플랫폼 버그를 식별하는 데 도움이 되었으며 안정성과 보안을 개선하는 데 유용한 도구임이 입증되었습니다. 공급업체는 이를 사용 설정하여 최종 사용자 기기에서 감지된 버그를 면밀히 모니터링하는 것이 좋습니다.
개발자는 /data/tombstones
, logcat
을 확인하거나 공급업체 DropboxManager
파이프라인에서 최종 사용자 버그를 모니터링하여 비정상 종료가 있는지 확인해야 합니다.
자세한 내용은 Android 네이티브 코드 디버깅에 관한 문서를 참고하세요.
네이티브 Android 플랫폼 코드 디버깅사용자 공간 메모리 안전 버그를 감지하기 위한 GWP-ASan
GWP-ASan은 Android 11에서 사용자 공간 힙 할당을 위해 도입되었습니다. GWP-ASan이 버그를 감지하면 Cause: [GWP-ASan]:
를 사용하여 비정상 종료 보고서를 기록하고 프로세스를 종료합니다. 버그 신고에는
추가 할당 및 할당 해제 정보가 포함되어 근본 원인을 더 쉽게 식별할 수
있습니다.
GWP-ASan은 시작 시 1%의 시스템 프로세스나 앱 및 AndroidManifest.xml
파일에서 android:gwpAsanMode
를 설정하는 애플리케이션에서 무작위로 사용 설정됩니다.
커널 메모리 안전 버그를 감지하기 위한 KFENCE
Android 12에서는 커널 힙 할당을 위한 KFENCE를 도입했습니다. KFENCE가 버그를 감지하면 BUG: KFENCE,
로 시작하는 비정상 종료 보고서를 기록하고 보호 페이지를 사용 중지하며 실행을 계속합니다.
이를 통해 사용자 환경에 최소한의 영향을 미치는 커널 버그 감지 메커니즘이 가능해집니다.
KFENCE에 관한 자세한 내용은 https://www.kernel.org에서 문서를 참고하세요.