[보안칼럼]당신의 소프트웨어는 건강하십니까

[보안칼럼]당신의 소프트웨어는 건강하십니까

개인정보 유출과 해킹 등 보안사고 뉴스를 자주 접한다. 개인용 PC나 스마트폰뿐만 아니라 가정용 인터넷(Wi-Fi), 스마트TV, 아파트 홈패드 등 사물인터넷(IoT) 기술이 적용된 생활용 기기가 해커의 공격 대상이 되고 있다.

이러한 생활 기기는 정교하게 짜여진 소프트웨어(SW) 연동으로 작동되는데 복잡하고 다중구조화된 SW 특성상 사소한 코딩 실수만으로도 치명적 보안 취약점을 노출하고, 이를 노리는 해커의 좋은 먹잇감이 된다. 4차 산업혁명 시대에서 생활의 편리성을 강조하는 IT기기 발전이 SW의 정교함과 보안의 중요성을 강조하고 있다. 이제 일상생활 속 보안은 선택이 아닌 필수가 되고 있다.

SW는 장비나 기기를 올바르게 작동하도록 구동시키는 프로그램으로, 컴퓨터용 언어로 작성된다. 일상생활 속 IoT 장비나 제품을 만들기 위해서는 SW 탑재가 필수인데 장비를 구동시키는 SW가 근본적으로 치명적인 오류를 포함하고 있다면 어떤 일이 발생할까.

안전하지 못한 SW로 구동되는 장비는 시한폭탄과 같다고 볼 수 있다. SW 오류는 언제 어디서든 보안 위협에 노출될 수 있고, 이는 의도가 불순한 공격자에게 악용돼 해킹 피해로 연결되곤 한다. 우리에게 세균이 있으면 질병에 걸리는 것처럼 SW에 오류가 있으면 보안 위협에 쉽게 노출된다.

'병든' SW로 작동되는 제품을 활용하는 사용자는 불필요한 시간과 비용을 낭비하게 되고, 원치 않는 보안 위협에 시달리게 된다. 그렇다면 우리 SW를 안전하게 지키는 방법은 무엇일까.

이미 발생한 보안 문제를 해결하려면 시간과 비용이 많이 들고, 불필요한 정신적 스트레스를 유발한다. 하지만 시큐어코딩을 활용하면 사전에 보안 약점을 알아내고 조처함으로써 미래에 발생할 보안 위협을 제거하거나 최소화할 수 있다.

시큐어코딩은 SW 개발 과정에서 발생할 수 있는 개발자의 실수, 논리적 오류 등으로 SW에 내재된 소스코드의 보안 약점을 진단하고, 잠재적 위험 요소를 제거한다. 프로그램 완전성을 높이고 체계적으로 관리해 주는 보안 활동이다. 사람이 건강검진을 통해 신체의 결함을 찾아내는 것처럼 SW도 사전에 완전성을 테스트하는 것이다.

시큐어코딩은 SW 개발 과정을 일컫는 SDLC(Software Development Life Cycle)를 통해 각 단계에서 고품질의 SW를 생산하기 위한 전 과정에 관여하게 되며, 설계·개발 및 구축·배포에 이르는 세부 계획을 수립하게 된다. SDLC의 초기 단계에서 발생 가능한 문제를 확인할 수 있고, 바로 조치도 가능하기 때문에 제품의 개발 과정에서 발생하는 보안 처리에 드는 비용과 시간을 최소화할 수 있다.

국제 소프트웨어 테스팅 자격협회(ISTQB)에서 발표한 SW 테스팅 일곱 가지 기본 원리 가운데 하나가 '테스팅은 개발 초기에 시작해야 한다'이다. 왜 개발 초기 단계가 중요할까. 그 이유는 바로 투입되는 시간과 비용 때문이다. SW 결함 발견 시점이 늦어질수록 수정 비용은 불어난다. 제품이 출시된 이후에 발견하게 될 경우 약 30배 비용이 소요되는 것으로 분석된다. 다시 말해 프로그램을 다 만들고 난 후에 테스트하는 것이 아니라 요구사항 분석 단계부터 참여해 분석하면 오류가 포함될 확률이 낮고, 수정 비용도 최소화된다.

우리가 인생을 살아가면서 건강검진을 통해 미리 확인하고, 발생 가능한 질병을 예방하는 것처럼 SW도 시큐어코딩을 통해 미리 확인하고 예방한다면 앞으로 소요되는 대규모 치료 비용을 지불하지 않아도 되는 것이다.

이제 우리의 생활 속에서 IT는 없어서는 안 될 존재로 자리매김했다. IT의 안정성은 완전한 SW 개발에서부터 시작된다고 말할 수 있다. 따라서 시큐어코딩의 중요성은 더욱 커질 것으로 판단된다. 이제 시큐어코딩은 선택이 아닌 필수다.

김진수 트리니티소프트 대표 jskim@trinitysoft.co.kr