안전하지 않은 코드와 관련된 숨겨진 비용에 대해 알아보고, 기업이 어떻게 이 격차를 줄일 수 있는지에 대해 살펴보자.
에퀴팩스(Equifax)나 우버(Uber) 같은 기업에서 대규모 데이터 유출 사고가 발생하면 유출된 사용자 데이터로 얼마나 심각한 평판 손상 또는 재정적 손해를 입었는지에 대해 먼저 논의된다. 물론 이런 표면적 비용이 엄청나다.
그러나 실제로 취약한 코드는 침해 사고 그 이후에도 꾸준히 비용을 발생시킨다. 압박 속에서 이루어진 빠른 수정과 잔존하는 취약점은 다시 막대한 기술 부채를 만들어내며, 시간이 지남에 따라 점점 더 쌓이게 된다.
침해 사건 후 많은 조직이 다음과 같은 시나리오를 겪는다. 일단 팀 전체는 버그와 씨름하느라 정신이 없어진다. 최근 발생한 장애를 해결하느라 몇 달이 지나간다. 비대해진 시스템으로 인해 감히 리팩터링할 엄두도 내지 못하고, 이로 인해 인프라 비용도 계속 상승한다. 단순히 현상 유지에만 모든 에너지를 쏟다 보니 열정적으로 진행하던 다른 프로젝트는 모두 방치된다.
안전하지 않은 코드는 마치 눈에 보이지 않는 세금처럼 엔지니어링 조직 전체에서 시간, 돈, 사기를 조금씩 빼앗아 간다. 조직 규모가 크든 작든 상관없다. 이런 천천히 타오르는 비용은 대형 유출 사건처럼 신문 헤드라인을 장식하지는 않지만, 조용히 뒤에서 쌓여간다. 그러니 기술 부채를 해결하지 않고 방치하면 곧 혁신을 가로막는 거대한 장벽이 된다.
조용히 쌓여가는 기술 부채를 수치화해서 그 심각성을 파악하면, 개발 초기 단계에서부터 더 나은 보안 조치를 취할 수 있다. 이것이 장기적으로 안정적인 엔지니어링 속도를 유지할 수 있는 유일한 방법이다.
취약점 공격 이후 발생하는 잠재적 피해 비용
해커가 코드에서 취약점을 찾아내 데이터베이스에 있는 민감한 데이터에 접근했다고 가정해보자. 해커는 사용자 데이터를 빼돌리고, 담당자는 이 유출 사건의 후폭풍을 처리해야 한다. 이후 기업은 즉시 막대한 복구 비용을 지불하게 된다. 여기에는 다음과 같은 비용이 포함된다.
침해 조사 : 침해의 전체 범위를 파악하려면 스토리지 시스템, 네트워크, 애플리케이션 코드 등을 포괄하는 철저한 포렌식 조사를 시작해야 한다. 기술의 복잡성에 따라 이러한 조사에만 어떤 경우 수십만에서 수백만 달러 이상 비용이 소요될 수 있다.
복구 및 수정 : 이제 손상된 환경을 복구하고 패치를 적용하는 힘든 작업이 시작된다. 코드를 감사하고, 보안 패치를 배포하고, 여러 환경에서 사용자 자격 증명을 재설정하고, 데이터 손실로 인해 영향을 받은 당사자에게 알림을 보내면 비용이 급격히 증가한다.
법률 및 규제 위반 비용 : 손실된 데이터와 운영 지역에 따라 기업은 상당한 규모의 GDPR, HIPAA 또는 PCI 규정 미준수 벌금을 부과받을 수 있다. 우버는 2018년 발생한 자사 데이터 유출 사고와 관련된 피해 규모 및 현황을 적시에 공개하지 않아 1억 4,800만 달러의 합의금을 지불했다.
고객 비즈니스 손실 : 핵심 문제는 보안 사고 이후 고객의 신뢰를 영구적으로 잃고 더 나아가 매출을 잃는 것이다. 보안에 민감한 많은 고객은 보안 침해 이후 그 기업을 떠나게 된다. 이러한 고객 이탈과 부정적인 브랜드 영향은 상당한 비즈니스 손실을 초래한다.
이러한 비용 때문에, 소프트웨어 코드의 안정성을 논할 때면 데이터 유출 사고 이야기가 나오기 마련이다. 금전적 피해와 고객에게 미치는 영향은 즉각적이고 상당하다. 그러나 취약점이 악용되기 전에도, 불안정한 코드와 기술 부채의 존재 자체는 개발자에게 지속적으로 악영향을 미치며, 엔지니어링 생산성을 더 은밀하게 떨어뜨린다.
기술 부채에 대한 지속적인 이자 지급
안전하지 않은 코드는 궁극적으로 기술 부채를 초래한다. 특히 프로덕션에 필요한 높은 품질의 품질과 안정성을 구축할 때 기술 부채로 발목이 잡힐 수 있다.
각 기술 부채의 발생을 작은 빚에 따른 이자 지불로 생각할 수 있다. 일정 압박, 오래된 라이브러리, 불충분한 테스트 등으로 인해 이러한 문제가 쌓이면 그 빚을 갚기 위해 매달 지불하는 ‘이자’도 늘어난다.
조직은 자신도 모르는 사이에 결함이 있는 코드에서 시작된 각종 문제를 처리하느라 귀중한 엔지니어링 리소스와 비용을 낭비하게 된다. 구체적으로 다음과 같다.
개발 속도 저하 : 기술 부채가 해결되지 않고 남아 있으면, 그로 인해 발생하는 ‘이자’가 엔지니어들의 시간을 계속해서 소모하게 만든다. 즉 엔지니어의 소프트웨어 품질 향상 기회를 제한하고, 전반적인 개발 주기에 악영향을 끼친다. 레거시 문제를 해결하는 데 시간과 자원이 소모되면서, 새로운 작업의 진행 속도가 직접적으로 느려지기도 한다.
클라우드 비용 상승 : 비효율적인 코드로 인한 기술 부채는 클라우드 비용 상승으로도 나타난다. 기본 인프라를 최적화하지 않으면 초과 용량 비용이 발생한다. 이는 결국 수익에 직접적인 영향을 미친다.
버그 및 안정성 문제 증가 : 안전하지 않은 코드는 당연히 품질이 낮다. 따라서 애플리케이션은 더 많은 결함, 성능 문제, 최종 사용자에게 영향을 미치는 안정성 문제와 씨름하게 된다. 또한 생산성 손실과 불만이 이어진다.
수익 창출 기회 상실 또는 지연 : 안전하지 않은 코드 관리에 비용, 시간, 자원을 투자하면 엔지니어링 조직이 비즈니스 이니셔티브에 할당할 수 있는 자원이 감소한다. 더욱이 제한된 예산으로 레거시 시스템을 운영하면 혁신을 위한 자원 확보가 어려워진다.
신용카드 부채처럼, 처음에는 이러한 이자 지불이 작게 느껴지고, 해결을 미루기 쉽다. 그러나 관리하지 않으면, 복리 효과 같이 이자가 급격하게 늘어 조직의 생산성을 크게 저하시키고, 결국 조직의 성장을 멈추게 할 수 있다. 다수의 연구 결과, 과도한 기술 부채는 생산성을 현저히 저하시키는 것으로 밝혀졌다. 마치 낡은 엔진처럼, 조직은 이전 시스템을 유지하는 데 귀중한 자원을 낭비하게 된다. 주목할 만한 침해 사고를 피하더라도 취약하고 지저분한 코드는 시간이 지나면서 엔지니어링 생산성, 클라우드 효율성 및 개발자 만족도를 조용히 저하시킬 수 있다.
내부 변화로 문제 해결하기
직간접 비용이 급증하는 상황에서 안전하지 않은 코드는 여러 측면에서 위협적인 존재가 된다. 그렇다면 개발자가 취할 수 있는 예방적 조치는 무엇일까? 다음 지침을 내부에 도입하기를 추천한다.
1. 보안 중심의 개발 프로세스 도입
프로덕션으로 전환하기 전에 보안 검토를 SDLC의 필수 단계로 설정한다.
취약점을 초기 단계에서 발견하고 해결할 수 있도록 기존 자동화 테스트에 경량 스캐닝을 도입한다.
개발자가 최신 위협과 완화 기술을 숙지할 수 있도록 정기적인 애플리케이션 보안(AppSec) 교육을 필수로 이수하도록 한다.
분기별로 중요한 경로에 대해 더 엄격한 생산 지연 침투 테스트를 수행하여, 공개 출시 전에 문제를 찾는다.
2. 지속적인 교육을 통한 기술 향상
모든 엔지니어링 조직 구성원이 보안 코딩 기초를 필수로 학습하도록 하고, 지식을 매년 갱신한다.
점심 시간을 활용해 좀 더 편안한 방식으로 개발자가 직면하는 OWASP 상위 10 위험과 이를 방지하기 위한 기술을 검토한다.
주요 아키텍트와 의사 결정자를 매년 고강도의 최신 보안 코딩 캠프에 보내어, 그들의 학습 내용을 공유하고 표준에 반영한다.
3. 보안 우수성을 장려 및 권한 부여
보안 우수성에 대한 인센티브 및 역량 강화를 위해 스탠드업, 회의, 뉴스레터 등을 통해 보안 코딩 모범 사례를 공개적으로 칭찬해야 한다. 주요 취약점을 찾고 해결한 직원 및 관계자에게 보상해야 한다.
엔지니어가 관리자의 승인을 받아 애플리케이션 코드 보안을 직접 강화할 수 있도록 매월 예산 전용 시간을 배정한다.
연례 검토를 통해 코드 품질 및 침투 테스트 결과를 팀 전체의 성과와 연계하여 주인의식을 심어준다.
결론
조직의 프로세스를 혁신하는 것은 상당한 노력을 필요로 한다. 그러나 취약한 코드가 매일 비즈니스에 초래하는 다각적인 비용을 고려할 때, 개발 기반을 보호하는 것은 절대 타협할 수 없는 문제이다.
코드 생성 시점에 문제를 포착하기 위해 워크플로를 조기에 재조정할수록 향후 기술 부채에 대한 이자를 줄일 수 있다. 재무 건전성과 마찬가지로 예방적 모범 사례를 지속적으로 적용하면 시간이 지남에 따라 철저한 보안 인식이 자연스럽게 쌓이게 된다.
어떤 접근 방식도 위험을 완전히 제거할 수는 없지만, 엄격한 보안 관행을 조직의 DNA에 새기는 것은 치명적인 보안 침해를 방지하는 데 큰 도움이 된다. 더욱 중요한 점은 이러한 접근이 엔지니어링의 비즈니스 잠재력을 최대한 발휘하는 데 기여한다는 것이다. 이는 단순히 위험을 관리하는 차원을 넘어, 조직의 전반적인 성과와 혁신 능력을 향상시키는 핵심 요소로 작용한다.
*필자 Yash Mehta는 사물인터넷(IoT), M2M(사물 간 통신) 및 빅데이터 기술 전문가로서 데이터 과학, IoT, 비즈니스 혁신, 도구, 보안 기술, 비즈니스 전략, 개발 등에 관련 칼럼 및 기고문을 작성하고 있다.
ciokr@idg.co.kr