[논문 리뷰] Automatic Heap Layout Manipulation for Exploitation
이 논문은 힙 기반 버퍼 오버플로우를 악용하기 위한 힙 레이아웃 조작(HLM)에 대한 첫 번째 자동화된 접근법을 제시한다. 이는 의사난수 기반의 블랙박스 검색을 사용하여 취약한 버퍼가 대상 데이터 구조물에 대해 상대적으로 위치하도록 입력을 생성한다. 저자들은 PHP 인터프리터에서 HLM을 자동화하기 위해 코드 조각을 조합하여 원하는 힙 레이아웃을 달성하는 시스템인 Shrike를 도입한다. 이로 인해 최소한의 수동 간섭으로 제어 흐름 조작 악용이 가능해진다.
Heap layout manipulation is integral to exploiting heap-based memory corruption vulnerabilities. In this paper we present the first automatic approach to the problem, based on pseudo-random black-box search. Our approach searches for the inputs required to place the source of a heap-based buffer overflow or underflow next to heap-allocated objects that an exploit developer, or automatic exploit generation system, wishes to read or corrupt. We present a framework for benchmarking heap layout manipulation algorithms, and use it to evaluate our approach on several real-world allocators, showing that pseudo-random black box search can be highly effective. We then present SHRIKE, a novel system that can perform automatic heap layout manipulation on the PHP interpreter and can be used in the construction of control-flow hijacking exploits. Starting from PHP's regression tests, SHRIKE discovers fragments of PHP code that interact with the interpreter's heap in useful ways, such as making allocations and deallocations of particular sizes, or allocating objects containing sensitive data, such as pointers. SHRIKE then uses our search algorithm to piece together these fragments into programs, searching for one that achieves a desired heap layout. SHRIKE allows an exploit developer to focus on the higher level concepts in an exploit, and to defer the resolution of heap layout constraints to SHRIKE. We demonstrate this by using SHRIKE in the construction of a control-flow hijacking exploit for the PHP interpreter.
연구 동기 및 목표
- 힙 기반 메모리 손상 취약점 악용을 위한 힙 레이아웃 조작(HLM)의 자동화 부족을 해결한다.
- 힙 할당기에서 메모리 레이아웃을 제어할 수 있는 API를 노출하지 않기 때문에, 응용 프로그램 API를 통한 간접적 조작이 필요하다는 과제를 극복한다.
- 특정 힙 레이아웃을 달성할 수 있는 입력을 자동으로 생성하여, 범위를 초월한 힙 접근을 성공적으로 악용할 수 있도록 한다.
- HLM을 자동 악용 생성 파이프라인에 통합하여, 개발자가 레이아웃 해결을 연기하면서도 고수준의 악용 로직에 집중할 수 있도록 한다.
- 실세계 소프트웨어, 특히 PHP 인터프리터에서 이 접근법의 타당성과 효과성을 입증한다. 이는 새로운 벤치마킹 프레임워크를 사용한다.
제안 방법
- 응용 프로그램 측의 할당 및 해제를 통해 간접적으로 힙 레이아웃을 제어할 수 있는 입력 시퀀스를 탐색하기 위해 의사난수 기반의 블랙박스 검색 알고리즘을 제안한다.
- 실세계 할당기에서 HLM 알고리즘을 평가하기 위해 합성 및 실세계 힙 레이아웃 시나리오를 사용하는 벤치마킹 프레임워크를 설계한다.
- 회귀 테스트에서 발견한 코드 조각을 조합하여 원하는 힙 레이아웃을 달성하는 프로그램을 형성하는 시스템인 Shrike를 구현한다.
- 각 입력 시퀀스가 힙 상태를 변경하므로, 힙 레이아웃을 상태 전이 문제로 모델링하고 목표 구성으로 이르는 시퀀스를 탐색한다.
- 기호 실행과 제약 조건 해결을 사용하여 소스 및 대상 버퍼가 원하는 상대적 위치에 오도록 하는 입력을 유도한다.
- 최적 맞춤, LIFO 자유 리스트 등 알려진 할당기 동작 방식을 활용하여 힙 레이아웃 결과를 모델링하고 검색 공간을 줄인다.
실험 결과
연구 질문
- RQ1의사난수 기반의 블랙박스 검색이 실세계 할당기의 힙 레이아웃 조작 문제를 효과적으로 해결할 수 있는가?
- RQ2자동 입력 생성이 힙 기반 취약점에서 제어 흐름 조작을 위해 필요한 정밀한 힙 레이아웃을 얼마나 정확하게 달성할 수 있는가?
- RQ3 allocator 동작이 복잡하고 비결정적인 실세계 시스템, 예를 들어 PHP 인터프리터에서 이 접근법의 효과성은 어떠한가?
- RQ4Shrike와 같은 시스템이 수동 레이아웃 분석 없이도 복잡한 힙 레이아웃을 구성하는 코드 조각의 조합을 자동화할 수 있는가?
- RQ5HLM을 악용 개발 파이프라인에 통합하면 자동 악용 생성의 타당성과 효율성이 어떻게 향상되는가?
주요 결과
- 의사난수 기반의 블랙박스 검색은 합성 벤치마크에서 높은 성공률을 기록하여, 할당기 내부 구조에 대한 사전 지식 없이도 효과적임을 입증한다.
- Shrike는 PHP 인터프리터에서 원하는 힙 레이아웃을 달성하는 입력을 성공적으로 생성하여 제어 흐름 조작 악용을 가능하게 한다.
- 기존 코드 조각에서 입력 시퀀스를 자동으로 조합함으로써 수동 힙 레이아웃 분석의 필요성을 줄였다.
- 10개의 다른 대상 구조와 PHP의 3개의 하위 컴ponent에서의 평가 결과, 다양한 힙 레이아웃 과제에 대해 뛰어난 강건성을 보였다.
- 할당기 상호작용(예: 크기 기반 할당)을 성공적으로 식별하고 활용하여 정밀한 레이아웃 제어를 달성했다.
- 이 접근법은 자동 악용 생성 파이프라인에 통합 가능하여, 개발자가 로직에 집중할 수 있도록 하면서 Shrike가 레이아웃 제약 조건을 해결하도록 한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.