문맥 (context)
미군은 소프트웨어의 취약성, 결함 및 약점을 사전에 탐지하고 완화하여 전력화된 시스템에서 사이버 취약성이 발생되지 않도록 개선하는 소프트웨어 보증 전략을 발전시키고 있다. 소프트웨어는 군사력을 구성하는 개별 시스템의 가장 기초가 되는데, 소프트웨어에 실수로 또는 의도적으로 삽입된 취약성은 적으로 하여금 시스템을 쓸모없게 만들거나 혹은 시스템이 오히려 우리를 위협하게 만들 수 있는 수단이 되기 때문이다. 최근 우리 국방 분야의 사이버위협이 점차 지능화・고도화되고 사이버 침해사고로 인한 피해와 파급효과가 점점 증가함에 따라 사이버위협에 대한 대비 태세를 강화하기 위한 구체적 조치가 요구되고 있다. 이에 본고에서는 소프트웨어 보증 수준 향상을 위해 미군에서 추진하고 있는 소프트웨어 보증 전략과 이를 뒷받침하는 방법론적인 발전 동향에 대해 살펴보고 우리에게 주는 시사점을 제시하였다.
획득단계에서는 보호대책 검토, 시스템 개발 과정의 사이버방호 관련 산출물 검토, 시험평가, 보안측정, 상호운용성 수준측정・시험평가 등의 평가를 수행하고 있다. 이 중 사이버 전문조직(국군사이버사령부, 군사안보지원사령부 등)이 직접 참여하여 수행하는 업무는 ‘보호대책 검토’와 ‘보안측정’이다. 보호대책 검토는 정보시스템의 구축・운영에 관련된 ‘보호대책서’의 적절성과 충분성에 대해 사업계획서・체계개발계획서 수립 시점에서 최초 수행된다. 보안측정은 운용시험평가 후 운용 전에 군사안보지원사령부에서 해당 정보시스템의 운용 환경에서의 안전성과 보안성을 평가한다. 보호대책에서 수립된 사이버방호 요구사항의 실질적 구현에 대한 평가는 시스템 개발과정의 산출물 검토와 시험평가 단계에서 이루어져야 하지만, 이 단계에서는 전문기관의 직접적이고 명시적인 참여는 이루어지지 못하고 있다.
첫째, 국방 획득 전 순기에 걸쳐 소프트웨어 보증 활동을 강화하는 정책을 발전시켜야 한다. 미군은 소프트웨어의 보안 상태를 높이기 위해서 소프트웨어 보증 기술을 사용하는 것을 획득 프로세스의 일부로서가 아니라 획득 프로세스 전체에 통합된 요소로 전환하려고 노력하고 있다. 특히, 소프트 웨어의 개발 프로세스를 진행하는 초기에 소프트웨어 보증 테스트를 병행하도록 하고 있으며, 이를 ‘Shift Left’라는 구호로 강조하고 있다. 소프트웨어 배포 시 발견된 결함의 1~5%가 잠재적으로 악용될 수 있는 취약점이며, 결함 수정 비용이 코딩 후 수정하는 데는 10배, 배포 후 수정에는 100배나 더 많이 소요된다는 연구 결과를 감안할 때 이러한 미 국방부의 조치는 당연한 것이다. 이에 반해 우리는 운영유지 단계에 와서야 소프트웨어의 취약점에 대한 분석・평가를 수행하고, 개발단계에서는 전문기관의 검토 및 평가가 개발 착수 전과 시험평가 후 운용 직전에 보호통제수단의 적절성 평가 위주로만 진행하고 있다. 획득 프로세스 전체를 염두에 둔 접근이 시급한 상황이다.
미 국방부는 앞서 설명한 바와 같이 다양한 정책을 통해 소프트웨어 보증 활동을 강조하고 있다. 소프트웨어의 약점을 식별・제거하기 위한 소프트웨어 분석 활동이 사업의 중요한 보호 대책이라는 것이다. 하지만 소프트웨어의 규모가 매우 크기 때문에 관련 전문가가 순수하게 수동으로 소프트웨어를 분석하는 것은 비현실적이다. 따라서 소프트웨어의 취약성을 예방・완화・제거하고 소프트웨어가 의도한 대로 작동하는지 확인하는 일련의 방법과 절차가 여러 가지 도구와 기법을 통해 체계적으로 지원되어야 한다. 소프트웨어 보증 도구와 기법의 개발은 대학, 연구소, 민간 기업이 주도하고 있으며, 미국 정부와 군은 관련된 도구와 기법의 개발・활용을 촉진하기 위한 기반을 조성하고자 꾸준히 노력하고 있다. 여기에서는 소프트웨어 보증 도구・기법의 유형에 대해 살펴보고, 도구・기법을 선택하고 평가하는데 기반이 되는 소프트웨어 보증 참조 데이터에 대해서 간단히 설명한다. 또한, 최근 발전하고 있는 소프트웨어 보증을 위한 공개 소스 도구에 대해서도 살펴본다.
둘째, 소프트웨어 보증을 위한 자동화된 도구나 기법을 활용한 분석 능력을 발전시킬 필요가 있다. 소프트웨어 보증에 관련된 정책과 관리에 대한 수백 페이지의 문서만으로 변화를 유도하기에는 제한적이다. 실질적인 변화는 사업 수준에서 실행 가능하고 합리적이며 달성 가능한 단계를 통해 이끌어 낼 수 있다. 미군의 시범적용 사례에서 확인된 것처럼, 소프트웨어 보증 도구를 도입하면 개발 프로세스 전반에 걸쳐 보다 체계적인 방식으로 소프트웨어 보증에 접근하도록 개선할 수 있으며, 이러한 프로세스 개선은 특정 코드 줄을 변경하는 것보다 기하급수적으로 큰 영향을 미치므로 시간, 비용, 기타 자원 등을 크게 절약할 수 있다. 우리 군도 소프트웨어 보증 도구의 적용을 확대하여 개발・시험・운영유지 단계의 소프트웨어 보증 프로세스를 개선할 필요가 있다.
소프트웨어 보증 도구의 개발자 혹은 사용자 입장에서 도구의 장점과 한계를 이해하는 것은 또 다른 차원에서 매우 중요한 문제이다. 예컨대 사용자는 도구가 소스코드에서 약점을 얼마나 효과적으로 찾아내는지 파악하고 싶을 것이다. 이를 위한 일반적인 방법은 알려진 약점이 있는 다수의 소프트웨어 프로그램(이를 ‘테스트 케이스’라고 함)을 대상으로 시험해 보는 것이다. 테스트 케이스에 대해 후보 도구를 실행하여 도구에서 발견한 또는 발견하지 못한 약점의 종류와 오탐지율에 대한 정보를 얻을 수 있다. 이런 측면에서 소프트웨어 보증 도구의 개발과 활용을 촉진시키기 위해서는 도구에 대한 적절한 평가 기준을 충족하는 다양한 테스트 케이스가 필요하다. 미국은 정부 차원에서 다양한 테스트 케이스를 수집하고자 노력하고 있는데, 대표적으로 국립표준기술연구소(NIST: National Institute of Standards and Technology)에서 ‘소프트웨어 보증 참조 데이터 집합(SARD: Software Assurance Reference Dataset)’이라는 공용 저장소를 운영하면서, 알려진 문제가 있는 수십만 개의 프로그램을 지속적으로 관리하고 있다.
2016년 미군의 JFAC은 미 국방부의 선택된 사용자에게 제한된 수량의 소프트웨어 보증 도구를 제공하여 이러한 도구의 사용이 소프트웨어 보증 상태를 어떻게 향상시킬 수 있는지 평가한 바 있다. 시범 적용한 소프트웨어 보증 도구는 동적 웹 테스트 도구, 2개의 정적 소스코드 분석기, 출처 분석 기 등 4종이다. 각 사용자는 소프트웨어 보증 도구를 적용한 후 카네기멜론 대학에서 개발한 설문지를 통해 도구의 효과와 가치, 도구의 유용성 등에 대해 평가하였다. 결과는 대체로 긍정적이다. 우선, ‘각 도구가 프로젝트 및 응용 프로그램에서 의미 있는 문제・경고・취약성을 발견하는데 효과적인가?’ 라는 질문에 도구별로 40~75%의 응답자가 효과적이라고 답하였다. 또한, ‘개발 및 테스트 프로세스에서 각 도구를 계속 사용할 것인가?’ 라는 질문에 도구별로 60~100%의 응답자가 계속 사용하기를 원한다고 답했다.
셋째, 기존 사이버 전문조직에서 소프트웨어 보증과 관련된 역량을 더욱 확대하고 개별 사업관리조직에 대한 지원을 강화할 필요가 있다. 미 국방부가 국방차관 주도로 설립된 JFAC을 중심으로 국방사업에 대한 보증 기능 및 전문가 지원을 제도화하여 운영하고 있으며, 소프트웨어 보증 자동화 분석 도구의 획득 및 배포를 담당하고, 보증 기술・방법론・인력교육 등을 개선하기 위한 투자를 시행하고 있다는 점을 눈여겨볼 필요가 있다. 넷째, 소프트웨어 보증과 관련된 기반 조성 노력도 강화할 필요가 있다. 미국의 경우 소프트웨어 보증 도구와 기법의 개발 및 발전은 대학, 연구소, 민간기업, 비영리 단체 등에서 주도하고 있지만, 도구의 개발과 개발된 도구의 평가를 위해 필수적으로 요구되는 재료인 테스트 케이스 축적을 위해서는 정부 차원에서 ‘소프트웨어 보증 참조 데이터 집합’이라고 하는 공용 저장소를 지속적으로 발전시키고 있다. 또한, 사용자 입장에서 자신의 분석 목적에 맞는 도구와 기법을 결정할 수 있도록 지원하기 위해 최신의 도구・기법들을 집대성한 문서를 지속적으로 발간, 갱신하고 있다.
지시문 (instruction)
다음 문맥을 읽고 질문에 답하시오.
질문 (question)
미군이 소프트웨어 개발 프로세스 초기에 소프트웨어 보증 테스트를 병행하도록 강조하며 사용하는 구호는 무엇인가?
추론 과정 (compact_reasoning)
-
1과제 해석
task_interpretation미군이 소프트웨어 개발 초기 단계에서 보증 테스트를 병행하는 것을 강조할 때 사용하는 특정 용어나 구호를 찾는 것이다.
-
2정보 추출
information_extraction문맥 내에서 미군의 소프트웨어 보증 전략 및 개발 프로세스 초기 단계와 관련된 내용을 추출한다.
- 특히, 소프트 웨어의 개발 프로세스를 진행하는 초기에 소프트웨어 보증 테스트를 병행하도록 하고 있으며, 이를 ‘Shift Left’라는 구호로 강조하고 있다.
-
3근거 선택
evidence_selection질문에서 요구하는 '구호'에 직접적으로 대응하는 문구를 선택한다.
- ‘Shift Left’라는 구호로 강조하고 있다.
-
4논리 통합
logical_integration추출된 문구에서 강조하고자 하는 구호인 'Shift Left'를 식별한다.
- ‘Shift Left’
-
5결론 도출
conclusion_formulation미군은 소프트웨어 개발 초기 단계에 보증 테스트를 병행하는 것을 'Shift Left'라고 부른다는 결론을 도출한다.
-
6답변 생성
answer_generation질문에 대한 최종 답변을 작성한다.
최종 답변 (final_answer)
Shift Left
핵심 해석 (core_interpretation)
문맥에서 미군이 소프트웨어 개발 프로세스 초기에 보증 테스트를 병행하는 전략을 강조하기 위해 사용하는 구호가 'Shift Left'임을 명시적으로 확인하여 답을 도출한다.