본문 바로가기

DevOps.

시큐어 코딩(secure coding)의 이해와 사용 방법

728x90

 

시큐어 코딩(secure coding)은 개발하는 소프트웨어의 보안상 취약점이 발생할 수 있는 부분을 보완하면서 개발하는 프로그래밍을 의미한다.

"버그없는 프로그램 없다"는 IT 업계의 오래된 격언은 지금도 통용된다. 이와 마찬가지로 "결함없는 소프트웨어를 개발하는 것은 불가능하다"는 말 또한 당연시되고 있다.

소프트웨어 개발은 지속적으로 진화하고 있음에도 불구하고, 버그없는 소프트웨어라는 것은 몽상이다. 버그없는(bug-free) 소프트웨어는 실질적으로 불가능하며 완전히 완벽한 기술은 없다.

소프트웨어 결함이 발생하는 원인은 아주 다양하다. 소프트웨어 기능이 많을수록 구조는 복잡해지며 이를 구현하기 위해 개발 기간과 비용은 많이 들게 된다. 특히 결함이 없는 완전한 소프트웨어를 개발하기 위해 무한정으로 시간과 비용을 투자할 수 없다. 이런 현실적인 한계와 함께 개발하는 이들이 모두 숙련된 역량을 보유한 것도 아니다.

따라서 한정된 시간과 비용을 기반으로 사용자 요구를 최대한 반영하고 최소한의 결함을 가진 소프트웨어를 개발하는 것이 일반적이다. 이렇게 소프트웨어 결함은 개발 과정에서의 개발자 실수, 논리적 오류에 의해 발생한다. 이와 함께 결함을 에방하기 위해 각 개발 단계마다 체계적인 테스트 과정을 거쳐야 함에도 불구하고 이를 가볍게 여기는 개발 문화 또한 큰 문제라 볼 수 있다.

이제는 전 산업군에서 소프트웨어를 개발하고 도입하고 있다. 예를 들어, 자동차의 경우, 커넥티드 카, 인포테인먼트, 자율주행 등 소프트웨어 비중이 계속 증가하고 있다. 메르세데스벤츠 자동차그룹 회장인 디터 체제는 2014년 CES 기조연설에서 "자동차는 기름이 아니라 소프트웨어로 달린다"고 말한 바 있다.

거의 모든 산업군의 기계와 장치에 소프트웨어가 탑재된다. 따라서 소프트웨어의 높은 완성도와 안정성은 각 기업의 경쟁력뿐만 아니라 인간의 생명과 삶에도 직결되는 중요한 문제가 됐다.

이와 함께 사이버공격의 대부분이 소프트웨어 자체 보안 취약점을 악용하고 있는데, 특히 알려지지 않은 보안 취약점을 악용해 공격하는 경우, 이를 막을 방법이 없다는 것이 문제다. 또한 수많은 보안 취약점을 갖고 지능화된 기법을 사용해 지속적으로 특정 대상을 노리는 APT 공격으로 인한 피해는 나날이 커지고 있다.

시큐어 코딩에는 안전한 소프트웨어를 개발하기 위해 지켜야할 코딩 규칙과 소스코드 취약 목록이 포함된다. 미국에서는 2002년 연방정보보안관리법(FISMA)을 제정해 시큐어 코딩을 의무화했고, 우리나라에서도 2012년 12월부터 소프트웨어 개발보안 제도를 시행해 시큐어 코딩을 의무화했다.

우리나라에서는 시큐어 코딩을 좁은 의미의 소프트웨어 개발보안으로 설명하고 있다. 소프트웨어 개발보안이란 소프트웨어 개발과정에서 발생할 수 있는 보안취약점을 최소화하는 한편, 사이버보안 위협에 대응할 수 있는 안전한 소프트웨어를 개발하기 위한 일련의 보안활동을 의미한다.

한국인터넷진흥원(KISA)는 '모바일 앱 소스코드 검증 가이드라인'에서부터 '소프트웨어 개발 보안 가이드', '자바 시큐어코딩 가이드', 'C 시큐어코딩 가이드', '안드로이드-자바 시큐어코딩 가이드', '소프트웨어 보안약점 진단가이드', '소프트웨어 보안약점 진단가이드(별첨)', '공개 소프트웨어를 활용한 소프트웨어 개발보안 검증가이드', '홈페이지 취약점 진단제거 가이드' 등에 이르기까지 시큐어 코딩과 관련한 안내서를 제공하고 있다.

 

반응형

출처

시큐어 코딩(secure coding)

시큐어 코딩

 

728x90
반응형
LIST