[Dreamhack] System Hacking Stage 12 - Exploit Tech: Tcache Poisoning
·
Hacking/System
서론 해커들은 double free bug를 이용하면 free list에 어떤 청크를 중복으로 연결시킬 수 있음을 알아냈다. free list는 ptmalloc2의 동작에서 매우 중요한 기능을 하므로, 이 버그는 시스템에 심각한 오동작을 일으킬 수 있다. Tcache poisoning은 중복으로 연결된 청크를 재할당하면, 그 청크가 해제된 청크인 동시에, 할당된 청크라는 특징을 이용한다. 이러한 중첩 상태를 이용하면 공격자는 임의 주소에 청크를 할당할 수 있으며, 그 청크를 이용하여 임의 주소의 데이터를 읽거나 조작할 수 있게 된다. Tcache Poisoning Tcache Poisoning : tcache를 조작하여 임의 주소에 청크를 할당시키는 공격 기법 원리 중복으로 연결된 청크를 재할당하면, 그..
[Dreamhack] System Hacking Stage 12 - Memory Corruption: Double Free Bug
·
Hacking/System
서론 free 함수로 청크를 해제하면, ptmalloc2는 이를 tcache나 bins에 추가하여 관리한다. 그리고 이후에 malloc으로 비슷한 크기의 동적 할당이 발생하면, 이 연결리스트들을 탐색하여 청크를 재할당한다. 이 메커니즘에서, 해커들은 free로 해제한 청크를 free로 다시 해제했을 때 발생하는 현상에 주목했다. tcache와 bins를 free list라고 통칭한다면, free list의 관점에서 free는 청크를 추가하는 함수, malloc은 청크를 꺼내는 함수이다. 그러므로, 임의의 청크에 대해 free를 두 번이상 적용할 수 있다는 것은 청크를 free list에 여러 번 추가할 수 있음을 의미한다. 청크가 free list에 중복해서 존재하면 청크가 duplicated됐다고 표현..
[Dreamhack] System Hacking Stage 12 - Background:ptmalloc2
·
Hacking/System
서론 운영체제의 Memory Allocator의 핵심 역할 중 하나는 한정된 메모리 자원을 각 프로세스에 효율적으로 배분하는 일이다. 모든 프로세스는 실행 중에 메모리를 동적으로 할당하고, 할당한 메모리의 쓰임이 다하면 이를 해제한다. 이 과정은 매우 빈번하게 일어나기 때문에 운영체제의 Memory Allocator는 이 동작이 빠르고, 메모리의 낭비 없이 이뤄지도록 특수한 알고리즘으로 구현된다. 몇몇 소프트웨어는 직접 구현한 Memory Allocator를 사용하기도 한다. Memory Allocator는 구현에 사용된 알고리즘에 따라 여러 종류가 있다. 리눅스는 ptmalloc2, 구글은 tcmalloc, 페이스북이나 파이어폭스는 jemalloc을 사용한다. ptmalloc2는 메모리가 해제되면, 해..