다음 중 버퍼 오버플로우(Buffer Overflow)에 취약한 C언어… | [국회직 9급 정보보호론] 17년 1회차 기출문제 상세 페이지
1[국회직 9급 정보보호론] 17년 1회차
다음 중 버퍼 오버플로우(Buffer Overflow)에 취약한 C언어 함수로 옳지 않은 것은?
1
int scanf (const char *format, ...);
2
char *gets (char *buf);
3
int strcmp (const char *str1, const char *str2);
4
char *realpath (const char *path, char *resolved_path);
5
char *strcat (char *dest, const char *src);
해설
버퍼 오버플로에 취약한 함수가 아닌 것은 strcmp이다.
strcmp는 두 문자열을 읽어 비교만 할 뿐 버퍼에 데이터를 쓰지 않으므로, 쓰기 범위를 넘기는 오버플로가 일어나지 않는다.
- scanf: %s 형식처럼 길이 제한 없이 입력을 받으면 버퍼를 넘칠 수 있다.
- gets: 입력 길이를 전혀 검사하지 않는 대표적인 위험 함수다.
- realpath: 변환 경로를 resolved_path 버퍼에 쓰므로 버퍼 크기가 부족하면 넘칠 수 있다.
- strcat: 대상 버퍼의 남은 크기를 확인하지 않고 문자열을 이어 붙인다.
오류나 개정된 내용이 보이면 알려주세요