아직은 무슨 뜻인지 의미조차 생소해하는 사람도 많지만 `시큐어코딩`은 이미 금융·공공 분야를 중심으로 폭넓게 확산되고 있다. 행정안전부는 지난해 12월부터 공공기관에서 추진하는 40억원 이상 정보화사업에 시큐어코딩을 의무화시켰다. 점차 범위를 확대해 2015년부터는 공공 정보화 전 사업에 의무 적용된다.
금융권에서는 대부분 은행에 적용된 데 이어 고도화가 진행 중이다. 은행뿐만 아니라 보험, 증권, 카드사 등 제2금융권으로 확산되고 있다. 많은 최고정보책임자(CIO)와 최고정보보호책임자(CISO)가 시큐어코딩을 눈여겨보고 있다.
관련업계도 발 빠르게 움직이고 있다. 외산 제품인 포티파이가 독주하고 있는 가운데 지티원, 이븐스타, 트리니티소프트, 파수닷컴 등 국산 업체들의 도전이 거세다.
◇초기엔 은행 인터넷 뱅킹에 적용
국내에 시큐어코딩이 회자되기 시작한 것은 2000년대 중반부터다. 당시엔 시큐어코딩이라는 용어 대신 `보안 취약점 분석 툴`이라는 용어가 사용됐다. 시큐어코딩은 4년 전 행정안전부에서 시범사업을 시작하면서 정착된 용어다.
시큐어코딩은 코딩 단계부터 보안 취약성을 제거해 보안성을 강화하기 위한 방법이자 툴이다. 이미 개발된 시스템이라 하더라도 취약점을 분석해 처리하도록 해준다. 초기 시큐어코딩은 하나·외환·SC 등 은행권에 적용됐다. 불특정 다수에 개방돼 있는 인터넷뱅킹이 주 대상이었다.
은행 홈페이지는 고객을 위해 개방된 공간으로 방화벽 같은 보안 솔루션을 적용할 수 없다. 따라서 누구나 홈페이지에 들어올 수 있기 때문에 해킹에 취약하다. 무방비로 노출돼 있기 때문에 내부 시스템보다 프로그래밍을 할 때 소스 취약점에 더 신경을 써야 한다. 2006년부터 은행권 인터넷에 시큐어코딩이 본격적으로 도입되기 시작됐다.
은행권은 다른 산업군보다 보안에 대한 투자가 많기 때문에 시큐어코딩이 처음 소개됐을 때, `이제야 이런 툴이 나왔구나`라는 반응이 적지 않았다. 삼성전자 같은 대형 제조사도 은행 못지않은 보안 투자를 하기 때문에 시큐어코딩을 도입했다.
하지만 당시만 해도 공공 분야에는 관련 정책이나 예산이 없었다. 처음 시큐어코딩을 접한 공공기관 실무자들은 `이게 뭔가`라는 반응이 대부분이었다. 하지만 한 공공 프로젝트에 시큐어코딩 툴을 적용했는데 엄청나게 많은 문제점들이 쏟아져 나왔다. 이런 사례들을 접하면서 행안부에서도 시큐어코딩의 필요성을 인식하게 됐다.
2009년 행안부가 예산을 대고 한국인터넷진흥원(KISA) 주도로 시범사업이 시작됐다. 이 사업을 기반으로 지난해 시큐어코딩 가이드라인이 나왔고 의무적용 법제화도 진행됐다.
◇보안과 안정성 강화가 목적
시큐어코딩의 목적은 크게 두 가지로 구분된다. 첫 번째 목적은 당연히 보안성 강화다. 대형 시스템통합(SI) 업체들은 자체적으로 보안성을 높이기 위한 코딩 매뉴얼을 가지고 있다. 교육도 실시한다.
하지만 개발자가 그 매뉴얼을 일일이 외우고 코딩을 진행하기란 불가능하다. 정해진 시간 내에 고객 요구사항 구현도 어려운데 보안성과 품질을 동시에 강화하면서 코딩을 하기란 쉽지 않다. 결국 기존 방식대로 개발을 진행하지만 정작 자신이 개발한 프로그램이 보안에 왜 취약한지 제대로 파악하지 못한다. 그래서 개발자에게 별도의 무기인 `전문 보안 툴`을 제공하는 것이다.
개발자들은 프로젝트를 시행하면서 도중에 시큐어코딩 툴로 본인 개발물을 점검한다. 프로젝트 마무리 단계에서는 전수분석도 실시한다. 툴 적용으로 개발의 흐름이 끊기고 전체적인 개발 기간도 길어질 거라는 우려가 있다. 하지만 이는 잘못된 생각이라는 게 전문가들의 얘기다.
한국HP 포티파이 금융 파트너사인 투비닉스의 송찬성 대표는 “시큐어코딩은 개발 초기부터 적용하는 게 가장 효과가 크다”고 말한다. 일반적으로 개발 초기에는 표준 프로그램을 개발하고 이를 공통으로 재사용하는 경우가 많다. 따라서 초기에 프로그램 버그를 수정해 개발하게 되면 완성 단계에서 재수정 작업이 적어져 결과적으로 비용과 시간을 줄일 수 있다는 얘기다.
시큐어코딩의 두 번째 목적은 안정성 강화다. 차세대 프로젝트와 같은 대형 프로젝트에 시큐어코딩을 적용하면 수많은 애플리케이션에 잠재하는 버그를 잡아내 장애를 줄일 수 있다. 시큐어코딩을 강력하게 적용한 한 프로젝트는 수천개씩 발생하던 `코어덤프(시스템에 있는 잠재적 버그나 문제점의 로그)`가 10개 미만으로 줄어들었다.
◇제2금융권으로 확산
결과적으로 시큐어코딩을 적용하면 보안성과 안정성이 강화되고 고객 신뢰도 높아진다. 테스트 시간을 줄이고 프로젝트 기간과 비용을 대폭 줄일 수 있다. 시스템을 오픈하고 나서 몇 달 동안 수많은 사람들이 참여해 안정화에 매진할 필요가 없다. 문제없이 개발을 했을 때 시간을 1이라고 가정했을 때, 잠재된 버그를 찾는 데는 20배 이상 시간이 든다는 가트너의 분석은 시큐어코딩의 중요성을 단적으로 보여준다.
이런 상황 때문에 현재 제2금융권으로 시큐어코딩이 확산되고 있다. 한화손해보험과 한화생명이 시큐어코딩 프로젝트에 착수했으며 흥국생명과 흥국화재가 프로젝트 착수를 앞두고 있다.
D화재와 현대카드·캐피탈·커머셜, 외국계 보험사 등 상당수 금융사가 시큐어코딩 도입을 검토 중이다. 한 금융지주사의 경우 계열사 한 곳에 시큐어코딩이 성공적으로 도입되자 공동구매를 통해 전 계열사에 확대 적용할 계획이다.
시큐어코딩은 적용 범위에 따라 다르지만 기본적으로 두 달 정도면 구축과 정책 수립이 가능하다. 업체들은 기본적인 교육으로 고객사가 효과적으로 시큐어코딩을 도입하도록 돕는다.
시큐어코딩을 도입할 때 CIO와 CISO가 염두에 둬야 할 점은 시큐어코딩은 단순한 툴 도입이 중요한 게 아니라는 점이다. 내부 업무를 프로세스화 시키는 게 중요하다. 프로그램을 수정하거나 새로운 시스템을 개발해서 내부에 적용할 때 등 어떤 경우에도 시큐어코딩 툴 점검 작업을 거치도록 내재화해야 한다.
송 대표는 “아직까지도 `그동안 사용하지 않았는데도 아무런 문제가 없었다`는 반응을 보이는 고객이 적지 않다”며 “하지만 시큐어코딩은 보안과 시스템 안정화를 통해 결과적으로 고객 신뢰도를 높이는 수단이라는 점을 잊어서는 안 된다”고 충고했다.
안호천기자 hcan@etnews.com