레이스컨디션 김판수 , 이준영
DESCRIPTION
레이스컨디션 김판수 , 이준영. I ndex. 하드 링크와 심볼릭 링크. Ptrace 의 동작과 취약점 이해. 레이스 컨디션 공격에 대한 대응책. 레이스 컨디션의 기본 개념. Race Condition. 흰색차 vs 노란색차의 레이스 경쟁 ?. 두 프로세서간의 경쟁. Race Condition. Void main(void) { int cpid; int x,y; if((cpid = fork())>0{//fork() 함수가 현재의 프로세서와 동일한 Child process 를 - PowerPoint PPT PresentationTRANSCRIPT
레이스컨디션김판수 , 이준영
Index
레이스 컨디션의 기본 개념
하드 링크와 심볼릭 링크
Ptrace 의 동작과 취약점 이해
레이스 컨디션 공격에 대한 대응책
Race Condition
흰색차 vs 노란색차의 레이스 경쟁 ?두 프로세서간의 경쟁
Void main(void)
{
int cpid;
int x,y;
if((cpid = fork())>0{//fork() 함수가 현재의 프로세서와 동일한 Child process 를
for(x=0; x<100; x++) // 생성합니다 .
printf(“O”); // parent process 일 경우 O 를 출력
eixt(0);
}
else{
for(y=0; y<100; y++)
printf(“X”); // Child process 일 경우 X 를 출력
exit(0);
}
}
Race Condition
Hard LinK 명령어 : In [ 원본파일 ], [ 하드링크파일 ]
두 파일을 In(Link) 로 연결 -> 링크 수 증가
링크 파일을 수정시 원본 파일도 수정
두 파일중 하나를 삭제시 -> 링크 숫자 하나만 사라짐
동일한 파일시스템에서만 사용 가능
Race Condition
Symbolic LinK 명령어 : In-s [ 원본파일 ], [ 하드링크파일 ]
윈도우의 단축 아이콘과 같은 개념
링크 수의 변화는 없고 링크된 파일의 정보만 표시
원본 파일 삭제 시 , 심볼릭 파일에서는 데이터 획득 불가
Race Condition
/tmp/temp/tmp/temp
Symbolic LinK Attack
Race Condition
SetUIDProgramSetUID
Program
사용자
A.c
Symbolic Link 를 이용한 해킹기법이 알려지고 나서 이에 대한 대비책으로 프로그램이 임시파일을 만들 때
같은 이름의 파일이 있으면 그를 지운 후 임시 파일을 만들어 프로그램을 만들기 시작하였다
미리 Symbolic Link 를 걸어도 이게 삭제되어 안전해 진다
그러나 이것도 문제점이 생겼다 .
Race Condition
① 프로그램 실행
② 생성할 임시파일과 같은 이름의 파일이 존재하는지 확인
③ 같은 이름의 파일이 있으면 삭제 , 없으면 건너뜀
④ 임시파일을 생성
Race Condition
Race Condition 의 조건
해당 프로그램에 root 권한의 SetUID 가 걸려있을 것
프로그램 실행도중 어떤 파일을 생성할 것
그 생성되는 파일의 이름과 위치를 알고 있을 것
파일이 생성되는 디렉토리에 쓰기 권한을 가지고 있을 것
Race Condition
레이스컨디션 실습
임시파일에 대한 레이스컨디션 공격의 기본
취약프로그램이 생성하는 임시파일의 이름을 파악 .
생성될 임시파일과 같은 이름의 파일을 생성
이에 대한 심볼릭 링크를 생성
원본파일을 지운 채 취약프로그램이 심볼릭 링크를 건 파일과 같은 파일을 생성할 때를 기다린다 .
생성되었을 때 , 심볼릭 링크를 이용해 파일 내용을 원하는 대로 변경
시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스 를 진행시킬 것이고 , 공격자는 관리자 권한으로 실행되는 프로그램에 끼어들어 무언가를 할 수 있는 여지를 만든다 .
-> 단 , 취약 프로그램은 Setuid 를 가지고 있어야 하며 , 취약프로그램이 사용하는 임시파일이 무엇인지 알고 있어야 한다 .
Race Condition
1. 심볼릭링크를 이용한 해킹
Race Condition
=> 두번째 문자열로 받은 인자값을 tmp 폴더에 yong 이라는 파일에 출력시키는 프로그램
1. 심볼릭링크를 이용한 해킹
Race Condition
chmod4755 race 로 setuid 를 걸어둔다 .
/etc/passwd 라는 파일에 대한 권한을 살펴본다 .
=> Root 사용자만 읽고 쓰기가 가능하고 그외의 사용자는 읽기만 가능
1. 심볼릭링크를 이용한 해킹
Race Condition
Race 라는 프로그램이 만든 yong 파일을 미리 /etc/passwd 파일에 심볼릭 링크를
걸어둠
race 프로그램을 실행시키면 /etc/passwd 파일이 바뀜
2. 심볼릭링크의 취약점에 대한 보안
Race Condition
=> Remove 명령어로 파일을 생성하기전에 yong 파일을 한번 지워준다 .
2. 심볼릭링크의 취약점에 대한 보안
Race Condition
=> Race 프로그램을 실행했을때 링크가 걸려있던것 yong 이라는 파일이 사라진 것이 보임 .
1 번 파일 소스
2. 심볼릭링크의 취약점에 대한 보안
Race Condition
2 번 파일 소스
결과 화면
3. 레이스컨디션의 보안
Race Condition
소스 파일
3. 레이스컨디션의 보안
Race Condition
Etc 폴더의 passwd 를 다시 초기화시키고 1 프로그램과 2 프로그램을 실행
Thank you