2020-06-04 09:15 (목)
[특집] 소스코드 보안을 위한 최상의 방안은?
상태바
[특집] 소스코드 보안을 위한 최상의 방안은?
  • 길민권
  • 승인 2011.06.01 20:46
이 기사를 공유합니다

애플리케이션 보안은 다양한 팀간 상호 협력있을 때만 가능
개발 문화와 프로세스의 변화가 필요

 
웹 애플리케이션을 통한 기업의 업무들이 많아 지면서 최근 수 년간 국내에는 애플리케이션 해킹으로 인한 수많은 사고들이 발생 하였으며, 그 피해는 과거의 것과는 비교할 수 없을 정도의 규모로 기업의 존폐를 위협할 정도로 커지게 되었다.
 
국내에서 웹 보안의 위험성과 중요성이 인식되기 시작한 것은 2000년대 초반부터이다. 하지만 10년 남짓 지난 지금의 현실을 살펴 보면 문제가 줄어들지 않고, 오히려 사고의 빈도와 규모가 증가 하고 있는 것은 애플리케이션 보안이라는 분야가 기존의 보완 방법으로는 해결하기 어려운 어떠한 문제가 있기 때문이지 않을까?
 
지금까지의 애플리케이션에 대한 보안 검사는 개발 완료 후에 모의해킹 등의 사후 관점의 방법을 사용함으로써 보안 검사 결과 여러 취약점등의 오류가 발견되었다 하더라도 남은 개발기간과 비용의 문제, 더 나아가 이미 개발된 애플리케이션의 기술적인 문제로 인해 취약점을 제거 하지 못할 가능성이 높았고, 개발 초기에 보안이 고려 되어지지 않았기 때문에 개발프로젝트 후반에는 일반적으로 조치 해야 할 중요한 보안 문제가 많이 발견되게 되어 문제 개선을 위한 추가 기간과 비용이 많이 들기 때문에 문제를 개선하지 못할 확률이 높은 것이 현실 이었다.
 
사실 이러한 문제는 개발팀과 보안팀의 적극적인 상호 협조가 없으면 해결하기 어려운 문제이다. 애플리케이션 설계에 보안에 대한 고려사항을 반영 하고 개발자가 애플리케이션 개발시에 코드상에 보안 문제점이 없는지 확인하여 문제를 사전에 제거하고 확산되지 않도록 하여 개발 완료 후에 조치 해야 할 보안 취약점의 수를 줄이도록 해야 한다.
 
하지만 개발자는 보안 전문가가 아니기 때문에 개발자로 하여금 보안관점에서 코딩을 할 수 있는 능력을 어떻게 부여 할 것인가 라는 고민에 봉착하게 되고 결국 보안팀에서 도와 주어야 하는데, 그렇다고 소수의 보안팀원이 다수의 개발팀과 개발자의 코드를 일일이 분석하여 문제를 발견하고 수정하도록 권고 한다는 것은 현실적으로 불가능에 가까운 상황이며, 애플리케이션의 보안취약점을 분석 할 수 있는 보안전문가를 보유 하고 있는 기업은 거의 없는 것 또한 현실이다.
 
이러한 한계를 극복하기 가장 적합한 솔루션이 보안전문가와 개발자 양쪽의 시각으로 문제에 접근하는 소스코드 분석이라는 것은 애플리케이션 보안문제를 고민해본 IT 담당자들이라면 이미 잘 알고 있을 것이다. 이러한 이유로 소스코드 보안점검 솔루션의 도입을 검토 하고 있거나 운영 하고 있는 기업이 점차 늘고 있는 추세이고, 보안이 중요시 되는 애플리케이션 개발 과정에서의 소스코드 보안분석은 필수이며 기본 사항이라는 인식이 확산 되어 가고 있다.
 
그렇다면 이러한 시스템을 구축하고 나면 모든 문제가 해결되는 것일까?
많은 보안담당자들이 소스분석 시스템이 모든걸 해결해 줄 것이다라고 생각하는데 현실은 그렇지 않다.
 
