NIST SSDF 프레임워크 이해

소프트웨어 공급망 보안 위험을 완화하려면 여러 계층의 보안과 다양한 전략을 구현해야 하는 경우가 많습니다. 그러나 소프트웨어 보안을 유지하는 가장 효율적인 접근 방식 중 하나는 소프트웨어 애플리케이션 개발 단계에서 발생할 수 있는 보안 취약성을 해결하는 것입니다. 소수의 소프트웨어 개발 수명주기 모델만이 소프트웨어 보안 문제를 명시적으로 다루기 때문에 이는 종종 어려운 일입니다. 소프트웨어를 안전하게 유지하려면 사용하기로 선택한 소프트웨어 개발 수명주기 모델에 관계없이 안전한 소프트웨어 개발 방식을 채택해야 합니다.

SSDF(Secure Software Development Framework)는 구축 중인 소프트웨어의 보안을 보장하기 위해 따라야 할 몇 가지 기본 관행을 간략하게 설명합니다. SSDF는 NIST(National Institute of Standards and Technology)에서 확립한 표준 소프트웨어 개발 보안 관행을 기반으로 하며 소프트웨어 개발의 보안 문제를 명시적으로 다룹니다. SSDF 버전 1.1은 다음에 정의되어 있습니다. NIST SP 800-218 출판. 이 프레임워크는 2021년 XNUMX월에 처음으로 게시되었습니다. 징병 버전. 22년 2021월 1.1일 NIST는 SSDF XNUMX의 최종 버전을 출시했습니다. 모든 높은 수준의 사례와 작업은 제공된 다양한 예를 중심으로 많은 차이점을 제외하고 동일하게 유지되었습니다. 구현할 방법을 결정할 때 NIST는 위험과 비용, 타당성 및 적용 가능성의 균형을 맞출 것을 권장합니다. 소프트웨어 보안을 촉진하는 검사와 프로세스를 최대한 자동화하는 것이 고려해야 할 핵심 기능입니다.

소프트웨어 개발 수명 주기 모델을 사용하는 조직에서는 소프트웨어 공급망 취약성으로부터 소프트웨어를 보호하기 위한 전반적인 노력의 일환으로 SSDF 지침을 구현해야 합니다. 이 프레임워크를 따르면 소프트웨어가 출시되기 전에 해결되지 않은 취약점을 탐지하는 데 도움이 됩니다. 이렇게 하면 감지되지 않은 취약점으로 인해 발생할 수 있는 보안 악용의 위험과 영향이 줄어듭니다. 이 문서는 SSDF 프레임워크가 무엇인지, 그리고 이것이 소프트웨어 공급망 보안에 어떻게 기여하는지 자세히 설명하는 포괄적인 가이드입니다.

보안 소프트웨어 개발 프레임워크의 4가지 사례

SSDF 관행은 네 가지 범주로 분류됩니다. SSDF 프레임워크에서 각 관행은 고유 식별자와 그것이 무엇인지, 왜 유익한지, 이를 구현하기 위해 수행해야 하는 작업에 대한 간략한 설명으로 식별됩니다. 프레임워크에는 확립된 보안 개발 실무 문서를 참조하여 실무를 구현하기 위한 도구, 프로세스 및 방법의 예도 포함되어 있습니다. 다음은 SSDF(Secure Software Development Framework) 버전 1.1의 네 가지 핵심 사례입니다.

조직(PO) 준비

보안 소프트웨어 개발은 ​​사람에 대한 의존도가 매우 높습니다. 따라서 SSDF를 구현하는 첫 번째 단계는 조직의 모든 사람이 프레임워크에 필요한 변경 사항에 대해 충분히 준비되어 있는지 확인하는 것입니다. 시작하려면 소프트웨어 개발에 사용할 도구를 기반으로 개발 중인 소프트웨어의 특정 보안 요구 사항을 식별해야 합니다. 이렇게 하면 조직 및 개인 수준 모두에서 사용하는 인력, 프로세스 및 기술을 준비할 수 있습니다.

조직 준비는 일반적으로 최고 경영진의 동의를 얻고 직원에게 필요한 교육을 구현하는 형태로 이루어집니다. 준비 노력의 일부에는 프로세스를 자동화하고 개발을 위한 안전한 환경을 만드는 데 도움이 되는 도구 구현이 포함될 수도 있습니다.

소프트웨어 보호(PS)

우산을 보호하는 이미지

보안 소프트웨어 개발 프레임워크는 소프트웨어의 모든 구성 요소를 무단 액세스 및 변조로부터 보호하기 위한 방법을 간략하게 설명합니다. 이는 우발적이든 의도적이든 코드에 대한 무단 변경을 방지하고 소프트웨어 소스 코드와 소프트웨어 구성을 보호하는 데 도움이 되는 중요한 단계입니다. 소프트웨어를 보호하려면 특정 상황에 따라 다양한 접근 방식이 필요할 수 있습니다. 코드가 공개적으로 액세스 가능하지 않은 경우 소프트웨어 도난을 방지하고 공격자가 취약점을 찾는 것이 더 어렵거나 시간이 많이 걸릴 수 있습니다.

