위키득계정 ↗
기술

AddressSanitizer

AddressSanitizer기술
약칭
ASan
대표 논문
USENIX ATC 2012
검사 대상
메모리 접근 오류
주요 방식
전용 메모리 할당기와 코드 계측
AddressSanitizer는 실행 중 잘못된 메모리 접근을 찾는 도구다. 메모리 할당 방식과 코드 계측을 함께 사용해 경계를 벗어난 접근이나 해제한 메모리의 사용 같은 오류를 감지한다.

메모리 접근의 오류

C와 C++ 같은 언어에서는 버퍼의 범위를 넘거나 이미 해제한 메모리를 사용하는 오류가 생길 수 있다. AddressSanitizer는 이런 문제를 실행 중에 발견하는 메모리 오류 탐지기로 제안됐다.

여러 저장 영역의 검사

초기 논문은 힙과 스택, 전역 객체에서 경계를 벗어난 접근을 찾는다고 설명했다. 특정한 한 영역의 할당 오류만을 대상으로 하는 것은 아니다.

할당기와 계측의 결합

전용 메모리 할당기와 코드 계측을 이용한다. 코드의 동작을 관찰할 수 있는 검사를 추가해 잘못된 메모리 접근이 발생하는 지점을 알아내도록 한다.

초기 연구의 발견 사례

2012년 논문은 Chromium에서 이전에 알려지지 않은 300개 이상의 오류와 다른 소프트웨어의 오류를 발견했다고 보고했다. 이 수치는 당시 연구의 사례이며 현재 실행의 오류 개수나 속도를 보장하는 값은 아니다.

관련 문서

UndefinedBehaviorSanitizer / libFuzzer / Csmith / 소프트웨어 테스트 / 컴파일러 / 디버깅