더 자세한 내용은 추후에 더 추가할 예정이다.
레이스 컨디션?
한정된 자원을 여러 프로세스들이 사용하기위해 경쟁하는 것을 의미한다. 즉 둘 이상의 프로세스나 스레드가 공유자원에 동시에 접근하여 비정상적인 결과가 발생하는 것을 말한다.
레이스 컨디션 공격
레이스컨디션에 의해 비정상적인 상황이 발생한 경우 악용하는 공격으로, 관리자 권한(setuid를 통한 권한상승)으로 실행되는 프로그램 중간에 끼어들어 자신이 원하는 작업을 하는 일종의 가로채기이다.
실행되는 프로세스가 임시파일을 만드는 경우 프로세스의 실행 중 끼어들어 임시파일을 목적파일로 연결(심볼릭 링크)하여 임시파일의 내용을 확인하는 등 악의적인 행워를 할 수 있다.
만약 프로세스가 setuid로 인해 root 권한으로 실행된다면 권한 상승을 통해 파일에 접근하는 등 심각한 문제가 일어날 수 있다.
레이스 컨디션 공격의 기본
1. 취약한 프로그램이 생성하는 임시파일의 이름을 파악한다.
2. 생성될 임시파일과 같은 이름의 파일을 생성한다.
3. 이 파일에 대한 심볼릭 링크를 생성한다.
4. 원본파일을 지운 채 취약한 프로그램이 심볼릭링크를 건 파일과 같은 이름의 파일을 생성할 때를 기다린다.
5. 생성되었을 때 심볼릭 링크를 이용해 파일 내용을 변경 or 확인한다.
6. 시스템은 변경된 파일을 자신이 생성한 임시파일로 생각하고 프로세스를 진행할 것이고, 공격자는 권리자권한으로 실행되는 프로그램에 끼어들어 무언가를 할 수 있는 여지를 만든다.
관련 Wargame 문제
webhacking.kr 60번
FTZ Level5
Nebula Level10
참고
'CS > system' 카테고리의 다른 글
[System][Dreamhack] wargame - ssp_001 스택 순서 (0) | 2022.08.24 |
---|---|
[System][Dreamhack] bypass canary (0) | 2022.08.10 |
[System][Dreamhack] 메모리 보호 기법 memory mitigation - Stack Canary (0) | 2022.08.09 |
[System][Dreamhack] stack buffer overflow - 스택 버퍼 오버플로우 (0) | 2022.05.11 |
[System] 함수 프롤로그 & 에필로그 (Prologue & Epilogue) (0) | 2022.05.08 |