소스코드 분석 제품을 도입하여 운영 하려면 먼저 명확한 분석기준, 즉 보안 개발 가이드라인이 마련되어야 한다. 물론 소스코드 분석 제품에서 기본으로 권고하고 있는 가이드라인이 있긴 하지만 업무특성을 고려하지 않고 무리하게 가이드 라인을 적용 하다 보면 개발자는 불필요한 시간낭비 요인이 생기게 되고 결국 보안은 개발에 방해만 된다는 인식만을 키워줄 뿐이다. 그렇기 때문에 보안팀에서는 조직의 업무 특성에 맞는 현실적인 가이드라인을 설정해 주어야 하며 내부에 전문가가 없다면 외부 전문가의 도움을 통해서라도 명확한 가이드 라인 수립이 필요하다.
 
또한 보안 담당자는 개발전문가가 아니기 때문에 코드상에 문제가 나타나도 문제를 이해하기 어렵고, 개발자는 보안전문가가 아니기 때문에 보안 취약점에 대한 이해를 하기 어려운 특성을 가지고 있는 탓에, 보안팀과 개발팀간에 책임과 원활한 상호 협력이 없으면 소스코드 분석 제품 운영에 대한 부담만 남아 도입된 소스코드 분석 제품은 이벤트성 분석, 즉 분석을 위한 분석으로 끝나고 개발 전반에 녹아 들기 어렵게 되어 툴 도입의 의의가 사라지는 경우를 많이 보게 된다.
 
이러한 문제를 개선하여 상호 유기적이고 지속 가능한 운영을 하기 위해서는 툴 도입에서 끝나는 것이 아니고 툴을 활용한 ‘보안 개발 프로세스의 구축’이 결국엔 필요 하게 된다. 이러한 프로세스는 ‘애플리케이션 취약점 점검 지침 및 개발 보안 가이드라인 수립’, ‘개발시 개발자 자체 보안 점검 체계 수립’, ‘운영 시스템에 대한 정기 보안 점검 체계 구축’, ‘전통적인 품질위주가 아닌 보안을 포함한 품질 테스트(QA) ’, ‘개발 보안 교육 및 인식 확산’의 개발 및 보안 전반에 걸친 시스템과 조직상인 많은 변화와 노력이 필요하며, 이를 운영할 인력이 보안팀, 개발팀, QA, 운영팀 전반에 걸쳐 할당될 필요가 있다.
 
이러한 운영 인력을 시작으로 ‘안전한 애플리케이션은 안전한 개발보안 프로세스의 구축’으로 시작된다는 인식이 확산되어 애플리케이션 개발 운영상에 위치하는 개발팀, 보안팀, QA팀, 운영팀 모두가 애플리케이션 보안에서의 담당자라는 인식 전환을 필요로 하게 되며, 이러한 인식과 조직의 변화는 담당자들의 노력과 함께 자원을 할당하는 의사 결정권자의 강한 의지가 반드시 수반되어야 비로서 현실성을 갖게 된다.
 
애플리케이션 보안은 개발팀, 보안팀, QA팀, 운영팀 등의 다양한 팀간의 상호 협력이 있을 때에만 이벤트가 아닌 상시 체계의 보안을 적용 할 수 있고, 기존의 보안 영역과는 접근 방법 부터가 다른 특성을 가지고 있다는 인식, 즉 애플리케이션에서의 보안은 보안팀만의 업무가 아닌 개발팀이 주체가 되는 업무라는 인식과 개발은 기능 구현도 중요하지만 보안도 무엇보다 중요하다는 인식의 확산, 즉 안전한 애플리케이션 개발은 개발 또는 보안팀만의 문제가 아니고 개발 전반에 걸친 모든 인력의 참여와 노력이 수반 되어야 결실을 맺을 수 있다는 인식의 변화, 즉 개발 문화의 변화로 부터 시작 되어야 지속 가능한 개발보안 프로세스를 확보 할 수 있는 것이다.