728x90

카나리

함수 시작 시 스택 버퍼와 Return Address 사이에 랜덤 값을 삽입한 후 함수 종료 시 해당 랜덤 값의 변조 여부를 확인하여 메모리 오염 여부를 확인하는 보호 기법

 

카나리 생성 

`security_init` 함수에서 TLS에 랜덤 값으로 카나리를 설정하면, 매 함수에서 이를 참조하여 사용합니다.

 

카나리 우회 기법

- 무차별 대입 공격 (Brute Force Attack) : 무차별 대입으로 카나리 값을 구하는 방법. 현실적으로 불가능.

- TLS 접근 : 카나리는 TLS에 전역 변수로 저장되므로, 이 값을 읽거나 조작할 수 있으면 카나리를 우회 가능

- 스택 카나리 릭 : 함수의 프롤로그에서 스택에 카나리 값을 저장하므로, 이를 읽어낼 수 있으면 카나리를 우회할 수 있음. 가장 현실적인 카나리 우회 기

+ Recent posts