티스토리 뷰

.


오늘 날의 소프트웨어는 인터넷 환경에서 데이터를 교환하기 때문에 해커에 의해 악의적인 공격 받을 가능성이 항상 존재합니다. 한예로 APT공격을 들 수 잇는데, 특정 소프트웨어의 보안 취약점을 지능화된 기법을 통해 지속적으로 공격하는 형태로 확산되며 치명적 피해를 입히고 있습니다.


APT공격

공격자가 악성코드를 심은 이메일을 보내 사용자가 열도록하는 방식으로 PC를 감염시킨다. 감염된 좀비 PC가 증가하면서 서버가 파괴되도록 만들고, 내부 시스템에 잠복한 악성코드들이 데이터베이스 정보를 빼낸다. - 네이버 IT용어 사전


가트너 보고서에 의하면 소프트웨어 보안침해 사고의 75%는 취약점을 내포하는 응용프로그램에 의해 발생되었다고 알려져 있습니다. 이렇게 소프트웨어 공격으로 발생하는 피해는 세계적으로 1,800억불에 이르며, 소프트웨어가 사용자에게 인도 된 후에 보안 취약점을 수정하고 보완하는데 많은 비용이 지불됩니다. 최근에 발생하는 각종 해킹 관련된 사고들을 돌이켜 보면, 비단 비용만의 문제가 아님을 느낄 수 있습니다. 소프트웨어 공격으로 각종 기업에서 가지고 있는 회원 정보를 국제 범죄 조직에 넘겨주는 피해가 빈번하기 때문입니다. 최근 이러한 약점을 해소하기 위해 견고한 소프트웨어 개발의 필요성이 강조됨에 따라 소프트웨어 개발 보안 의무화 제도가 생겨났습니다.




소프트웨어 개발을 위한 시큐어 코딩이란, 사이버 공격에 대비하기 위해 소프트웨어 개발 단계부터 소프트웨어의 보안 취약점을 최소화하고, 해킹과 같은 보안 위협과 공격 시도를 차단하는 과정을 뜻하는 개념으로 개발자의 코딩 실수나 논리적 연산 오류 등과 같은 문제에 대한 점검과 관련한 부분들에 해당합니다. 앞서 말했듯, 소프트웨어 보안 침해 사고의 75%가 취약점을 가진 소스코드에서 발생한다는 것을 생각해보면, 본질적인 부분을 보완하는 방법이라고 볼 수 있습니다. 많은 사람들이 '시큐어 코딩'이라는 단어에서 '코딩'을 하는 개발자가 시큐어 코딩의 전 과정을 책임진다고 생각합니다. 하지만 여러 절차와 여러 부서의 담당자를 거쳐 소프트웨어 보안을 진행하는 것이 바로 시큐어 코딩입니다.

시큐어 코딩이 어떤 절차로 이루어지는지 간단하게 확인해 보도록 하겠습니다. 일반적인 소프트웨어 개발은 보통 설계 ▶ 구현(개발) ▶ 시험 ▶ 운영 단계로 이루어집니다. 시큐어 코딩은 설계 단계에서부터 시작되며 보안 위협 요소 파악을 시작으로 개발 단계 시에 이루어지는 분석도구 점검, 코드 리뷰, 시험 단계에서 이루어지는 모의 해킹 수행, 분석 도구 점검과 운영을 하면서도 주기적으로 모의 해킹을 수행하며 안전성 여부를 검증하는 일련의 과정을 통틀어 시큐어 코딩이라 칭합니다.




개발 초기 단계에서부터 안전한 소프트웨어를 위해 투자하는 비용은 전체적으로 봤을 때 오히려 비용을 절감하는 효과를 가져옵니다. 애자일, 데브옵스 같은 빠른 호흡의 개발이 지나치게 강조되다 보면, 되려 나중에 더 큰 비용에 대한 손해를 감수하게도 합니다. 보안 문제는 기업의 존폐가 결정될 수도 있는 이용자 대거 이탈과 더불어 법적인 처벌까지 받을 수 있게 된 만큼 최근의 환경에서는 보다 안전한 소프트웨어 개발은 선택이 아닌 필수가 되어가고 있습니다. 또한 최근 컴퓨터 환경은 개개인이 소유한 다양한 기기로 다변화되면서 대부분의 소프트웨어는 인터넷 환경에서 데이터를 교환하기 때문에 데이터에 대한 신뢰성 보장이 매우 어려워 시큐어 코딩의 필요성이 더욱 강조됩니다.


Ps. '시큐어 코딩'은 '보안코딩'으로도 불립니다.

댓글