티스토리 뷰

레이스 컨디션

- 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상

 

 

레이스 컨디션의 공격의 기본

- 1. 취약 프로그램이 생성하는 임시 파일의 이름을 파악

- 2. 생성될 임시 파일과 같은 이름의 파일을 생성

- 3. 이에 대한 심볼릭 링크를 생성

- 4. 원본 파일을 지운 채 취약 프로그램이 심볼릭 링크를 건 파일과 가은 파일을 생성할 때를 기다린다.

- 5. 생성되었을 때, 심볼릭 링크를 이용해 파일 내용을 변경

- 6. 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스를 진행시킬 것이고,

      공격자는 관리자 권한으로 실행되는 프로그램에 끼어들어 무언가를 할 수있는 여지를 만든다.

 

 

임시 파일에 대한 레이스 컨디션 공격

 

리눅스관리자와 해커간의 공격, 방어 과정 살펴보자

 

관리자가 일반 사용자들이 자유롭게 파일을 생성하고 내용을 입력할 수 있게 하도록 아래와 같이 소스를 짜고 setuid 설정을 하였다.




 

 

해커는 소스의 취약점을 알아채고 아래와 같은 행동을 한다



즉, /etc/passwd 에 루트권한을 가진 비밀번호가 없는 계정을 만들어 놓은 것이다.

 

 

이것을 눈치챈 관리자는 이것을 보안하고자 소스를 수정하고자 한다.




즉, 사용자들이 /tmp/sample 파일만 생성할 수있게 지정해놓았다


 

 

해커는 또 취약점을 찾아내서 다음과 같이 한다.


 

즉, 만들어질 /tmp/sample 파일을 /etc/passwd 파일의 심볼링크를 걸어두어 passwd파일에 접근하는 것이다.

 

 

관리자는 취약점을 보안하고자 다음과 같이 소스를 수정한다.




즉, 파일생성전에 존재하고있는 /tmp/sample 파일을 삭제하고 재생성하는 것이다.

 

 

해커는 최후의 수단으로 레이스컨디션 공격을 감행하기로 한다




두 파일을 컴파일 시켜 실행시킨다.

 






hacker7 계정이 간간히 생성 됨을 알 수가 잇다.

댓글