레이스컨디션 김판수 , 이준영

21
레레레레레레 레레레 , 레레레

Upload: chaela

Post on 16-Jan-2016

111 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: 레이스컨디션 김판수 ,  이준영

레이스컨디션김판수 , 이준영

Page 2: 레이스컨디션 김판수 ,  이준영

Index

레이스 컨디션의 기본 개념

하드 링크와 심볼릭 링크

Ptrace 의 동작과 취약점 이해

레이스 컨디션 공격에 대한 대응책

Page 3: 레이스컨디션 김판수 ,  이준영

Race Condition

흰색차 vs 노란색차의 레이스 경쟁 ?두 프로세서간의 경쟁

Page 4: 레이스컨디션 김판수 ,  이준영

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

Page 5: 레이스컨디션 김판수 ,  이준영

Hard LinK 명령어 : In [ 원본파일 ], [ 하드링크파일 ]

두 파일을 In(Link) 로 연결 -> 링크 수 증가

링크 파일을 수정시 원본 파일도 수정

두 파일중 하나를 삭제시 -> 링크 숫자 하나만 사라짐

동일한 파일시스템에서만 사용 가능

Race Condition

Page 6: 레이스컨디션 김판수 ,  이준영

Symbolic LinK 명령어 : In-s [ 원본파일 ], [ 하드링크파일 ]

윈도우의 단축 아이콘과 같은 개념

링크 수의 변화는 없고 링크된 파일의 정보만 표시

원본 파일 삭제 시 , 심볼릭 파일에서는 데이터 획득 불가

Race Condition

Page 7: 레이스컨디션 김판수 ,  이준영

/tmp/temp/tmp/temp

Symbolic LinK Attack

Race Condition

SetUIDProgramSetUID

Program

사용자

A.c

Page 8: 레이스컨디션 김판수 ,  이준영

Symbolic Link 를 이용한 해킹기법이 알려지고 나서 이에 대한 대비책으로 프로그램이 임시파일을 만들 때

같은 이름의 파일이 있으면 그를 지운 후 임시 파일을 만들어 프로그램을 만들기 시작하였다

미리 Symbolic Link 를 걸어도 이게 삭제되어 안전해 진다

그러나 이것도 문제점이 생겼다 .

Race Condition

Page 9: 레이스컨디션 김판수 ,  이준영

① 프로그램 실행

② 생성할 임시파일과 같은 이름의 파일이 존재하는지 확인

③ 같은 이름의 파일이 있으면 삭제 , 없으면 건너뜀

④ 임시파일을 생성

Race Condition

Page 10: 레이스컨디션 김판수 ,  이준영

Race Condition 의 조건

해당 프로그램에 root 권한의 SetUID 가 걸려있을 것

프로그램 실행도중 어떤 파일을 생성할 것

그 생성되는 파일의 이름과 위치를 알고 있을 것

파일이 생성되는 디렉토리에 쓰기 권한을 가지고 있을 것

Race Condition

Page 11: 레이스컨디션 김판수 ,  이준영

레이스컨디션 실습

Page 12: 레이스컨디션 김판수 ,  이준영

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

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

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

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

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

생성되었을 때 , 심볼릭 링크를 이용해 파일 내용을 원하는 대로 변경

시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스 를 진행시킬 것이고 , 공격자는 관리자 권한으로 실행되는 프로그램에 끼어들어 무언가를 할 수 있는 여지를 만든다 .

-> 단 , 취약 프로그램은 Setuid 를 가지고 있어야 하며 , 취약프로그램이 사용하는 임시파일이 무엇인지 알고 있어야 한다 .

Race Condition

Page 13: 레이스컨디션 김판수 ,  이준영

1. 심볼릭링크를 이용한 해킹

Race Condition

=> 두번째 문자열로 받은 인자값을 tmp 폴더에 yong 이라는 파일에 출력시키는 프로그램

Page 14: 레이스컨디션 김판수 ,  이준영

1. 심볼릭링크를 이용한 해킹

Race Condition

chmod4755 race 로 setuid 를 걸어둔다 .

/etc/passwd 라는 파일에 대한 권한을 살펴본다 .

=> Root 사용자만 읽고 쓰기가 가능하고 그외의 사용자는 읽기만 가능

Page 15: 레이스컨디션 김판수 ,  이준영

1. 심볼릭링크를 이용한 해킹

Race Condition

Race 라는 프로그램이 만든 yong 파일을 미리 /etc/passwd 파일에 심볼릭 링크를

걸어둠

race 프로그램을 실행시키면 /etc/passwd 파일이 바뀜

Page 16: 레이스컨디션 김판수 ,  이준영

2. 심볼릭링크의 취약점에 대한 보안

Race Condition

=> Remove 명령어로 파일을 생성하기전에 yong 파일을 한번 지워준다 .

Page 17: 레이스컨디션 김판수 ,  이준영

2. 심볼릭링크의 취약점에 대한 보안

Race Condition

=> Race 프로그램을 실행했을때 링크가 걸려있던것 yong 이라는 파일이 사라진 것이 보임 .

1 번 파일 소스

Page 18: 레이스컨디션 김판수 ,  이준영

2. 심볼릭링크의 취약점에 대한 보안

Race Condition

2 번 파일 소스

결과 화면

Page 19: 레이스컨디션 김판수 ,  이준영

3. 레이스컨디션의 보안

Race Condition

소스 파일

Page 20: 레이스컨디션 김판수 ,  이준영

3. 레이스컨디션의 보안

Race Condition

Etc 폴더의 passwd 를 다시 초기화시키고 1 프로그램과 2 프로그램을 실행

Page 21: 레이스컨디션 김판수 ,  이준영

Thank you