SSDF의 이 섹션에 설명된 관행을 따르면 소프트웨어 소비자는 자신이 구입한 소프트웨어가 합법적이고 변조되지 않았음을 보장할 수 있습니다. 또한 소프트웨어 릴리스를 보존하여 릴리스 후 소프트웨어의 취약점을 식별, 분석 및 제거하는 데 도움이 됩니다.

보안이 철저한 소프트웨어(PW) 제작

보안 취약점을 최소화하면서 보안이 철저한 소프트웨어를 생산하려면 소프트웨어 개발 수명주기 전반에 걸쳐 따라야 할 기본 단계가 있습니다. 여기에는 다음이 포함됩니다.

  • 보안 소프트웨어 구성 선택
  • 소프트웨어의 타사 구성 요소를 평가하여 무결성을 보장합니다.
  • 소프트웨어 소스 코드가 보안 코딩 관행을 준수하는지 확인
  • 코드의 취약점을 검토, 분석, 테스트하고 코드가 출시되기 전에 식별된 문제를 해결합니다.
  • 컴파일러 및 인터프리터와 같은 빌드 도구 기능을 사용하여 취약점 예방

취약점 대응(RV)

소프트웨어가 출시된 후에도 소프트웨어에서 취약점을 발견할 가능성은 여전히 ​​있습니다. 조직 내의 테스터, 외부 보안 연구원, 심지어 고객도 이러한 취약점을 발견할 수 있습니다. 소프트웨어 보안의 중요한 부분은 이러한 취약점이 발견되는 즉시 신속하게 대응하는 것입니다. 보안 허점을 오랫동안 숨길수록 피해는 더 커집니다. 모든 조직에는 새로운 취약점을 분석하고 해결 방법을 결정하기 위해 취약점 공개 프로그램과 기타 정책이 필요합니다.

 

고려해야 할 주요 사항은 무엇입니까?

SSDF의 주요 목적은 조직이 소프트웨어 개발 활동에서 보안을 조정하고 우선순위를 지정하도록 돕는 것입니다. SSDF는 소프트웨어 개발 수명주기에서 보안을 구현할 때 비즈니스 요구 사항, 위험 허용 범위 및 리소스를 고려합니다. 이 프레임워크의 주요 고려 사항은 다음과 같습니다.

  • SDLC에 보안 통합

보안 소프트웨어를 구축하는 첫 번째 단계는 소프트웨어 개발 라이프사이클의 다양한 단계와 단계에 보안을 통합하는 것입니다. 기본적으로 개발팀은 보안 중심 문화를 갖추고 있어야 하며 이는 개발 프로세스의 초기 단계부터 시작되어야 합니다.

대부분의 경우, 많은 표준 코딩 방식에는 나중에 소프트웨어가 출시될 때 악의적인 당사자가 악용할 수 있는 수많은 취약점이 있습니다. 이것이 바로 개발자가 처음부터 보안을 생각해야 하고 이러한 잠재적인 공격 경로를 줄이는 데 도움이 되는 전략에 대해 잘 교육받아야 하는 이유입니다.

소프트웨어 보안의 인간적 측면에 대해 생각하는 것 외에도 처음부터 잠재적인 취약점에 대해 소프트웨어를 테스트하고 모니터링하는 프로세스를 자동화하는 것도 고려해야 합니다.

보안코드 개발 이미지

  • 보안 소프트웨어 개발 정책

보안 소프트웨어 개발 정책은 조직이 보안 소프트웨어 개발을 위해 따르는 관행과 절차를 자세히 설명하는 공식 지침 세트입니다. 이 정책 문서에는 개발 수명 주기의 모든 단계에서 따라야 할 사람, 기술 및 프로세스에 대한 자세한 지침이 포함되어 있습니다.

보안 소프트웨어 개발 정책은 소프트웨어의 무결성을 높이기 위한 단순한 권장 사항 그 이상입니다. 어떤 경우에는 필수이기도 합니다. 예를 들어 소프트웨어가 ISO 27001 또는 SOC Type 2 표준과 같은 보안 표준을 충족해야 하는 경우 보안 개발 정책 문서가 필요합니다. 다행히도 이러한 목적으로 채택할 수 있는 템플릿 가이드가 있습니다. 소프트웨어 보안 팀은 처음부터 정책 문서를 작성하여 특정 요구 사항에 맞게 조정할 수도 있습니다.

  • 타사 공급 업체

보안 코드를 작성하고 내부적으로 보안 요구 사항을 따르는 것만으로는 충분하지 않습니다. 대부분의 소프트웨어는 여전히 귀하와 동일한 보안 표준을 따르지 않는 타사 공급업체의 구성 요소를 사용합니다. 이러한 타사 코드 구성 요소는 다음을 수행하는 일반적인 경로입니다. 소프트웨어 공급망 공격 수행됩니다.

