위키득계정 ↗
기술

TypeSanitizer

TypeSanitizer기술
분류
타입 별칭 규칙 검사
기반
컴파일러 계측과 런타임
관련 정보
TBAA 타입 메타데이터
관찰 대상
실행된 메모리 접근
TypeSanitizer는 C와 C플러스플러스의 엄격한 타입 별칭 규칙 위반을 찾는 도구다. 컴파일러 계측과 런타임 정보를 이용해 실제 메모리 접근의 타입 관계를 검사한다.

타입에 따른 접근 규칙

같은 메모리를 서로 다른 타입의 포인터로 읽고 쓰는 방식에는 언어 규칙과 예외가 있다. 겉보기에 동작하더라도 규칙을 어기면 컴파일러 최적화의 가정과 충돌할 수 있다. TypeSanitizer는 이런 접근을 찾는 데 초점을 둔다.

그림자 정보의 활용

메모리 주소에 대응하는 타입 설명 정보를 따로 유지하고 접근 시 관계를 확인한다. 단순한 주소 유효성 검사와는 목적과 정보가 다르다. 버퍼 안쪽에 접근했다는 사실만으로 타입 규칙까지 올바르다고 판단할 수는 없다.

계측 비용과 범위

추가 메타데이터와 접근 검사는 상당한 메모리 및 실행 비용을 만들 수 있다. 실제 비용은 코드의 접근 패턴과 구성에 달려 있다. 실행한 경로의 결과로 해석하고 지원 조건과 외부 코드의 계측 범위를 확인하며 다른 메모리 검사와 구분해 사용한다.

관련 문서

AddressSanitizer / MemorySanitizer / DataFlowSanitizer / Clang