경쟁 상태
From CS Wiki
- Race Condition
- 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태
- 프로세스 간의 자원 경쟁을 유발하여 권한을 획득하는 기법으로 활용된다.
- ex) 버그를 갖고 있는 System Program과 침입자의 Exploit Program이 거의 같은 시간대에 실행되어 System Program이 갖는 권한으로 Exploit Program이 실행되는 경우
일반적 조건[edit | edit source]
- 파일의 소유자가 root이어야 함
- SetUID 비트를 가져야 함
- 바로 생성되는 임시 파일의 이름을 알고 있어야 함
일반적인 절차[edit | edit source]
- 취약 프로그램이 생성하는 임시 파일의 이름을 파악
- 생성될 임시 파일과 같은 이름의 파일을 생성하고 이에 대한 심볼릭 링크를 생성
- 원본 파일을 지운 채 취약프로그램이 심볼릭 링크를 건 파일과 같은 파일이 생성할 때까지 대기
- 생성되는 순간, 심볼릭 링크를 이용해 파일 내용을 변경
- 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스를 진행시킬 것이고, 공격자는 관리자권한으로 실행되는 프로그램에 끼어들어 무언가를 할수 있음