공격자의 초점이 지속적으로 애플리케이션 계층을 향해 이동함에 따라 소프트웨어(SW, Software) 자원보호가 중요 해졌다.
최근 발생되는 인터넷상 공격시도의 약 75%는 소프트웨어의 보안취약점을 악용하는 것으로, 특히 외부에 공개되어 불특정 다수를 대상으로 사용자 정보를 처리하는 웹 애플리 케이션의 취약점으로 인해 중요정보가 유출되는 침해사고가 빈번하게 발생되고 있다.
보안강화를 위해 구축해놓은 침입 차단시스템과 같은 보안장비로는 응용프로그램 취약점에 대한 공격을 완벽히 방어하는 것은 불가능하다. ‘SW개발보안’은 SW개발과정에서 개발자의 실수, 논리적 오류 등으로 인해 발생될 수 있는 보안 취약점, 보안약점들을 최소화하여 사이버 보안위협에 대응할 수 있는 안전한 SW를 개발하기 위한 일련의 보안활동을 의미한다.
즉, SW개발 생명주기(SDLC, Software Development Life Cycle)의 각 단계별로 요구되는 보안활동을 수행함으로써 안전한 소프트웨어를 만들 수 있도록 한다.
SW개발보안의 중요성을 인식한 미국의 경우 국토안보부(DHS)를 중심으로 시큐어코딩(Secure Coding)을 포함한 SW개발 전 과정(설계, 구현, 시험 등)에 대한 보안 활동 연구를 활발히 진행하고 있으며, 이는 2011년 발표한 “안전한 사이버 미래를 위한 청사진(Blueprint for a Secure Cyber Future)”에 나타나있다.
국내의 경우,2009년부터 SW개발단계에서 SW보안약점을 진단하여 제거하는 SW개발보안 관련 연구를 진행하면서, 2009년부터 2011년까지 전자정부 지원 사업을 대상으로 SW보안약점 진단 시범사업을 수행하였다.
SW보안약점 제거·조치 성과에 따라 2012년 SW개발보안 제도가 도입되어 단계적으로 의무화가 이루어졌다.
□ 가이드 목적 및 구성
소프트웨어 보안의 목표는 성공적인 사업을 운영하기 위한 정보자원의 기밀성, 무결성, 가용성을 유지하는 것이다. 이러한 목표를 달성하기 위해서 보안통제 기능의 구현이 요구되며, 이 가이드에서 소프트웨어의 취약점을 완화시킬 수 있는 각 개발 단계별 기술적 통제항목이 소프트웨어 개발에 올바르게 적용되었는지 진단하는 방법을 중점적으로 설명하고 있다.
소프트웨어 보안 취약점은 - 보안 요구사항이 정의되지 않았거나,
논리적인 오류를 가지는 설계를 수행하였거나,
기술취약점을 가지는 코딩 규칙을 적용하였거나,
소프트웨어 배치가 적절하지 않았거나,
발견된 취약점에 대해 적절한 관리 또는 패치를 하지 않은 경우
발견되며, 이러한 취약점으로 인해 시스템이 처리하는 중요정보가 노출되거나 정상적인 서비스가 불가능한 상황이 발생하게 된다.
이 가이드는 소프트웨어 개발 생명주기에 고려되어야 하는 보안위협을 최소화하기 위해 각 단계별 수행해야 하는 보안 활동들이 개발자들에 의해 적절하게 수행되었는지를 점검하는 SW보안약점 진단원들에게 도움이 되도록 한다.