본문으로 바로가기

Race Condition(레이스 컨디션)

category Security/리버싱 2017. 11. 29. 20:41

- 레이스 컨디션 ( Race Condition )

다수의 프로세스가 서로 동일한 자원을 할당받기 위해 경쟁하는 상태


- 전제 조건

다른 계정의 권한에 접근해야 하므로 SetUID가 걸려 있어야 한다. 

임시 파일을 생성해야 한다. 

공격자가 임시로 생성되는 파일명을 정확하게 알아야한다. 


- 예

1. 파일 생성

2. 생성된 파일에 내용 쓰기

3. 쓴 내용을 읽어들여 처리/ 사용

4. 파일 삭제


-> 이런 구조로 되어있으면 임시파일의 이름만 알아내면 내용 확인 가능


- 예방

전제조건을 맞추지 못하게 하면된다. SetUID가 걸려있는 파일을 줄여야 하겠지만 어쩔 수 없는 경우도 있으니 

공격자가 임시로 생성되는 파일명을 알지 못하게 하면 된다. 


mktemp  명령어


# mktemp

 

 /tmp/tmp.HFazKm5402

 


# man mktemp

 

 NAME

       mktemp - make temporary filename (unique)


SYNOPSIS

       mktemp [-V] | [-dqtu] [-p directory] [template]


DESCRIPTION

       The  mktemp  utility takes the given filename template and overwrites a

       portion of it to create a unique filename.  The  template  may  be  any

       filename  with  some  number  of  ‘Xs’  appended  to  it,  for  example

       /tmp/tfile.XXXXXXXXXX.  If  no  template  is  specified  a  default  of

       tmp.XXXXXXXXXX is used and the -t flag is implied (see below).


       The  trailing  ‘Xs’ are replaced with a combination of the current pro-

       cess number and random letters.  The name chosen depends  both  on  the

       number  of  ‘Xs’  in  the  template  and  the number of collisions with

       pre-existing files.  The number of unique filenames mktemp  can  return

       depends  on the number of ‘Xs’ provided; ten ‘Xs’ will result in mktemp

       testing roughly 26 ** 10 combinations.

....

 


/tmp/tfile.XXXXXXXXXX 형식으로 X에 랜덤으로 값이 들어가 파일을 만들어준다. 

이런식으로 임시파일을 만들어 확인하면 공격자가 파일 이름을 알아내기가 힘들어 공격(링크 걸기)하기 힘들다.




'Security > 리버싱' 카테고리의 다른 글

Level6 문제 해결  (0) 2017.11.29
Level5 문제 분석 -의사 코드  (0) 2017.11.29
Level5 문제해결  (0) 2017.11.29
Level4 문제해결  (0) 2017.11.29
(암기) backdoor 만들기  (0) 2017.11.28