경쟁 상태

From CS Wiki


Race Condition
  • 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태
  • 프로세스 간의 자원 경쟁을 유발하여 권한을 획득하는 기법으로 활용된다.
    • ex) 버그를 갖고 있는 System Program과 침입자의 Exploit Program이 거의 같은 시간대에 실행되어 System Program이 갖는 권한으로 Exploit Program이 실행되는 경우

일반적 조건[edit | edit source]

  • 파일의 소유자가 root이어야 함
  • SetUID 비트를 가져야 함
  • 바로 생성되는 임시 파일의 이름을 알고 있어야 함

일반적인 절차[edit | edit source]

  1. 취약 프로그램이 생성하는 임시 파일의 이름을 파악
  2. 생성될 임시 파일과 같은 이름의 파일을 생성하고 이에 대한 심볼릭 링크를 생성
  3. 원본 파일을 지운 채 취약프로그램이 심볼릭 링크를 건 파일과 같은 파일이 생성할 때까지 대기
  4. 생성되는 순간, 심볼릭 링크를 이용해 파일 내용을 변경
  5. 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스를 진행시킬 것이고, 공격자는 관리자권한으로 실행되는 프로그램에 끼어들어 무언가를 할수 있음

참고 문헌[edit | edit source]