Use after free 공격
use after free(유즈 애프터 프리, UAF) 공격은 **메모리를 해제(free)한 후 그 메모리를 다시 사용하는 취약점**을 악용하는 공격 기법입니다.[1][4][5]
## 원리와 개념
- 동적 할당(예: malloc)된 메모리를 프로그램에서 사용하다가 free 등으로 메모리를 해제한 뒤, 해당 영역의 포인터나 참조가 남아있어 다시 접근하려 할 때 발생합니다.[4][1]
- 해제된 메모리 공간은 운영체제나 런타임이 다른 용도로 재할당할 수 있는데, 이때 이전 포인터를 통해 조작하거나 참조하면, 예기치 않은 동작/취약점으로 이어집니다.[7][4]
## 보안상 위험
- 공격자는 UAF 취약점을 이용해 **임의 코드 실행, 권한 상승, 정보 유출** 등이 가능합니다.[6]
- 프로그램의 제어 흐름을 공격자가 의도하는 대로 조작할 수 있어 위험이 큽니다.[5][6]
## 발생 예와 특징
- 주로 C, C++ 등 수동 메모리 관리 언어(힙 영역)에서 자주 발생합니다.[1][5]
- 일반적인 실행 흐름:
1. 객체/공간을 malloc 등으로 할당
2. free로 메모리 해제
3. 해제된 메모리를 실수로 계속 사용
- 이 과정에서 포인터가 일명 dangling pointer(덩글링 포인터)가 되어, 이전의 데이터가 남아 있거나, 공격자가 덮어쓸 수 있게 되어 exploit이 가능합니다.[7]
## 공격의 예시
- 함수 포인터 테이블, 오브젝트, 구조체 등을 해제 후 재사용 시, 공격자가 임의 값을 삽입해 악성코드 호출 등으로 이어질 수 있습니다.[5]
- 실수로 해제된 메모리 주소에 민감 정보가 남아 외부로 유출될 수도 있습니다.[7]
## 방어 방법
- free 후 포인터를 NULL로 초기화
- 스마트 포인터 등 자동 메모리 관리 사용
- 메모리 초기화(덮어쓰기) 등으로 안전하게 관리
- 코드 리뷰, 동적 분석 도구 활용[6]
**요약:**
use after free는 해제된 메모리를 잘못 사용해 생기는 치명적인 취약점으로, 시스템 및 중요한 소프트웨어에서 심각한 보안 사고로 이어질 수 있으니 각별한 주의가 필요합니다.[4][1][6]
인용:
[1] Linux Kernel 내 Use-After-Free 취약점 (CVE-2024-1086) 분석 ... https://www.igloo.co.kr/security-information/linux-kernel-%EB%82%B4-use-after-free-%EC%B7%A8%EC%95%BD%EC%A0%90cve-2024-1086-%EB%B6%84%EC%84%9D-%EB%B0%8F-%EB%8C%80%EC%9D%91%EB%B0%A9%EC%95%88/
[2] 7. Use After Free - 샤의 공간 - 티스토리 https://shayete.tistory.com/entry/7-Use-After-Free
[3] Use After Free (UAF) 너 뭐임?? - 공부하자공부 - 티스토리 https://seclab614.tistory.com/3
[4] [heap exploit] Use-After-Free (UAF) 취약점 - SEO - 티스토리 https://scorchingnraining.tistory.com/157
[5] Use after free - STEADINESS - 티스토리 https://ethical-hack.tistory.com/72
[6] Use After Free 취약점 탐지 기술에 관한 연구 https://www.manuscriptlink.com/society/kips/conference/ack2024/file/downloadSoConfManuscript/abs/KIPS_C2024B0471
[7] Use After Free 개념 설명 - jeongsu - 티스토리 https://jjeongsu.tistory.com/54
[8] [Practice] Use After Free - d0bbyG - 티스토리 https://d0bbyg.tistory.com/44