소프트웨어 개발보안의 의미
최근의 사이버 공격(해킹)은 보안패치가 발표되기 이전의 보안취약점을 악용하는 제로데이(Zero Day)공격, 웹사이트를 대상으로 한 해킹이 주를 이루고 있다. 이러한 공격들은 소프트웨어 자체에 내장된 보안취약점을 이용하는 것이 대부분으로, 특히나 소스코드의 보안취약점을 이용한 사이버 공격은 방화벽ㆍ침입차단시스템ㆍ침입방지시스템 등의 일반적인 보안장비로는 대응이 어려운 특성을 가진다. 이러한 공격형태는 소프트웨어의 취약점을 공략하기 때문에 일반적인 보안장비들은 악의적 접속시도를 ‘정상’으로 인식하기 때문이다.
“소프트웨어 개발보안”이란 앞서 말한 사이버 공격에 대응하기 위하여 소프트웨어의 개발단계부터 보안취약점을 보완하여 공격시도를 원천 차단한다는 개념이다. 구체적으로 소프트웨어 개발과정에서 개발자의 실수나 논리적 오류 등으로 인한 소프트웨어의 보안취약점을 최소화하고, 해킹 등의 보안위협에 능동적으로 대응할 수 있는 안전한 소프트웨어를 개발하기 위한 일련의 과정을 일컫는다.
광의의 소프트웨어 개발보안은 SDLC(Software Development Life Cycle/소프트웨어 개발 생명주기)의 각 단계별로 요구되는 보안활동이라 할 수 있고, 협의로는 소프트웨어 개발과정에서 소스코드를 작성하는 구현단계에서 보안취약점을 배제하기 위한 ‘시큐어코딩(Secure Coding)을 의미한다.
* SDLC(Software Development Life Cycle / 소프트웨어개발생명주기)
소프트웨어개발생명주기란 소프트웨어 개발과정을 여러 단계로 구분하고 각 단계별 시행규칙을 정하는 것을 말한다. 어느 한 가지 정해진 과정은 없으며, 각 회사별로 다양한 주기를 운영하고 있다. 그러나 대부분의 주기 패턴은 비슷한 양상을 보이며, 대표적으로 Water fall model, Linear Sequential 등이 있다.
소프트웨어 개발보안의 중요성
해킹, 악성코드의 수준은 날로 높아만 가는데, 이에 대한 대비는 그 동안 악성코드를 개별적으로 분석해 대응할 수 있는 패턴을 개발하고 적용하는 방식이었다. 대응방법이 항상 following일 수밖에 없기 때문에 새로운 공격형태가 나타나면 값비싼 보안장비를 갖춘 기업도 속수무책으로 당하고 만다. 게다가 예견이 불가능한 지금까지의 보안장비마저 비용이 만만치 않아 기업들로선 보안에 대한 투자가 망설여지고 중소업체의 경우에는 엄두도 내지 못한다.
그러나 소프트웨어 개발보안의 경우에는 개발단계에서 이러한 취약점을 미리 보완하고 대처하기 때문에 사후 대응 방식의 보안취약점 제거 비용 보다 수십 배의 비용을 절감할 수 있다. 게다가 사후 대응이 아닌 사전 대비 방식이므로 상대적으로 해킹 사고 발생 가능성이 낮다고 할 수 있다.
최근 행정안전부는 이러한 시큐어코딩을 의무화하여 정보보호에 한 발 더 다가가는 모습이다. 단계적으로 정부기관에서 추진하는 정보화사업에 소프트웨어 개발보안 적용을 의무화하고, 점차 범위를 넓혀간다는 내용의 계획을 발표한바있다. 앞으로 소프트웨어 개발자들은 이러한 시큐어코딩에 대한 전문성을 기르지 못하면 전문인력으로 대접을 받지 못할 가능성도 있다. 보안ㆍ정보보호가 그 어느 때보다 화두가 되는 요즘 ‘소프트웨어 개발보안’은 선택이 아니라 필수이다.
* 법무법인 민후 김경환 변호사, 블로그(2012. 4. 4.) 기고.