이론/[System 이론]

BOF(Buffer OverFlow) - 버퍼 오버 플로우

환석이 2023. 3. 19. 20:13
 BOF 공격

BOF

 BOF 공격 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리 범위를 넘어선 위치에 자료를 읽거나 쓸 때 발생하며, 오작동 또는 악의적 코드를 실행할 수 있게 됨

 

 버퍼 오버플로우는 악성코드가 시스템에 침투하거나 실행될 때 많이 이용되며, 이를 악용하는 공격을 버퍼 오버플로우 공격이라고 한다.

 

 

BOF 종류 

 

BOF 종류 설명
Stack BOF 스택(함수 처리를 위해 지역 및 매개변수가 위치하는 메모리 영역) 구조 상, 할당된 버퍼들이 정의된 버퍼 한계치를 넘는 경우, 복귀 주소를 변경하여 공격자가 임의 코드를 수행
Heap BOF 힙(malloc()등의 메모리 할당 함수로 사용자가 동적으로 할당하는 메모리 영역) 구조 상, 최초 정의된 힙의 메모리 사이즈를 초과하는 문자열들이 힙의 버퍼에 할당될 시, 공격자가 데이터 변경 및 함수 주소 변경으로 임의 코드를 수행

 

C언어 상 BOF 주요 함수

 

BOF 주요 함수 설명
strcpy(char *dst, const char *src) - src 문자열을 dst 버퍼에 저장
- src 문자열 길이를 체크하지 않아, dst 버퍼를 초과하는 BOF 가능
strncpy(char *dst, const char *src, size_t len) - src 문자열의 len 만큼을 dst 버퍼에 저장
- src 문자열 길이를 제한하여 BOF 방지 가능
size_t strlen(const char *str) - 문자열(str)의 null 문자를 제외한 바이트 수를 반환
sizeof(피연산자) - 피연산자의 크기를 반환

 

 

버퍼 오버플로우 예방법

 

 프로그램에서 입력값의 크기를 체크하거나, 프로그램에서 사용하는 버퍼의 크기를 적절하게 조정하고, 입력값 검증 및 필터링 등의 보안 기능을 구현하는 것이 필요합니다. 또한, 보안 업체에서는 버퍼 오버플로우 공격을 탐지하고 방어할 수 있는 방법을 제공하고 있습니다.

 

출처 : https://isc9511.tistory.com/119

 

버퍼 오버 플로우 (BOF - Buffer OverFlow) 공격

* BOF 공격 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리 범위를 넘어선 위치에 자료를 읽거나 쓸 때 발생하며, 오작동 또는 악의적 코드를 실행할 수 있게 됨 BOF 종류 설명 Stack B

isc9511.tistory.com