http://www.zdnet.co.kr/techupdate/trend/article.jsp?id=68463




C 개발자들의 숙원, 보안 강화「해법 보인다」







2004/04/16




C 개발자들이 오랜 기간 꾸준히 제기해 온 보안 강화 문제가 드디어 해결될 전망이다. MS가 비주얼 스튜디오 2005에서 보안을 강화한 새로운 C 런타임 라이브러리 루틴을 포함시키기로 한 것이다.








John McCormick (ZDNet Korea)
참여
원문보기






일부 C 런타임 라이브러리 루틴이 단순히 기능 위주의 루틴들보다 훨씬 안전하다는 것은 더이상 비밀이 아니다. 안전해 보이는 루틴에 버그와 보안 취약점이 존재한다는 것 역시 사실이다.



MS의 수석 보안 엔지니어 마이클 하워드가 최근 C를 더 안전하게 하기 위한 프로젝트가 어디까지 진행되고 있는지 밝혔다. 이 프로젝트의 첫번째 결과물은 strsafe.h로, 이는 지난 2002년 MS가 발표한 비주얼 스튜디오 닷넷 2003과 플랫폼 SDK 문자열 함수(string function)이다. MS의 비주얼 C++ 팀은 필자의 제안대로 C 런타임 라이브러리 함수의 보안 성능을 평가중이다. 그러나 이들은 개발자 개인이 할 수 있는 영역을 훨씬 넘어서는 일을 하고 있는데, 예를 들면 보안 향상을 위해 약 400개의 루틴을 재작성하기도 했다.



새로운 C 함수은 비주얼 스튜디오 2005을 통해 첫선을 보일 예정으로, 이 가운데 일부는 재컴파일을 통해 구식 코드를 향상시키게 될 것이다. 그러나 하워드의 현명한 지적처럼, 대부분 코드의 보안을 강화하기 위해서는 개선된 라이브러리만으로는 부족하다. 가장 안전한 함수과 지침을 실행하는 데에도 관심을 가져야 한다.



새로운 컴파일러는 구형 함수 이름들을 유지하게 되며, 일부 구형 함수들은 명료하게 개선될 예정이다. 그러나 개발자들이 구형 코드를 컴파일하려면 구형 코드를 변경하거나 컴파일러 세팅을 변경해야 한다. 새로운 컴파일러는 오래된 안전하지 않은 버전의 함수을 찾아내면 에러를 발생시키기 때문이다. 또한 비주얼 스튜디오 2005 컴파일러는 어떤 코드를 변경해야 하는지 화면에 알려주므로, 이름이 변경된 함수를 사용하는 이미 최상의 지침을 따르는 코드를 이용할 수 있게 하고, 구형 라이브러리에 존재하는 기존 문제를 수정해 보안을 강화한다.



이와 같은 새로운 라이브러리들은 아직도 개발, 테스트 과정이기 때문에 일부 변화는 불가피하다. 그러나 하워드의 발표 내용에는 몇가지 흥미롭고 중요한 변경사항이 포함돼 있다. 필자는 최종버전에서 다음과 같은 사항이 유사하거나 거의 동일한 형태로 반영될 것으로 예상한다.



  • Calloc 함수는 보다 많은 매개변수 체크할 수 있도록 강화될 것이며, 함수 이름은 기존과 동일하게 유지될 것이다.




  • 큰 골치거리였던 Strncast 함수는 ‘strncat_s’라는 완전히 새로운 함수로 거듭난다. 새로 추가되는 함수에는 strncpy_s 함수도 있는데, 이들 두 함수의 새로운 버전들은 다음과 같은 서명(signature)를 갖게 된다.
  • - 포인터가 아닌 에러코드 (errno_t)를 리턴

    - 목적 버퍼 (char *)

    - 목적 버퍼의 총 문자 수 (size_t)

    - 소스 버퍼 (const char *)

    - 소스 버퍼의 총 문자 수 (size_t)


    새로운 버퍼 카운트는 ‘목적 버퍼 카운트를 계속 계산할 필요’가 없다. 두 함수 모두 ‘항상 널터미네이트(null-terminate)된 문자열’이며 입력 매개변수 체킹 기능이 향상됐다. 또한 새로운 C++는 표준 템플릿 라이브러리를 수정/보완할 것으로 보인다. 현재 이 라이브러리는 반복자(iterator)를 잘못 사용하면 버퍼 오버런 오류가 발생한다.



    필자는 MS가 옳은 방향으로 가고 있다고 믿는다. 이처럼 런타임 라이브러리가 개선된다면 C 개발자들은 비주얼 스튜디오 2005를 심각히 고려할만 하다. MS는 이와 같은 변경사항을 이미 표준 단체에 제안한 바 있다. 30쪽 분량의 이 제안서(영문 PDF 자료임)에는 표준 함수 호출과 관련된 수많은 변경사항들이 자세히 기술돼 있다.



    오늘날 C는 마치 공룡과 같다. 놀랍만큼 뛰어난 활용성 아니라면 개발자 누구도 더 이상 사용하지 않을 것이다. 오랫동안 C에 대한 대규모 보안 업데이트가 필요했다는 점을 고려하면, 지금까지 MS의 행보는 옳은 방향을 향해 큰 걸음을 떼고 있는 것으로 보인다. 지금도 개발이 진행중이고 테스트를 할 수 있는 상황도 아니기 때문에 비주얼 스튜디오 2005에 대해 지지를 표시할 순 없지만, 지금까지 공개된 내용을 토대로 판단해 보면, 개발자들은 비주얼 스튜디오 2005을 이용해 더 쉽게 안전한 애플리케이션을 개발할 수 있을 것으로 보인다. @



    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    + Recent posts