반응형
Linux Security Check정리 포스팅 썸네일 이미지

Pwnable/포너블 정리

Linux Security Check정리

Security Check > malloc과 free함수를 쓸 때 악의적인 행위를 하지 못하게 함수 내부적으로 검증 단계가 존재한다. > 대표적으로 malloc에서 2가지, free에서 7가지, Unlink에서 2가지 검증 단계를 거친다. Malloc 1. malloc(): memory corruption (fast) 2. malloc(): memory corruption malloc에서는 검증 단계로 위의 두 가지가 존재한다. 위의 검증 단계에서 구체적으로 어떤 동작을 하는지 알아기 위해서 malloc source code를 보도록 하자. 아래 코드는 malloc함수 내부에서 security check를 하는 부분이다. https://github.com/andigena/glibc-2.23-0ubuntu..

2021.05.06 게시됨

Unsafe Unlink 정리 포스팅 썸네일 이미지

Pwnable/포너블 정리

Unsafe Unlink 정리

Unsafe Unlink 쓸 수 있는 상황 1. malloc으로 할당 받은 힙의 주소를 전역 변수에서 관리해야 함. 2. 힙 최소 2개이상에 두 번째 힙의 헤더를 조작할 수 있어야 한다. Unlink의 역할 Unlink는 freelist에 있는 힙 청크 중에 중간에 끼어 있는 청크에 메모리가 할당될 때 힙 청크 리스트 노드들 간의 연결관계를 정리해주는 역할을 함. 아래 그림은 P의 위치에 malloc, calloc으로 메모리가 할당될 때 Unlink가 수행하는 동작이다. UnLink 발생 조건 Unlink과정에서 발생하는 취약점을 알기 위해서 소스코드를 분석해보겠다. #define unlink(AV, P, BK, FD) { \ FD = P->fd; \ BK = P->bk; \ if (__builtin_e..

2021.04.07 게시됨

반응형