효과적인 시큐어 코딩 적용을 위한 팁

효과적인 시큐어 코딩 적용을 위한 팁

      2017-05-06
사내 개발자들이 시큐어 코딩에 익숙하지 않은데요. 지속적으로 개발에 시큐어 코딩을 적용할 수 있는 효과적인 방안은 없을까요?

[보안뉴스 원병철 기자] 시큐어 코딩(Secure Coding)이란 소프트웨어를 개발하는 과정에서 코딩 시에 개발자의 실수나 오류, 약점 또는 취약점이 삽입되지 않도록 프로그래밍 함으로써 사전에 악의적인 사이버 공격을 차단하기 위한 작업입니다.

ⓒ iclickart

이에 미국은 2002년 연방정보보안관리법(FISMA)을 제정해 시큐어 코딩을 의무화했으며, 우리나라의 경우 2012년 12월부터 SW 개발 단계부터 보안 취약점을 제거하는 ‘SW 개발 보안 의무제’가 시행됐습니다.

이를 위한 대표적인 시큐어 코딩 가이드로는 CERT에서 발표하는 시큐어 코딩 가이드가 있으며, OWASP(The Open Web Application Security Project)라는 조직을 통해서 제공되는 시큐어 코딩 가이드 등이 있습니다.

그러나 직접 코딩을 하는 개발자 입장에서는 취약점을 하나하나 고려하는 프로그래밍이란 시간도 많이 걸리고 실수나 판단 오류도 개입될 수 있기 때문에 소스 코드를 스캐닝(Scanning)해서 취약점을 찾아내는 솔루션을 적용하는 추세입니다.

대표적인 상용 솔루션으로 Sparrow, Code Inspector 등이 시중에 많이 제공되고 있지만, 소스 코드가 공개되어 누구나 자유롭게 사용할 수 있고 배포할 수 있는 공개 소프트웨어로도 소스 코드 취약점을 점검하는 환경을 구성할 수 있습니다.
△ Sparrow : 파수닷컴 사의 실행의미 기반 정적 분석 도구
△ Code Inspector : 슈어소프트테크 사의 소스 코드 기반의 코딩 규칙 자동 검사 도구

가령 Jenkins, FindBugs, FindSecurityBugs, PMD와 같은 공개 소프트웨어를 활용한 소프트웨어 보안 약점을 분석하고 리포팅할 수 있으며, 이를 반영한 코드를 형상관리 서버에 반영할 수 있습니다.
△ Jenkins : 지속적인 통합 CI(Continuous Integration) 도구
△ FindBugs : 자바 코드의 정적 분석 기능을 제공하는 도구
△ FindSecurityBugs : 자바 웹 어플리케이션에 대한 보안 감사를 지원하는 플러그인 도구
△ PMD : 자바 프로그램의 소스코드를 분석해 프로그램의 부적절한 부분을 찾아내고 성능을 높이도록 도와주는 공개소프트웨어 점검 도구

무엇보다도 시큐어 코딩을 지속적으로 반영하기 위해서는, SVN과 같은 코드 형상 관리 도구와 연동하는 자동화 테스트 인프라를 구축하는 것이 필요하며, 주기적으로 Jenkins와 같은 CI 도구에 플러그인 된 공개 소프트웨어 및 상용 소프트웨어를 통해 소프트웨어 보안약점 관련 분석을 실시하고, 분석된 결과를 리포팅하는 것이 중요합니다.
△ SVN(Subversion) : 소프트웨어 버전 관리 시스템으로써 개발자들의 소스관리를 편리하게 제공하기 위한 도구

그러나 이와 같은 소프트웨어 보안약점 분석 도구는 완벽하지 않으며, 소프트웨어가 실행되지 않고 소스코드 상태에서 취약한 부분을 찾는 정적분석은 오탐이 존재하기 마련입니다. 즉, 정기적인 분석 결과가 보고될 때마다 오탐 여부를 확인하고, 그 내용을 다음 분석에 반영하는 등의 꾸준한 관리가 필요합니다.

또한, 서비스와 플랫폼 특성 등에 따라 취약점의 종류와 내용이 달라지므로, 시큐어 코딩을 기본적으로 가져가되, 여러 환경 요인을 고려한 취약점 점검 및 관리가 필요합니다.
[김병구 한국전자통신연구원(bkkim05@etri.re.kr)]

시큐어 코딩은 공공기관에서 사업규모에 따라 의무 적용 대상입니다. 일반적인 웹 개발자들이 보안코딩 즉, 시큐어 코딩을 하지 않기 때문에 웹 해킹이 빈번히 발생하고 있습니다. 시큐어 코딩을 잘 하려면 시큐어 코딩 관련 책이나 행자부 및 KISA에서 발간한 시큐어 코딩 가이드를 참조하여 익히는 방법이 가장 효율적이라고 생각합니다. 시큐어 코딩 가이드를 보시면 그리 어렵지 않게 이해할 수 있는 수준으로 취약한 코드를 안전한 보안 코드로 적용하는 예가 나와 있습니다. 별도의 솔루션을 이용하여 시큐어 코딩을 적용하는 방법도 있습니다.
[오원철 유니포인트 부장(k5172@hanmail.net)]

보안이 강화됨에 따라서 시큐어 코딩이 의무화하게 되었는데, 기존의 개발자들에게는 익숙하지 않아 여러 가지 불편함이 있을 것입니다. 하지만 개발도 중요하지만 보안의 중요성에 대한 비중이 높아졌기 때문에 시큐어코딩을 무시할 수 없을 것입니다. 시큐어코딩 전문 인력을 양성하고 일처리를 분업화하면 보다 효율적인 개발과정이 이루어질 수 있을 것으로 봅니다.
[한국산업기술보호협회 중소기업기술지킴센터]

개발자가 시큐어 코딩에 익숙하게 하려면 우선은 개발자들이 컴파일하고 빌드를 수시로 하듯이 보안 점검도 수시로 하면서 코드에 품질 문제가 있는 것처럼 보안 문제가 있는지를 지속적으로 점검하는 수밖에는 없습니다. 또한, 개발 프로세스 상에서 일정 보안 품질에 도달하지 않거나, 심각한 보안 취약점이 있는 경우에는 해당 이슈를 해결할 때까지 서비스 오픈을 지연토록 하고, 이에 대한 성과 관리를 지속하는 것도 필요합니다. 물론, 시큐어 코딩과 준수해야 할 프로세스에 대한 교육도 지속해야겠죠.
[박형근 한국IBM 실장]

가장 효과적인 방법으로 소개드릴 것이 시큐어코딩 점검 도구를 개발환경에 통합하여 활용하시는 겁니다. 단순히 소스코드 점검으로 그칠 것이 아니라 개발자들의 코딩 습관을 보안을 고려하도록 바르게 가져가는 것이 필요하고, 그러기 위해서는 이를 가이드해 줄 자동화 도구가 큰 도움이 됩니다. 오픈소스나 상용 제품을 통해 지속적으로 검증을 수행하도록 하면 자연스럽게 시큐어 코딩이 습관으로 체득됩니다.

또 한 가지는 한국인터넷진흥원, 파수닷컴 등에 개설되어 있는 시큐어 코딩 교육에 참여하도록 독려해서 개발보안에 대한 관심을 높여주시는 것도 매우 효과적인 방법입니다.
[이재용 파수닷컴 PA사업본부 팀장(jaeyonglee@fasoo.com)]
[원병철 기자(boanone@boannews.com)]

[출처] http://www.boannews.com/media/view.asp?idx=54564&kind=5#

Loading

Updated: 2017년 5월 7일 — 12:32 오후

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.