메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Debloating Address Sanitizer

noriwiki
Ahn9807 (토론 | 기여)님의 2025년 6월 30일 (월) 05:01 판 (새 문서: 분류: USENIX Security Yuchen Zhang, Chengbin Pang, Georgios Portokalidis, Nijos Triandopoulos, Jun Xu USENIX Security 2022 == 개요 == AddressSanitizer의 성능 분석과, 그에 대한 여러가지의 Optimization technique를 제시한 논문이다. == Motivation & Importance == ASAN은 강력한 '''Capability''', '''Scalability''', '''Usability'''덕분에 많이 사용되는 Memory Santizier이다. 그러나 ASAN은 대략 1.5x-3.x의 메모리 오버헤드...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


Yuchen Zhang, Chengbin Pang, Georgios Portokalidis, Nijos Triandopoulos, Jun Xu
USENIX Security 2022

개요

AddressSanitizer의 성능 분석과, 그에 대한 여러가지의 Optimization technique를 제시한 논문이다.

Motivation & Importance

ASAN은 강력한 Capability, Scalability, Usability덕분에 많이 사용되는 Memory Santizier이다. 그러나 ASAN은 대략 1.5x-3.x의 메모리 오버헤드가 대략 200%가 넘는 Performance overhead가 발생한다는 성능상의 단점이 있다.

따라서, 위의 언급한 3개의 장점을 해치지 않으면서, 최대한 성능을 최적화 하기 위한 기법을 개발하는 것이 중요하다.

Asan 성능 분석

  • Sanitizer Checks: 메모리 접근(읽기 및 쓰기)에 대해 삽입된 Sanitizer 검사를 비활성화
  • Interceptor: memcpy, memset, memmove 등 표준 C 라이브러리 함수 호출을 감시하거나 가로채는 인터셉터 기능을 제거
  • Poisoning: 레드존(Redzone, 보호용 패딩 영역)에 대해 의도적으로 유효하지 않은 값(poison)을 채워 넣는 작업을 생략
  • Logging: malloc, free 등의 시점에 생성되는 스택 트레이스 로그를 포함하여, 중간 로깅 작업을 제거

AddressSanitizer가 자체적으로 제공하는 힙 관리 기능을 비활성화하고, 표준 C 라이브러리의 기본 힙 할당/해제 방식으로 복귀한다. 이는 호환성과 성능을 높이는 데 기여할 수 있다.

  • Redzone: 메모리 할당 주변에 삽입되는 레드존 영역과 관련된 모든 동작을 제거

Design (Optimization)

  • Optimization 1: Static analysis를 통해서 확실하게 Bound check를 정적인 시간에 할 수 있는 경우, 해당 메모리 접근에 대한 Sanitizer검사를 제거
  • Optimiztaion 2: Sanitizer check중에서 다른 검사에 의해서 중복되는 검사를 제거
  • Optimization 3: 물리적으로 인접한 메모리 접근을 식별해서, 해당 검사를 하나로 병합
  • Optimization 4: 불변 주소를 사용하는 메모리 접근을 찾아서, Sanitizer검사를 루프 밖으로 이동시켜, 루프내의 반복적인 검사를 하나로 통합하고, 증가하거나 감소하는 주소를 찾아 Iteration간의 검사를 하나로 통합