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