소프트웨어 개발 수명주기 전반에 걸쳐 보안 규정 준수를 보장하기 위한 노력의 일환으로 사용하는 모든 타사 구성 요소를 모니터링하고 공급업체가 보안 요구 사항을 완전히 인식하고 동일한 보안 표준을 완전히 준수하는지 확인해야 합니다.

  • 코드 무결성 보호

소프트웨어 코드와 모든 구성 요소는 악의적인 행위자가 소프트웨어에 취약점을 주입하기 위해 악용할 수 있는 잠재적인 공격 지점입니다. 이를 방지하려면 모든 코드가 어떠한 형태의 변조로부터도 안전할 때 보안 저장소에 보관해야 합니다.

코드 무결성을 유지하기 위한 노력에는 승인된 개발자만 소스 코드에 액세스할 수 있도록 하는 것이 포함됩니다. 선택한 코드 리포지토리에는 이를 보장하는 기능은 물론 로그인 프로세스를 보호하고 코드에 적용될 수 있는 모든 변경 사항을 모니터링하는 추가 기능도 있어야 합니다. 액세스 데이터를 모니터링하고 정기적인 코드 분석을 수행하는 자동화를 사용하면 코드 무결성을 더욱 향상시킬 수 있습니다.

  • 사전 설치된 악성코드

소프트웨어 공급망 공격의 일반적인 경로 중 하나는 사전 설치된 악성 코드의 보안 취약성을 숨기는 것입니다. 이는 소프트웨어에 큰 피해를 줄 수 있는 바이러스, 랜섬웨어, 트로이 목마 또는 스파이웨어일 수 있습니다. 맬웨어는 소프트웨어 빌드 프로세스에서 사용하는 장치나 신뢰할 수 있는 소프트웨어 또는 타사 공급업체의 시스템에 사전 설치되어 있을 수 있습니다. 이 악성 코드는 합법적이고 디지털 서명된 프로세스를 통해 시스템을 통해 확산될 수 있을 때까지 오랫동안 숨겨져 있을 수 있습니다. 소프트웨어 개발 보안에는 사전 설치된 악성 코드를 감시하고 이를 식별하고 제거하기 위한 조치를 취하는 것이 포함됩니다.

  • 코드 테스트, 검토 및 체크리스트

소프트웨어 개발에 대한 전통적인 접근 방식에서는 일반적으로 소프트웨어 개발 수명주기가 끝날 때까지 코드 테스트를 진행합니다. 그러나 소프트웨어 취약점을 포착하기 위한 이러한 대응적 접근 방식은 그리 효과적이지 않습니다. 보다 효율적인 접근 방식은 자동화된 테스트를 설정하여 빌드할 때 코드의 결함을 지속적으로 찾아내는 것입니다. 또한 개발자는 나중에 결함이 발견될 경우 좌절감을 방지하기 위해 코드를 수동으로 검토하고 확인해야 합니다.

추적할 부품과 구성 요소가 많기 때문에 빌드할 때 체크리스트를 만드는 것이 좋습니다. 이는 소프트웨어 개발 및 모니터링 팀이 SSDF 정책에 명시된 모든 조치를 적절하게 준수하는지 확인하는 데 도움이 됩니다.

  • 취약점 완화

SSDF 및 기타 보안 표준을 준수함에도 불구하고 소프트웨어 개발에서는 취약점이 사실상 피할 수 없습니다. 가장 중요한 것은 이러한 취약점이 발생할 때 이를 완화할 준비를 갖추는 것입니다. 이는 보안 사고가 발생하는 즉시 이를 해결할 수 있도록 명확하게 계획된 계획과 전략을 갖춘 팀을 구성하는 것을 의미합니다.

조직이 보안 취약성에 얼마나 빨리 대응할 수 있는지에 따라 그러한 공격의 부정적인 영향을 줄이는 데 큰 차이가 생깁니다. 소프트웨어 결함을 신속하게 발견하고 수정하면 악의적인 행위자가 이를 악용할 수 있는 시간이 더 짧아집니다. 따라서 취약성 완화는 모든 조직이 주의를 기울여야 하는 보안 소프트웨어 개발의 중요한 측면입니다.

  • 보안 기본 설정

새 소프트웨어에는 고급 지식이 없어도 소프트웨어 취약성으로부터 사용자를 보호하는 데 도움이 되는 기본 보안 설정이 있어야 합니다. 또한 소프트웨어 채택 초기 단계에서도 사용자를 보호하기 위해 이러한 기본 설정에 대해 사용자에게 교육하는 조치를 구현할 수도 있습니다.

결론

SSDF(Secure Software Development Framework)는 모든 조직의 소프트웨어 개발 수명주기에 통합되어야 하는 일련의 고급 사례입니다. 개발 프로세스 초기에 이 프레임워크에 명시된 사례를 따르면 최종적으로 출시하는 소프트웨어 버전의 보안 결함을 줄일 수 있습니다. SSDF는 또한 보안 위험을 감지하고 최종 릴리스에 포함되는 감지되지 않은 취약성의 잠재적인 영향을 줄이는 데 도움이 됩니다. 이 프레임워크는 향후 이러한 보안 문제가 재발하는 것을 방지하는 데 핵심입니다.