BackEnd/C / / 2018. 6. 16. 13:57

[C언어] 시큐어 코딩 - 버퍼 오버플로우(Buffer Overflow)

반응형

C언어 - 보안 취약한 코딩 확인 및 시큐어 코딩하기


1. 버퍼 오버플로우(Buffer Overflow) 케이스


- buffer overflow case


상세 설명 : 

위 코드를 보면 buf[100]으로 변수 설정을 하였는데

다음 해당 buf에 user로 부터 받은 user_input 데이터를 메모리카피를 수행합니다.(memcpy)


만약에 user_input이 100이 넘는 값이 들어오면 어떻게 될까요??

-> 이런 경우가 취약점이며 문제입니다.

 

이런 경우는 버퍼 오버플로우가 발생하게되고 

이것이 의미하는 바는 메모리 부분을 접근할 수 있는 코드가 된다는 것입니다.


*메모리를 해당 코드로 접근이 가능하다면 user_input에 특정코드를 심어 메모리에 올릴 수 있게 된다는 말입니다. 

아니면 메모리의 올려져 있는 시스템상의 데이터를 읽을 수 있다는 것입니다.


위와 같은 코딩은 하지 않도록 하는게 맞습니다.


그러면 어떻게 해결해야할까요?

사용자로부터 받은 입력데이터의 유효성 검사를 해야하는 과정이 필요합니다.


user_input가 e-mail 주소를 받는다면, 

e-mail 주소의 데이터 포맷인지 (@ , . 등) user_input 이 들어왔을때 확인하는 로직이 필요합니다.

자리수 제한이 있다면 애초에 버퍼크기와 user_input값의 제한을 두는 방법도 있습니다.





  

반응형

'BackEnd > C' 카테고리의 다른 글

[C언어] 비트 연산자 종류  (0) 2016.04.26
[C언어] 이스케이프 시퀸스(Escape Sequence)  (0) 2016.04.26
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유