새로운 NIST 가이드라인: 안전한 소프트웨어 구축을 위해 맞춤형 교육이 필수적인 이유

2019년 6월 11일, 미국 국립표준기술연구소(NIST)는 여러 실행 계획을 상세히 담은 업데이트된 백서를 발표했습니다. 소프트웨어 취약점 및 사이버 위험을 줄이기 위한 보안 소프트웨어 개발 프레임워크(SSDF) 도입을 통한 소프트웨어 취약점 위험 완화라는 제목의 이 백서에서 NIST는 데이터 유출로 인한 막대한 비용과 심각한 결과를 방지하기 위한 확실한 가이드라인을 조직에 제공합니다.
SSDF는 의도적으로 범용적인 성격을 띠고 있다는 점에 주목해야 합니다. 모든 조직이 동일한 소프트웨어 보안 목표를 가지고 있다고 가정하지 않으며, 이를 달성하기 위한 구체적인 메커니즘을 강요하지도 않습니다. 주요 목적은 보안 모범 사례를 구현하는 것입니다. 작성자인 도나 도드슨(Donna Dodson)은 다음과 같이 언급했습니다. "각 보안 생산자가 모든 적용 가능한 관행을 따르는 것이 바람직하지만, 각 관행이 구현되는 정도는 생산자의 보안 가정에 따라 달라질 것으로 예상됩니다. 이러한 관행은 구현자에게 유연성을 제공하는 동시에, 해석의 여지를 너무 많이 남기지 않도록 명확성을 유지합니다."
물론 저에게 특히 흥미로웠던 부분은 개발자를 위한 소프트웨어 보안 교육에 관한 구체적인 내용이었습니다. 개발자가 소프트웨어 개발 초기 단계부터 조직을 방어하려면 적절한 교육이 필요하다는 사실은 오래전부터 알고 있었지만, 과연 무엇이 적절한 교육일까요? 이에 대해서는 다양한 의견이 존재합니다. 하지만 저는 이제야 비로소 긍정적인 결과를 이끌어낼 수 있는 방향으로 변화가 시작되고 있다고 생각합니다.
보안 교육이 다 같은 보안 교육은 아닙니다. 효과적인 보안 교육이 따로 있습니다.
저는 소프트웨어 보안 교육이 개발자의 필요에 맞춰 더 효과적으로 구현되고 참여를 유도해야 한다는 점을 누누이 강조해 왔습니다. 오늘날 많은 조직에서 보안 교육은 여전히 형식적인 '체크리스트' 수준에 머물러 있습니다. 기껏해야 몇 시간짜리 동영상 교육을 보거나, 귀한 시간을 내어 강의실 교육을 받는 정도가 전부입니다. 잘 알려진(그리고 보통은 쉽게 수정 가능한) 취약점을 악용하는 공격자들에 의해 대규모 데이터 유출 사고가 끊이지 않는다는 사실은 현재의 소프트웨어 보안 교육이 전혀 효과적이지 않다는 증거입니다. 무엇보다 중요한 점은 교육의 효과를 검증할 장치가 거의 없다는 것입니다. 취약점이 더 빨리 수정되고 있나요? 코드 내 취약점이 줄어들고 있나요? 사람들이 실제로 교육을 완료했나요, 아니면 단순히 '다음' 버튼만 눌러 교육을 끝냈나요?
개발자들은 엄격한 마감 기한을 맞추기 위해 바쁘게 일하는 사람들입니다. 보안은 종종 업무를 방해하는 요소로 여겨지며, 교육 과정에서 사이버 위험을 성공적으로 완화하는 데 필요한 지식을 습득할 기회도 거의 없습니다. '보안'이라는 단어는 보통 앱 보안(AppSec) 팀원이 작업의 결함을 지적할 때나 등장하며, 이는 차갑고 비생산적인 관계를 만듭니다. 마치 "당신의 아이가 못생겼으니 고쳐오라"고 말하는 상황과 같습니다.
이것이 우리에게 무엇을 말해줄까요? 이는 우리가 개발자들의 보안 참여를 이끌어내는 데 충분한 노력을 기울이지 않았음을 보여주는 수십 년 된 적신호입니다. 개발자들은 책임을 지거나, 기능적이면서도 보안 모범 사례를 고려한 소프트웨어를 만드는 데 필요한 도구를 찾으려는 동기가 부족합니다.
개발자들은 영리하고 창의적이며 문제 해결을 즐깁니다. 끝도 없이 이어지는 보안 취약점 관련 동영상을 보는 것이 그들에게 흥미를 주거나 지속적인 참여를 이끌어내기는 어렵습니다. SANS 강사로 활동하면서 저는 최고의 교육은 실습 위주여야 한다는 것을 빠르게 깨달았습니다. 실제 사례를 사용하여 지적 도전을 주고, 뇌를 자극하며, 기존 학습을 바탕으로 분석하게 만들어야 합니다. 게임화와 건전한 경쟁 역시 새로운 개념을 모두가 받아들이게 하는 강력한 도구이며, 동시에 실용적이고 유용한 학습 방법입니다.
NIST 가이드라인은 다음과 같이 명시합니다. "보안 개발에 기여하는 책임을 가진 모든 인원에게 역할별 교육을 제공하십시오. 역할별 교육을 주기적으로 검토하고 필요에 따라 업데이트하십시오." 또한, "사이버 보안 담당자, 보안 챔피언, 고위 경영진, 소프트웨어 개발자, 제품 책임자 및 SDLC에 참여하는 기타 인원을 위한 역할과 책임을 정의하십시오."라고 명시하고 있습니다.
이 문구는 교육의 유형을 구체적으로 명시하지는 않았지만, 조직이 보안을 개발 초기 단계로 앞당기고(shift left) 보안 모범 사례를 최우선으로 고려하도록 돕고 있습니다. 이는 효과적이고 구체적인 교육 솔루션을 찾아야 할 책임을 다시 기업에 부여하는 것이며, 이를 통해 개발자들이 성공에 필요한 올바른 도구와 지식을 갖추게 되기를 기대합니다.
문화: 빠진 고리.
조직이 개발자와 핵심 인력을 교육하고 취약점 예방 및 보안 위험 감소에 중점을 두는 데 시간과 자원을 투자하더라도, 조직의 보안 문화가 근본적으로 잘못되어 있다면 이러한 노력은 헛수고가 되기 쉽습니다.
개인이 명확한 목표와 기대치 속에서 효과적으로 교육받으면, 보안 환경 내에서 자신의 위치를 이해하고 적절한 책임을 지기가 훨씬 쉬워집니다. 특히 개발자의 경우, 처음부터 안전한 코드를 작성할 수 있는 도구와 지식을 갖추게 됩니다. 하지만 이는 중복 작업, 비난, 부서 간 이기주의가 적은 긍정적인 보안 환경에서 가장 잘 이루어집니다.
보안은 조직 전체의 최우선 과제가 되어야 하며, 훌륭하고 안전한 소프트웨어를 제공하기 위한 협력적이고 지원적인 노력이 뒷받침되어야 합니다. 이는 실제 코드 취약점을 활용한 재미있고 참여를 유도하는 교육을 실시할 수 있는 충분한 예산을 확보하고, 조직 전체의 동의를 얻어 추진력을 유지하는 것을 의미합니다. 끊임없이 진화하는 디지털 환경에서 교육은 소프트웨어 배포만큼이나 지속적이어야 합니다. 과거에 '일회성' 또는 '한 번 설정하면 끝'인 규정 준수 교육으로 충분하다는 말을 들었다면, 그것은 잘못된 생각입니다.
이번 새로운 NIST 프레임워크가 긍정적인 보안 문화를 조성해야 한다는 요구사항을 구체적으로 명시하고 있지는 않지만, 가이드라인을 성공적으로 준수하려면 반드시 그러한 문화가 필요합니다. 다만 NIST는 "조직의 소프트웨어가 충족해야 할 보안 요구사항을 명시하는 정책을 정의하고, 개발자가 따라야 할 안전한 코딩 관행을 포함하십시오"라고 언급하고 있습니다.
위의 내용은 팀 내 보안 기술을 확장하고 연마하는 데 필수적이며, 자체 정책과 현재의 앱 보안 환경을 평가할 때 다음 사항을 고려하는 것이 도움이 될 수 있습니다.
- 소프트웨어 보안 가이드라인과 기대치가 명확하게 정의되어 있습니까?
- 모두가 이를 달성하기 위해 자신이 맡은 역할을 명확히 이해하고 있습니까?
- 교육이 빈번하게 이루어지고 평가됩니까?
- 개발자들이 일반적인 보안 버그를 발생하기 전에 제거하는 데 큰 역할을 할 수 있다는 사실을 인지하고 있습니까?
마지막 부분은 앞서 말했듯이 조직과 그들이 선택하는 교육에 달려 있습니다. 교육은 관련성이 있어야 하고, 빈번해야 하며, 참여를 유도해야 합니다. 일상 업무에 적용할 수 있고 맥락에 맞게 지식을 쌓아갈 수 있는 솔루션을 찾으십시오.
이제 무엇을 해야 할까요?
이 새로운 가이드라인을 깊이 파고드는 것은 상당히 부담스러울 수 있습니다. 대부분의 기업이 필요로 하는 철저하고 안전한 소프트웨어를 가장 안전한 방식으로 구축, 검증 및 배포하려면 모두의 협력이 필수적이기 때문입니다. 단순히 교육만으로 해결될 문제가 아닙니다. 타사 소프트웨어를 사용할 때 고려해야 할 가이드라인도 있습니다(알려진 취약점이 있는 구성 요소 사용은 여전히 OWASP Top 10에 포함되어 있습니다). 검증, 모의 해킹, 코드 검토에 대한 제안뿐만 아니라 보안 기록 유지, 적절한 툴체인 등에 관한 지침도 포함됩니다. 전체적인 그림을 파악할 수 있는 실행 가능한 통찰력은 NIST 문서 전반에서 참조하는 Gary McGraw 박사의 BSIMM 모델에서 확인할 수 있습니다.
하지만 가장 빠른 성과는 개발자가 처음부터 안전한 소프트웨어를 구축할 수 있도록 올바른 도구와 지식을 갖추게 할 때 얻을 수 있습니다. SDLC 후반 단계에서 흔히 발생하는 취약점이 반복적으로 나타나지 않도록 예방하는 것이 기업 입장에서도 비용이 적게 들고 전체적으로도 훨씬 빠릅니다. 개발자의 강점을 살리고 조직의 보안 측면에 참여하도록 동기를 부여하세요. 보안은 실제로 즐거운 작업이 될 수 있으며, 개발자는 악의적인 공격자를 막고 데이터를 안전하게 보호하는 적재적소의 영웅이 될 수 있습니다.
참고 문헌:
배포 전 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)