보안 코드 정의하기

디지털 비즈니스를 이끄는 소프트웨어, 애플리케이션, 프로그램을 개발하는 개발자들은 이제 많은 조직의 핵심 인력이 되었습니다. 오늘날 대부분의 기업은 경쟁력 있는 애플리케이션과 프로그램 없이는, 혹은 웹사이트와 기타 인프라에 대한 24시간 접근성 없이는 수익성 있는 운영이 불가능합니다.
하지만 바로 이러한 접점들이 해커와 악의적인 사용자들이 정보를 탈취하고, 공격을 감행하며, 사기나 랜섬웨어와 같은 범죄 활동으로 나아가는 통로가 되기도 합니다. 최신 Verizon 데이터 침해 조사 보고서에 따르면, 오늘날 기업과 조직을 위협하는 요소들은 역사상 그 어느 때보다 더 위험하고 비용이 많이 듭니다.
대부분의 조직에서 사이버 보안에 대한 지출이 크게 늘고 DevSecOps와 같은 움직임이 비즈니스의 핵심인 개발자들에게 보안 책임을 부여하고 있음에도 불구하고, 성공적인 공격은 여전히 빈번하게 발생하고 있습니다.
개발자들은 보안의 중요성을 이해하고 있으며, 압도적으로 보안이 유지되는 양질의 코드를 배포하기를 원하지만, 소프트웨어 취약점은 계속해서 악용되고 있습니다.
이유가 무엇일까요?
Secure Code Warrior는 2021년 12월, Evans Data Corp와 협력하여 2년 연속으로 '개발자 주도 보안 현황(The state of developer-driven security) 2022' 설문조사를 실시했습니다. 전 세계 1,200명의 개발자를 대상으로 보안 코딩 관행에 대한 기술, 인식, 행동을 파악하고, 소프트웨어 개발 수명 주기(SDLC) 내에서의 영향력과 관련성을 조사했습니다.
설문조사 결과, 보안 코드가 무엇인지에 대한 명확한 정의나 이해가 부족한 것으로 나타났습니다. 개발자들이 생각하는 보안 코드와 실제 보안 코드 사이에는 큰 괴리가 있었습니다.
개발 커뮤니티에서 양질의 코드를 작성하는 것이 최우선 순위라는 점은 놀랍지 않았습니다. 하지만 보안 코드에 대해 구체적으로 질문했을 때, 취약점이 없는 코드를 작성하는 실질적인 관행을 우선시한다고 답한 비율은 29%에 불과했습니다. 대신 개발자들은 보안 코드 작성과 관련하여 덜 안전하고 신뢰도가 낮은 관행들을 떠올렸습니다. 예를 들어, 기존 코드를 검토하는 것(37%)과 안전한 코드를 위해 외부 라이브러리에 의존하는 것(37%)이 개발자들이 보안 코딩과 연관 짓는 가장 대표적인 관행이었습니다. 이미 보안이 확인된 코드를 재사용하는 것(32%)도 인기 있는 선택지였습니다. 취약점이 없는 코드를 작성하는 실질적인 관행은 29%의 응답을 얻어 6위에 그쳤습니다. 추가 질문에서 개발자들은 시간 부족과 경영진의 일관된 접근 방식 부재를 보안 코드 작성을 가로막는 가장 큰 장애물로 꼽았습니다.
기존 코드에 대한 의존은 악용 가능한 취약점이 포함된 소프트웨어가 배포될 위험을 높이는 요인 중 하나입니다. 보안 코드의 정의에 대한 이러한 인식 차이를 해결하는 것은 개발자가 안전하면서도 품질 높은 코드를 작성하는 데 필수적입니다.
개발자들이 생각하는 보안 코드와 실제 보안 코드 사이에는 큰 괴리가 있었습니다.
이 상황을 해결하기 위해 조직은 무엇을 할 수 있을까요?
이번 설문조사의 가장 중요한 메시지 중 하나는 개발자 커뮤니티 전체가 자신의 업무를 소중히 여기는 전문가들로 구성되어 있다는 점입니다. 이들에게는 최고 품질의 코드를 작성하는 것이 압도적으로 중요했습니다. 문제는 많은 경우 그들이 속한 조직이 보안 코드를 생산하기 위해 필요한 모범 사례를 정의하지 않았고, 교육에 충분한 자원을 투자하거나 개발자들이 목표를 달성할 수 있도록 지원하지 않았다는 점입니다.
실제로 대부분의 개발자는 소속 조직에 보안 코드에 대한 명확한 정의조차 없다고 답했습니다. 가장 우려되는 사례 중 하나는 설문 응답자의 28%가 애플리케이션이나 프로그램이 운영 환경에 배포되거나 대중에 공개된 후 침해 사고가 보고되지 않으면 조직에서 이를 보안 코드로 간주한다고 답한 것입니다.
말할 필요도 없겠지만, 오늘날의 복잡한 위협 환경에서 실질적인 노력 없이 좋은 결과만을 바라는 것은 뻔한 결과, 즉 더 많은 보안 침해 사고를 초래할 뿐입니다.
다행히도 이 문제는 비교적 쉽게 해결의 실마리를 찾고 보안 코드라는 목표를 향해 나아갈 수 있습니다. 가장 첫 번째이자 중요한 단계는 조직이 보안 코드를 어떻게 정의할지 결정하는 것입니다. 그리고 그 정의에 부합하지 않는 모든 것은 보안 코드가 아닌 것으로 간주해야 합니다.
보안 코딩은 숙련된 개발자가 SDLC 초기 단계부터 취약점이 없는 코드를 작성하는 관행으로 정의되어야 합니다. 이러한 관행이 정의되어야만 개발 커뮤니티가 그 목표를 향해 나아갈 수 있습니다.
보안 코드라는 목표를 현실로 만들기
보안 코드에 대한 정의가 확립되면, 조직은 이러한 노력과 함께 완전한 보안 코딩 관행을 구현하려는 개발자들을 지원할 준비를 해야 합니다. 이러한 지원은 매우 중요합니다. 지원이 없다면 조직 내 보안 코드 정의는 중요하더라도 종이 호랑이에 불과할 것입니다. 보안 코딩 관행은 경영진의 지지를 받아야 하며, 성공을 위해 적절한 고려와 권한, 예산이 뒷받침되어야 합니다.
이는 개발자들에게 새로운 벤치마킹 목표를 요구할 수 있습니다. 기존에는 개발 속도가 주요 평가 지표였기 때문입니다. 실제로 설문조사에 참여한 개발자의 37%는 촉박한 마감 기한 때문에 코드를 제대로 작성하거나 알려진 취약점을 수정할 시간이 부족해 이를 방치한 적이 있다고 답했습니다. 초기에는 개발자가 코드를 올바르게 작성할 수 있도록 마감 기한을 늘려야 할 수도 있습니다. 하지만 개발 초기 단계에서 투자한 시간은 추후 프로그램 수정, 패치, 배포 후 작업에 드는 시간을 줄여 충분히 상쇄될 것입니다. 또한 배포 후 발생할 수 있는 보안 침해 가능성을 제거하면 수백 시간의 업무량은 물론, 수익 손실, 벌금, 복구 비용 등 수백만 달러의 손실을 방지할 수 있습니다.
개발자에게는 실무와 관련된 교육도 필요합니다. 특히 자주 마주하게 되는 특정 취약점과 이를 식별하고 수정하는 방법에 대한 교육이 중요합니다. 설문조사 응답자의 36%가 코드 내 취약점을 제거하고 싶어도 관련 기술이나 지식이 부족하다고 답한 점을 고려하면 이러한 교육은 더욱 필수적입니다.
설문조사에 참여한 개발자의 37%는 촉박한 마감 기한 때문에 코드를 제대로 작성하거나 알려진 취약점을 수정할 시간이 부족해 이를 방치한 적이 있다고 답했습니다.
이 주제에 대해 더 알고 싶으신가요?
배포 전 AI 기반 개발 거버넌스 확보
AI 기반 위험을 측정하고, 커밋 시점에 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 소프트웨어 제공 속도를 높이세요.
더 많은 블로그 살펴보기
보안 코딩, AI 거버넌스, 소프트웨어 리스크 관리에 관한 전문가 콘텐츠를 확인해 보세요.
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
배포 전 AI 기반 개발 보안 확보
소프트웨어 개발 수명 주기 전반에서 개발자 리스크를 파악하고, 정책을 시행하며, 취약점을 예방하세요.



.avif)