시스템 보안 - 버퍼 오버플로우(Buffer Overflow) 취약점
다음 중 C언어 함수 중에서 버퍼 오버플로우 취약점이 발생하지 안도록 하기 위해 권장하는 함수가 아닌 것은? 4
① strncat()
② strncpy()
③ snprintf( )
④ gets()
개요
프로세스 메모리 영역 중 버퍼에 초과값을 입력하여 시스템을 중지시키거나 원하는 동작을 하도록 조작할 수 있다.
종류
스택 버퍼 오버플로우(Stack Buffer Overflow)
주고 SetID가 설정된(루트 권한으로 실행되는) 프로그램들이 타겟이 된다. 입력값에 수용 가능한 버퍼보다 큰 값을 입력하여 임의의 공격코드를 루트 권한으로 실행시킬 수 있도록 한다.
힙 버퍼 오버플로우(Heap Buffer Overflow)
할당된 힙 공간이 함수에 대한 포인터를 포함하고 있따면 공격자는 이 주소를 변경하여 겹쳐 쓴 버퍼에 있는 공격코드를 가리키도록 할 수 있다. 스택 오버플로우만큼 흔히 사용 가능한 공격은 아니다.
방어 기업
스택가드(Stackguard)
- 카나리(canary)라고 불리는 무결성 체크용 값을 삽입하여 스택에 변조가 발생했는지 확인한다.
- gcc등 각종 컴파일러에 이 기업이 반영되어 업데이트 되었다.
- Stackguard, ProPolice, -fstack-protector, -fstack-protector-all, -fstack-protector-strong, PointGuard 등으로 발전되어 어 왔다.
안전한 언어, 함수 사용
- 버퍼 오버플로우에 취약한 언어: C, C++
- 버퍼 오버플로우에 취약한 함수
strchar(), strcpy(), gets(), scanf(), sscanf(), vscanf(), vsscanf(), sprintf(), vsprintf(), gethostbyname()
- 대신 사용이 권장되는 함수
strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf()
운영체제에서 제공하는 주소 방어 사용
- 스택과 힙을 실행 불가능 (No Executable)한 영억으로 만든다.
- 프로세스 주요 공간에 있는 데이터의 위치를 예측하기 힘들도록 조작하는 방법
'IT > 정보보안' 카테고리의 다른 글
네트워크 보안 - 방화벽 구축 방법 (0) | 2019.08.28 |
---|---|
네트워크 보안 - Firewall, IDS, IPS, UTM (0) | 2019.08.27 |
시스템 보안 - LSA, SAM, NTLM, SRM (0) | 2019.08.27 |
시스템 보안 - 멀웨어(Malware), 바이러스, 웜, 트로이 목자, 스파이웨어 (0) | 2019.08.27 |
시스템 보안 - 트로이 목마, 매크로 바이러스, 웜, 악성 스크립트 (0) | 2019.08.27 |
댓글