개발/네트워크 보안

BOF

개복치 개발자 2019. 12. 13. 16:30

 

Buffer OverFlow에 대해서 알아보겠습니다.

 

다른 언어에서는 그렇지 않은데, C같은 언어를 사용할 때, 입력하라는 값을 초과하면 입력값이 메모리 영역에 쓰여지는 경우가 있습니다.

 

이 때문에 메모리 주소값을 조작해서 BOF공격이 가능합니다.

 

일단 리눅스 환경에서 BOF를 하기 전에 ASLR을 해지합니다.

 

ASLR(Address Space Layout Randomization )이란 실행 할 때마다 주소가 바뀌는 기능입니다.

 

randomize_va_space=0 : ASLR 해제

randomize_va_space=1 : 랜덤 스택 & 랜덤 라이브러리 설정

randomize_va_space=2 : 랜덤 스택 & 랜덤 라이브러리 & 랜덤 힙 설정

 

Stack Canaries 라고 Stack상의 변수들의 공간과 SFP 사이에 특정한 값을 추가 할 수 있습니다.

 

SSP 옵션으로 아래와 같은 옵션들이 있습니다.

fstack-protector (default)

SSP 적용 (취약한 Function들)

-fno-stack-protector

SSP 사용 않음

-fstack-protector-all

모든 Function에 SSP 적용

 

그럼 Stack Canaries에 대해 파훼법이 없는 것인가요?

- 스택 카나리는 직접적인 BOF에 대한 공격만 고려한 방어 방법이며, return address 조작을 통해 BOF를 발생하는 경우 취약할 수 있다.

 

ASLR은 Stack이나 heap를 임의의 메모리 주소로 배치하는 기법인데, 이를 통해 모든 BOF를 막을 수 있나요?

- 안됩니다. 무작위 공격에 대해 취약합니다.

 

 

 

 

'개발 > 네트워크 보안' 카테고리의 다른 글

Snoofing  (0) 2019.12.13
DDOS  (0) 2019.12.13
CSRF  (0) 2019.12.13
XSS  (0) 2019.12.13
SQL Injection 방어  (0) 2019.12.13