Tech 정적코드분석/코딩표준

시큐어 코딩이란?

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

시큐어 코딩? 남들이 못 보게 코딩한다는 건가요? 처음 들어보시는 분들이 많을 것입니다.

coding_standards

시큐어 코딩이 뭔가요?

일반적인 소프트웨어 개발은 보통 요구사항 도출 -> 설계 -> 구현(개발) -> 테스트-> 릴리즈 순으로 이루어 집니다. 시큐어 코딩은 이 구현(개발) 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하여, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법을 말합니다.

중요 포인트는 ‘개발 단계’에서 이 기법을 적용한다는 점입니다. 옛 속담에 이런 말이 있습니다. “호미로 막을 것을 가래로 막는다”. 이 말은 호미로 막을 것을 차일피일 미루다가 결국 가래로 막지 않으면 안 되는 지경에 이르는 것을 말하지요. 소프트웨어 개발에서도 이 속담이 적용됩니다!

릴리즈 이전에 소프트웨어 취약점을 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개의 보안 취약점을 제거해야 합니다. 이 보안 취약성을 제거하기 위해서는 어떻게 해야 할까요?

보안 취약성 제거하기

첫 번째 방법은 시큐어 코딩에 정통한 개발자가 코드를 한 줄 한 줄 검사하는 방법이 있습니다. 행정안전부의 시큐어 코딩은 솔루션 도입을 강제하지 않기 때문에 이렇게 검사해도 됩니다. 하지만 수 십만, 수 백만 줄이나 되는 소프트웨어 소스코드를 사람이 일일히 따라가면서 보는 것은 거의 불가능에 가깝습니다. 게다가 사람이 수작업으로 코드를 검사하는 것은 검사 결과에 신뢰성이 떨어질 뿐더라 투자 대비 효용으로 볼 때 추천할만하지 않은 방법입니다.

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

참고로 말하자면, 제가 개발에 참여하고 있는 솔루션인 Sparrow 역시 행정안전부 시큐어 코딩을 지원합니다! CERT도 지원하며 파수닷컴이 국내 최초로 인증을 받은 국제 표준 가이드 CWE 도 지원합니다.

정적분석도구 Sparrow 로고

 

 

관련 자료

– 행정안전부 시큐어 코딩 (링크)
– CERT (링크)

Leave a Reply

Your email address will not be published. Required fields are marked *