반응형

출처: http://andyader.blogspot.kr/2014/03/gets.html


알고리즘 예제를 쳐서 확인해볼려고 하는데 gets 함수를 사용하고 GCC로 컴파일하려니 

경고가 뜨면서 이 함수를 사용하지 말라고 하더라.


그래서 검색하다보니 위의 출처에서 도달하였고 

결론은 '버퍼 오버플로우가 생길 수 있으니 사용하지 마라'였다.


즉 받는 쪽은 그 한도가 정해져 있는데 보내는 쪽에서 그 한도 이상을 보낼 수 있고

곧 버퍼 오버플로우가 생길 수 있다는 원인이었다.


처음에 strcpy 함수를 VC에서 사용할려고 했을 떄도 경고가 뜨면서 

strcpy_s 같은 문자열 크기를 명시할 수 있는 함수를 사용하라고 했었고,

회사에 있을 때도 이런 내용을 환기시키는 메일을 받기도 했다.


그 떄는 그런가보다 하고 넘어갔지만, 조금씩 머리에 지식이 쌓이다보니 

조금 더 쉽게 이해가 간다.


저 블로그에 너무 설명을 잘 해놓아서인지 왜 저 API를 만들 당시엔 

저런 문제를 생각하지 않았을까 하는 생각도 들지만, 원래 자기가 만든 것의 실수는 잘 안 보이니까.


그나저나 저걸로 웜 바이러스 만들어서 저렇게나 큰 피해를 입혔다는 것은 처음들었다.

저게 얼마나 충격적이였는지 영문 위키피디아의 위 항목에 들어가보니 

웜 바이러스 소스 코드가 든 디스켓을 박물관에서 보관하고 있다.

바이러스를 만든 사람은 뭐 돈하고 봉사 시간을 받았다고 되어 있으나 

지금은 으레 해커들이 그렇듯 잘 살고 있는 것으로 보인다.


반응형
Posted by 애콜라이트
l

free counters