마이SQL 코드「97가지 버그」발견

일반입력 :2005/02/15 13:47

Robert Lemos

많은 웹 사이트에서 중요하게 쓰이는 대중적인 오픈소스 프로그램인 마이SQL 데이터베이스의 소스 코드를 분석한 결과, 상업적인 코드에 비해 비교적 적은 버그만이 발견되었다고 테스트 전문 기업인 커버리티가 최근 밝혔다.커버리티(Coverity)가 자체적으로 제작한 도구를 이용해 분석한 보고서에 따르면, 마이SQL에서 심각한 보안 문제 하나를 비롯해 97가지의 결함이 있었다고 한다. 이 회사 CEO인 세스 할렘은 "하지만 이 수치는 다른 대부분의 상업적 소프트웨어 코드에 비하면 대단히 적은 수치"라며 "업계의 평균치를 고려할 때 MySQL은 매우 훌륭한 것이다. 사소한 흠이 조금 있을 뿐"이라고 설명했다. 소프트웨어 개발자들에게 커버리티의 도구같은 소스코드 분석 도구가 빠른 속도로 보편화되고 있다. MS는 자체적인 도구를 통해 자사 소프트웨어의 버그를 찾고 보안 취약점들을 줄여 나가고 있다. 온스 랩(Ounce Labs)이나 리플렉티브(Reflective)와 같은 회사들은 자사의 도구를 대기업에 판매해 왔다. 커버리티는 시스코 시스템즈와 오라클을 고객사로 확보한 바 있다.마이SQL 데이터베이스를 개발하고 유지보수하는 스웨덴의 마이에스큐엘(MySQL)사의 마케팅 부문 부사장인 잭 어락커는 "커버리티에 검사를 요청해 보고된 모든 버그를 고쳤다. 이 버그들은 다음 버전에선 모두 사라질 것"이라고 말했다.분석 소프트웨어가 모든 버그를 잡아낼 순 없지만, 특별한 경우의 문제들을 효과적으로 발견할 수 있는 툴임에는 분명하다.대부분 이러한 결함들은 쉽게 해결될 수도 있지만, 외부 해커나 독립적인 보안 연구자들을 통해서만 발견되기도 한다.게다가 이러한 도구를 만드는 많은 회사들이 자사의 툴을 비상업적인 소프트웨어에 자유롭게 쓸 수 있게 허용하고 있다. 따라서 오픈소스 프로젝트에 대해서 코드 분석을 하지 않으면 이런 도구를 먼저 사용한 악의적인 공격자들한테 공격당할 수 있다는 점을 명심해야 한다.또한 이러한 분석 도구의 용도는 버그를 제거하는 것으로 한정되지 않는다. 많은 IT 전문가들이 두 코드의 질을 비교할 때 사용하기도 한다.할렘은 "오픈소스 소프트웨어가 공통된 문제점을 가지고 있는데도 마이SQL이 100개도 안되는 버그를 갖고 있다는 사실은 오픈소스 데이터베이스 코딩이 잘 돼 있다는 것을 보여준다"고 말하며 "발견된 결함들을 제거하는 것이 곧 코드의 가장 명확한 결함들을 없애는 것"이라고 강조했다.연방 사이버시큐리티 파트너십의 소프트웨어 라이프사이클 워킹 그룹(National Cybersecurity Partnetship's Working Group on the Software Lifecycle)의 4월 보고서에 따르면, 카네기 멜론 대학의 소프트웨어 엔지니어링 인스티튜트의 개발 방법 분석을 인용할 때 상업적인 코드는 일반적으로 코드 1000줄 당 하나에서 일곱 개 정도의 버그를 가지고 있다고 한다.커버리티의 분석에 따르면 마이SQL에는 평균적으로 4000줄에 하나의 버그가 있는 셈이니까 상업적인 소프트웨어에 비해 못해도 최소한 네 배는 좋다는 것이다.리눅스 커널에 대한 커버리티의 감사에서도 유사한 일이 있었다. 당시 최신 버전의 커널 570만 줄에 985가지 결함이 있다고 밝혀졌다. 이는 만 줄에 하나의 결점보다도 적게 나온 셈이다. 마이에스큐엘의 어락커는 "과거에 수행했던 다른 연구 결과들도 유사한데, 오픈소스 코드가 깔끔하고 양호하게 구조화되어 있는 것은 사실"이라며 "오픈소스 개발 프로세스에서는 외부에서 코드를 보고 평가하기 때문에, 프로그래머들이 더 깔끔한 코드를 쓸 수밖에 없다"고 덧붙였다.커버리티는 리눅스와 마이SQL를 분석함으로써 오픈소스 기반 웹 서버의 구성 요소 네 가지 중 두 개에 대한 질적 검사를 수행할 수 있었다. 남은 두 가지 요소인 아파치 웹 서버와 PHP 웹 스크립트 언어도 가까운 시일 안에 분석될 것이라고 할렘은 말했다. @