혹은 혹스트 공격 Host Attack

레이스 컨디션 vs TOCTOU(레이스 컨디션 공격)

레이스 컨디션은 원래 공격 개념이 아니라, 여러 실행 흐름이 같은 자원에 동시 접근할 때 실행 순서에 따라 결과가 달라지는 일반적인 동시성 버그이다.

실행 순서에 따라 결과가 달라진다.

그렇다면 레이스 컨디션 공격은 조금 다르다. 정확하게는 TOCTOU 공격이다.

Time Of Check to Time Of Use

예를 들어 파일 권한 검사와 파일 읽기 작업 사이에 악성 코드 (주로 심볼릭 링크로 바꿔치기)를 실행한다.

원래 레이스 컨디션은 악의적으로 노린 게 아니라, 동시에 실행할 때 그 정확한 실행 순서에 따라서 결과가 달라지는건데,

TOCTOU는 정확하게 그 틈(race window)를 노려서, 검사(check)를 통과시킨 뒤 사용(use) 직전에 자원을 바꿔치기함으로써, 프로그램이 검사한 것과 다른 자원을 사용하게 만드는 공격이다.

둘은 느낌이 다르기는 하나, 굳이 따지자면

race window 이후에 악성코드가 실행됐다면 문제가 없다. 결국 검사와 사용 사이의 경쟁 구간이 있어야만 공격이 성립하므로, TOCTOU도 race condition의 일종인 것이다.

시프 시간에 배운 심볼링 링크와 하드 링크를 복습해보자

심볼릭 링크 Symlink (Symbolic link)

ln -s <path to the file/folder to be linked> <the path of the link to be created>
ln -s /home/james/transactions.txt trans.txt