#1. 시큐어코딩에 대해 알아보자.
안녕하세요 (주)보안클라우드입니다.
다들 즐거운 하루보내고 계신가요????
'쉽게보는 IT보안이슈' 영광스러운(?) 첫번째 주제로는 SW개발보안의 핵심, 바로 '시큐어코딩'에 대해 알아보려고 합니다. 법제정을 통한 의무화, 활발한 교육과 사업진행 등 국내 뿐만아니라 전세계적으로도 IT보안의 이슈가 되고있는 쟁점이기에, 블로그의 첫번째 주제로 전혀 손색이 없을 것이란 생각이 드네요.
우선 '시큐어코딩'에 대한 정의를 보면 아래와 같습니다.
안전한 소프트웨어 개발을 위해 소스 코드 등에 존재할 수 있는 잠재적인 보안취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안활동
위 글을 간략히 줄이면 시큐어코딩이란, 소스코드를 대상으로 취약점을 발견 및 분석하고, 이를 개선하는 보안활동이라 할 수 있는데, 사실 직접 코딩을 하는 개발자 입장에선 취약점을 하나하나 감안하는 프로그래밍이란 보통 어려운 일 일 수가 없을 것입니다..ㅜ
허나 국내에서는 2012년 12월부터 시큐어코딩에 대한 법규가 제정 및 시행되었고, 이후 현재까지 몇차례 개정을 통해 점점 시큐어코딩에 대한 중요성이 강조되는 추세입니다.
그렇다면 무엇때문에 시큐어코딩의 중요성이 이렇게 강조되고 있는 것일까요??
첫째, 비용효율성적인 장점 때문입니다.
단기적인 비용절감 측면으로만 보면, 시큐어코딩은 추가적인 비용이 들거나 코딩을 더욱 고된 작업으로 만드는 비효율적인 부분으로 인식될 수도 있습니다. 허나 장기적인 측면에서 본다면, 시큐어코딩은 서비스 이후에 발생할 수 있는 오류나 취약점을 사전에 발견 및 방지하고, 마치 질병을 방지하기 위해 예방주사를 맞는 것처럼 좀 더 튼튼하고 건강한 소프트웨어가 탄생할 수 있게 도와주는 아주 의미있는 과정이라고 볼 수 있습니다. 실제로 미국 국립표준기술연구소(NIST)에 따르면 소프트웨어 개발완료 이전 소스코드 오류 검출작업은 실제 침해발생 시 기업이 부담해야하는 비용의 최대 30배까지 비용을 절감할 수 있다는 통계를 발표한 바 있습니다.
둘째, 나날이 다양해져가는 '해킹'방법들과 늘어가고 있는 '개인정보'의 중요성 떄문입니다.
OWASP(The Open Web Application Security Project)는 4년마다 이슈가 되는 웹 취약점과 공격유형에 대해 발표하는데, 기본적인 SQL Injection, XSS, CRSF 등은 물론이고, 현재 배포되어 있는 해킹툴을 이용한 무궁무진한(?) 공격들을 감안해 볼 때, 실제로 서비스 중인 프로그램을 네트워크 장비나 서비스 이후의 코드 수정 방법들을 통해 모두 막는 것은 매우 어려운 일입니다. 특히나 이미 서비스하고 있는 프로그램의 소스를 수정하는 일은 처음 개발 당시 코딩에 비해 까다로운 작업일 뿐만아니라 자칫 잘못하면 서비스가 제대로 구동되지 않아 장애를 발생할 수 있을 만큼 매우 위험한 일이기도 합니다.
이러한 이유 때문에 다양해져가는 공격들에 효율적으로 대응할 수 있을 만큼 처음부터 건강하고 튼튼한 몸체를 가진 소프트웨어를 개발하는 '시큐어코딩'작업은 SW개발과정에 필수적인 요소라고 할 수 있으며, 실제로 마이크로소프트(Microsoft)의 경우 자체적인 개발생명주기(MS-SDL)을 적용하여, 차후 발생할 수 있는 취약점을 미연에 발견하고 이를 방지하는 사례를 보여준 바 있습니다.
출처 : 마이크로소프트 홈페이지(https://www.microsoft.com/en-us/sdl/about/benefits.aspx)
글을 마무리하며, 마지막으로 그렇다면 우리는 어떻게 시큐어코딩을 활용해야 할까요??
앞서 말씀드린 바와 같이 개발단계에서 안그래도 고된 코딩작업에 추가적으로 시큐어코딩을 결합시키기는 것은 작업을 더디게하고 까다롭게 만드는 일이 될 수 있습니다. 작은 프로젝트여서 소스양이 얼마 되지 않는다면 모를까, 대형 프로젝트의 경우 감당해야 하는 코딩작업량과 소스량이 많기 때문에 이에 대한 소스취약점 분석을 일일이 눈으로 찾아가며 하는 것은 불가능한 일 일 것입니다.
이러한 수고를 덜기 위해 행정자치부에서는 주기적으로 소프트웨어 개발보안 가이드를 발행하고 있고, 한국인터넷진흥원을 포함하여 많은 교육지원기관에서 시큐어코딩에 관한 개발보안 교육을 실행하고 있습니다.
KISA 사이버보안인재센터 < 주요사업 : 한국인터넷진흥원
이러한 개발교육과정이수를 통해, 개발과정에서 적용되어야하는 기본적인 보안취약점을 개발자가 학습하고, 더불어 현재 나와 있는 취약점 분석 도구 및 장비들의 도입이 병행되어 코딩작업에 적용된다면, 까다로운 코딩작업이 좀 더 수월하고 정확하게 진행될 수 있을 거라 생각합니다.
이상 '시큐어코딩'에 관한 글을 마무리하고, 다음에 더 좋은 주제로 블로그를 통해 만나뵙겠습니다.
감사합니다^^