SH1R0_HACKER

005. Double Free & Use After Free 본문

System/System Exploitation

005. Double Free & Use After Free

SH1R0_HACKER 2021. 2. 7. 11:04

Double Free 취약점과 UAF (Use After Free) 취약점은 동적 메모리 관리에서 나타납니다.

이미 해제된 메모리를 다시 한 번 해제하거나 (Double Free),

해제된 메모리에 접근해서 값을 쓸 수 있는 문제 (UAF)가 있습니다.

 

 

위 예제는 a와 b에 100byte 만큼의 메모리를 할당하고

Hello World! 문자열을 복사한 뒤 출력하는 코드입니다.

 

하지만 메모리를 해제할 때 이미 해제된 메모리를 다시 한번 해제하는 경우가 발생하면

공격자에 의해 프로그램의 실행 흐름이 변경될 수 있습니다.


아래는 두번째 예제입니다.

메모리의 동적 할당은 Heap 영역에서 발생합니다.

100byte크기의 a가 메모리에 동적할당되고 Hello World! 문자열이 복사된 후 출력됩니다.

그리고 a를 해제하고 100byte크기의 b를 메모리에 동적할당 후

Hello Pwnable! 문자열이 복사된 후 출력됩니다.

 

여기서 메모리a와 메모리b가 힙 영역에서 같은 주소를 가리키고 있다는 점을 고려해야합니다.

 

새로운 메모리 영역을 할당할 때 메모리를 효율적으로 관리하기 위해

기존에 해제되었던 메모리가 그대로 반환되어 일어나는 일입니다.

 

그래서 이미 해제된 메모리 a에 접근하여 Hello World! 문자열을 복사한다면

b 또한 영향을 받기 때문에 문제가 발생할 수 있습니다.

 

위의 코드를 컴파일하여 실행하면 아래와 같은 출력결과를 보실 수 있습니다.

 

분명히 a에 Hello World! 문자열을 복사했지만 b를 출력하면 a에 복사한 문자열로

바뀌어 출력되는것을 확인할 수 있습니다.

'System > System Exploitation' 카테고리의 다른 글

007. Integer issues  (0) 2021.02.07
006. 초기화되지 않은 메모리  (0) 2021.02.07
004. Format String Bug  (0) 2021.02.07
003. Off-by-one  (0) 2021.02.03
002. OOB (Out Of Boundary)  (0) 2021.02.03