Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 정보보안기사 전자지불 시스템
- 정보보안
- AWS SA Series
- 정보보안기사
- 보안뉴스
- 정보보안기사 위험분석 정리
- AWS 리전이란?
- AWS 용어
- AWS AZ
- ms트래픽문제
- windows트래픽
- 정보보안기사 데이터베이스
- DVWA 환경구성
- openvpnconnect
- 티스토리 오류 수정
- openvpn error
- AWS 가용 영역
- tlu.dl
- 데이터베이스 보안 정리
- javascript끄기
- 전자금융_취약점
- iso http통신
- metasploit_series
- 위험분석 관리
- 게시글 복사 방법
- xz-utils
- Risk Analysis
- 취약점
- DVWA 설치
- elasticsearch
Archives
- Today
- Total
ARTIFEX ;)
# 버퍼 오버플로우(Buffer Overflow) 취약점 본문
반응형
# 버퍼 오버플로우(Buffer Overflow)
프로세스 메모리 영역 중 버퍼에 초과 값을 입력하여 시스템을 중지시키거나 원하는 동작을 하도록 조작할 수 있다.
# 종류
스택 버퍼 오버플로우(Stack Buffer Overflow)
: 주로 SetUID가 설정된 프로그램들이 타겟이 된다. 입력 값에 수용 가능한 버퍼보다 큰 값을 입력하여 임의의 공격을 루트 권한으로 실행시킬 수 있도록 한다.
ㄴ 원리:
- 프로그램에서 특정 함수를 실행시키면 스택에 돌아가기 위한 주소가 기록된다. (함수에서 return이 호출되면 그 값과 함께 돌아갈 주소)
- 버퍼에 큰 값을 넣게 되면 이 스택 영역을 침범하게 된다.
- 리턴 주소가 들어갈 곳에 쉘코드나 다른 프로그램의 주소를 넣으면 그것이 실행되게 한다.
힙 버퍼 오버플로우(Heap Buffer Overflow):
- 힙 데이터 영역에서 일어나는 버퍼 오버플로우이다.
- 스택 오버플로우만큼 흔히 사용가능한 공격은 아님.
- 동적 메모리 할당 연결(malloc 상위 수준 데이터)를 덮어씀으로써 프로그램 함수 포인터를 조작한다.
# 보안
* 시큐어코딩 :
- 버퍼 오버플로우에 취약한 언어 : C, C++
- 버퍼 오버플로우에 취약한 함수 :
- strcat()
- strcpy()
- gets()
- scanf()
- sscanf()
- vscanf()
- vsscanf()
- sprinf()
- vsprintf()
- gethostbyname()
대신 사용이 권장되는 함수:
- strncat()
- strncpy()
- fgets()
- fscanf()
- vfscanf()
- snprintf()
- vsnprintf()
* 스택 가드
* 스택 쉴드 :
- 함수 시작 시 복귀주소를 Gloval RET이라는 특수 스택에 저장해둔다.
- 함수 종료 시 저장된 값과 스택의 RET값을 비교해 다를 경우 오버플로우로 간주하고 프로그램 실행을 중단.
* ASLR :
- 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화한다.
- 실행 시 마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정주소 호출을 차단한다.
- 리눅스에서 다음과 같이 설정할 수 있다.
- # echo 2 > /proc/sys/kernel/randomize_va_space
* 실행 불가능 영역 :
- Solars 2.7 이상 버전에서 /etc/system 파일에 noexec_user_stack, noexec_user_stack_log 를 1로 set.
- 스택과 힙을 실행 불가능한 영역으로 만든다.
* 대응 수단 정리
1. 스택상에 있는 공격자의 코드가 실행되지 못하게 한다.
2. 함수의 진입과 종료 코드를 조사하고 함수의 스택 프레임에 대해 있는지를 검사한다.
3. 변수 타입과 그 변수에 허용되는 연산들에 대해 엄격하게 제한하는 고급 프로그래밍 함수를 사용한다.
반응형
'# License > 정보보안기사' 카테고리의 다른 글
VPN 정리 (0) | 2020.05.21 |
---|---|
운영체제 OS Part.1 (0) | 2020.05.21 |
ARP 스푸핑 기본과 과정 (0) | 2020.05.19 |
포트 스캔 OpenScan + Stealth Scan 설명 (0) | 2020.05.19 |
APT 특징 및 관련 유형 (0) | 2020.05.19 |