- 레이스 컨디션 ( 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 |