이론/[System 이론]
BOF(Buffer OverFlow) - 버퍼 오버 플로우
환석이
2023. 3. 19. 20:13
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