▲ 김종하 파수닷컴 선임 [PA사업팀 EA팀] http://story.wisedog.net/

[아이티데일리] 2012년 5월, 행정안전부는 정보시스템 구축 운영 지침 개정안 행정예고를 통해 시큐어 코딩(Secure Coding) 의무화 법안을 발표하고, 2012년 12월부터 이를 시행한다고 밝혔습니다.

시큐어 코딩? 시큐어 코딩이라는 단어를 처음 들어보시는 분들은 남들이 못 보게 하는 코딩이라는 뜻이라고 생각하실 수 있습니다. 시큐어 코딩에 대해 알아볼까요?
 
시큐어 코딩이 뭔가요?
일반적인 소프트웨어 개발은 보통 요구사항 도출 -> 설계 -> 구현(개발) -> 테스트-> 릴리즈 순으로 이루어 집니다. 시큐어 코딩은 이 구현(개발) 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하여, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법을 말합니다.

중요 포인트는 '개발 단계'에서 이 기법을 적용한다는 점입니다. 옛 속담에 이런 말이 있습니다. "호미로 막을 것을 가래로 막는다". 이 말은 호미로 막을 것을 차일피일 미루다가 결국 가래로 막지 않으면 안 되는 지경에 이르는 것을 말하지요. 소프트웨어 개발에서도 이 속담이 적용됩니다!
 
릴리즈 이전에 소프트웨어 취약점을 50% 줄이면, 침해사고 대응 비용이 75% 감소 - Gartner
92%의 보안 취약점이 네트워크가 아닌 어플리케이션에서 발견 - NIST
릴리즈 이후 오류를 수정하기 위해서는 약 $30,000 의 비용 소요, 하지만 개발 중 오류를 수정하기 위해서는 약 $5,000 면 충분 - NIST
릴리즈 이후 오류를 수정하고자 할 경우 설계 단계보다 100배 증가 - IBM

그렇습니다. 보안 취약점을 줄이기 위해서는 무엇보다 소프트웨어 개발 초기 단계인 구현 단계에서 수정하는 것이 가장 손쉽고 비용 효율성 측면에서 가장 좋기 때문에 이 시큐어 코딩 기법을 적용하고자 하는 것입니다.

사실 '시큐어 코딩'이란 단어는 행정안전부가 최초로 사용하거나 만들어 낸 단어는 아닙니다. 기존에도 이 용어는 사용되고 있었는데요, 대표적인 시큐어 코딩 가이드는 CERT에서 발표하는 가이드입니다. CERT의 가이드는 C, C++, Java, Perl 언어로 개발하는 어플리케이션에서 보안취약성을 개발 단계에서 제거하여 안전한 소프트웨어를 작성할 수 있는 코딩 가이드를 제공하고 있습니다. 
 
행정안전부 시큐어 코딩 의무화
행정안전부는 2012년 5월에 시큐어 코딩 의무화 법안을 발표하면서 당해 12월부터 개발비 40억 원 이상 정보화 사업에 시큐어 코딩 적용을 의무화 하였습니다. 따라서 2012년 12월 이후 개발비 40억원 이상의 정보화 사업을 추진하는 모든 공공기관은 시큐어 코딩 준수사항을 이행해야 합니다. 이 법안은 단계적으로 강화되어 2014년 1월 부터는 20억원 이상의 모든 공공기관 정보화 사업에 적용되며, 2015년 1월부터는 감리대상 전 사업에 대해서 적용됩니다.

현재 행정안전부 시큐어코딩이 적용되는 대상 언어는 Java, C 그리고 안드로이드이며, 소프트웨어 업체는 SQL 삽입(SQL Injection), 크로스사이트스크립트(Cross Site Script) 등 43개의 보안 취약점을 제거해야 합니다. 이 보안 취약성을 제거하기 위해서는 어떻게 해야 할까요? 
 
보안 취약성을 제거하는 가장 좋은 방법
첫 번째 방법은 시큐어 코딩에 정통한 개발자가 코드를 한 줄 한 줄 검사하는 방법이 있습니다. 행정안전부의 시큐어 코딩은 솔루션 도입을 강제하지 않기 때문에 이렇게 검사해도 됩니다. 하지만 수 십만, 수 백만 줄이나 되는 소프트웨어 소스코드를 사람이 일일히 따라가면서 보는 것은 거의 불가능에 가깝습니다. 게다가 사람이 수작업으로 코드를 검사하는 것은 검사 결과에 신뢰성이 떨어질 뿐더라 투자 대비 효용으로 볼 때 추천할만하지 않은 방법입니다.

두 번째 방법은 솔루션(정적분석도구)을 도입하는 것입니다. 행정안전부 시큐어 코딩을 지원하는 솔루션을 도입하면 빠르고 정확하게 소스코드를 검사할 수 있습니다. 게다가 이 도구를 사용하면 시큐어 코딩은 물론 소스코드에 잠재되어 있는 오류도 탐지하기 때문에 프로그램 안정성도 크게 높일 수 있습니다. 결과적으로 소프트웨어의 보안성과 안정성이 강화되어 신뢰성있는 소프트웨어를 개발할 수 있으며, 이는 곧 고객 신뢰도 향상, 매출 증대로 이어질 수 있는 초석이 됩니다.

국내 유일의 실행의미기반(Semantic) 정적분석도구 SPARROW(스패로우)는 개발이 완료되기도 전에 프로그램 소스가 담고 있는 치명적인 오류를 자동으로 검출해주는 시스템입니다. 파수닷컴은 지난 해 시큐어코딩 에 최적화된 SPARROW SCE(스패로우 시큐어코딩 에디션)를 출시하였고, 관련 CC인증 계약을 최초로 체결하며 시큐어코딩에 앞장서고 있습니다. SPARROW SCE는 안전행정부에서 공고한 보안약점 외에도 CWE, OWASP, CERT 등 다양한 국제 표준 가이드를 지원하며, 소프트웨어 보안 뿐아니라 품질 분야까지 포괄적으로 적용할 수 있습니다.
 
>>시큐어코딩 솔루션 SPARROW SCE 자세히 보기 
 
관련 자료
- 행정안전부 시큐어 코딩 (링크)
- CERT (링크)

 


해당 글은 파수닷컴에서 아이티데일리 블로그 게재용으로 제공한 콘텐츠입니다.
저작권은 파수닷컴 측에 있으며, 무단전제 및 복제를 금합니다.
원문출처 :  http://blog.fasoo.com/80200621856

저작권자 © 아이티데일리 무단전재 및 재배포 금지