반응형
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 |