소프트웨어 공급망 보안이란 무엇입니까?
소프트웨어 공급망은 전체 소프트웨어 개발 수명주기(SDLC) 동안 제품이나 애플리케이션에 영향을 미치거나 역할을 수행하는 모든 것을 포함합니다.
최근 몇 년 동안 소프트웨어 공급망에 대한 공격이 점점 더 일반화되고 더욱 정교해지고 있습니다. 2022년 보고서에서는 가트너 상태 : "기업 공격 표면의 지속적인 확장을 예상하고 신원 위협 탐지 및 해결, 디지털 공급망 무결성을 위한 프로세스와 도구에 대한 투자를 늘리십시오."
소프트웨어 생성 및 배포와 관련된 모든 구성 요소, 활동 및 SDLC 관행을 보호하는 것이 그 어느 때보다 중요합니다. 개발 팀과 소프트웨어 공급업체는 알려진 취약점이 없는 코드 구성 요소만 활용하고 빌드의 무결성을 검증하고 무단 변조를 확인하는 방법을 찾아야 합니다.
소프트웨어 공급망 보안의 정의
소프트웨어 공급망은 전체 소프트웨어 개발 수명주기(SDLC)에 걸쳐 애플리케이션 개발과 관련된 모든 것을 의미합니다. 소프트웨어를 만들고 배포하려면 공급망의 활동, 프로세스 및 구성 요소를 보호해야 합니다. 이와 관련하여 사용자 지정 코드(사내 구성 요소), 오픈 소스 종속성 및 라이브러리(타사 구성 요소), CI/CD 프로세스를 구성하는 DevOps 도구 및 인프라, 마지막으로 개발자 및 DevOps를 포함하여 고려해야 할 요소가 많이 있습니다. 팀.
이러한 보안 활동을 수행하고 보안 노력에 대한 증거를 소비자에게 제공하는 것은 조직의 책임입니다.
소프트웨어 공급망에 대한 공격: 왜 그렇게 흔한가요?
최신 소프트웨어 파이프라인은 지속적인 통합과 지속적인 전달을 위해 다양한 도구를 사용하는 자동화된 환경입니다. 소프트웨어 프로젝트에는 결국 수천 개의 오픈 소스 종속성이 포함될 수 있습니다.
악의적인 행위자는 오픈 소스 패키지 관리자의 "논리적 결함"을 이용하여 악성 라이브러리를 합법적인 것으로 가장할 수 있습니다. 예를 들어, 맬웨어가 포함된 패키지는 신뢰할 수 있는 유지 관리 담당자가 알지 못하는 사이에 발생한 것으로 간주될 수 있습니다. 이러한 잘못된 신뢰로 인해 코드에 문제가 있고 숨겨진 취약점이 발생할 수 있습니다. 이러한 취약점으로 인해 공격자는 중요한 데이터에 액세스할 수 있거나 공급망 전체에 악성 코드를 설치하고 시스템을 제어할 수 있습니다.
현대 개발 환경에는 고유한 취약점이 있으며 CI/CD 파이프라인을 표적으로 삼은 다양한 소프트웨어 공급망 공격이 개발 프로세스 전반의 특정 시점에 악성 코드를 삽입합니다. 여기서도 제로 트러스트 가정은 최종 소프트웨어 제품에 대한 신뢰를 얻기 위한 적절한 접근 방식입니다. 내부 개발 체인의 모든 단계를 확인하고 검증합니다.
오늘날의 CI/CD 파이프라인에는 소프트웨어 개발 프로세스를 적절하게 보호하기 위한 가시성과 제어 기능이 부족합니다. 또한 코드 변조를 감지하는 데 어려움을 겪기 때문에 이 공격 벡터가 더욱 매력적입니다.
SSDF(NIST 800-218)가 확정되어 시행 중입니다.
SSDF(NIST 800-218) 프레임워크 공급업체는 소프트웨어 개발 수명 주기(SDLC)를 포괄하는 보안 관행을 구현해야 합니다. 보안 취약성과 악의적인 간섭을 줄이기 위한 노력의 일환으로 투명성과 변조 방지 조치를 장려합니다.
특히 소프트웨어 자체가 변조되지 않도록 보호하기 위한 증거 기반 접근 방식에 대한 지침이 포함되어 있습니다.
SSDF는 네 가지 주요 부분으로 구성됩니다.
01 /
조직(PO) 준비:
조직 수준에서, 경우에 따라 개별 개발 그룹이나 프로젝트를 위해 안전한 소프트웨어 개발을 수행할 수 있는 인력이 준비되어 있고 프로세스와 기술이 마련되어 있는지 확인하십시오.
02 /
소프트웨어(PS) 보호:
모든 소프트웨어 구성 요소를 무단 액세스나 변조로부터 보호하십시오.
03 /
보안이 철저한 소프트웨어(PW) 제작:
릴리스 시 보안 취약점을 최소화하면서 보안이 잘 유지되는 소프트웨어를 생산합니다.
04 /
취약점(RV)에 대응:
소프트웨어 릴리스의 잔여 취약점을 식별하고 해당 취약점을 해결하기 위해 적절하게 대응하며 향후 유사한 취약점이 발생하지 않도록 방지합니다.
SSDF를 체크리스트로 참조하기보다는 보안 소프트웨어 개발에 대한 위험 기반 및 증거 기반 접근 방식을 계획하고 구현하기 위한 가이드로 참조해야 합니다.
기업은 새로운 규제 변화를 쉽게 준수할 수 있도록 보안 태세를 개선하기 위한 조치를 취해야 합니다.
SLSA는 준수해야 하는 프레임워크입니다.
SLSA(소프트웨어 아티팩트에 대한 공급망 수준)라고 하는 Google에서 시작된 프레임워크는 소프트웨어 공급망 보호의 4가지 수준에 도달하는 방법에 대한 지침을 제공합니다. 프레임워크는 변조를 방지하고 아티팩트를 보호하려는 의도로 아티팩트 빌드의 무결성에 중점을 둡니다.
SLSA는 다음과 같은 방식으로 작동합니다. 파이프라인에서 구현해야 하는 보안 제어의 체크리스트를 구현하고 이러한 제어는 소프트웨어 프로젝트에 가져오는 소스 제어 시스템, 빌드 시스템 및 종속성과 같은 하위 도메인에 있습니다.
SLSA는 보안 가치가 가장 높지만 요구 사항 목록이 더 긴 레벨 4에 도달하는 것을 목표로 XNUMX가지 규정 준수 레벨을 제시합니다.
SLSA 프레임워크는 출처 개념을 기반으로 합니다. 유물의 출처와 제작 과정을 나타내는 "증거 체인"을 나타내는 문서입니다. SLSA 레벨이 올라갈수록 증거 자체를 더욱 잘 보호해야 합니다.
SLSA를 업계 표준, 즉 준수해야 하는 인식 가능하고 합의된 보호 및 규정 준수 수준으로 간주해야 합니다.
소프트웨어 공급망을 보호하는 방법은 무엇입니까?
그러나 우리는 강조하고 싶습니다. 보안 제어의 세 가지 주요 클래스:
1. 소프트웨어 개발 라이프사이클의 구성을 보호하세요.
손상된 자격 증명, 권한에 대한 불충분한 제어, 취약한 빌드 시스템은 소프트웨어 제작자에게 영향을 미치는 공격 표면을 만듭니다. 이러한 취약점을 악용하는 공격자는 안전하지 않은 비밀을 훔치거나 소프트웨어 아티팩트를 변조할 수 있습니다. 이 클래스의 다양한 상용 및 오픈 소스 솔루션은 보안 상태의 격차를 파악하고 해결하기 위한 제어 기능을 제공할 수 있습니다.
2. 취약하거나 악의적인 종속성에 의존하지 마세요.
오픈 소스 및 상용 소프트웨어에서는 변함없이 새로운 취약점이 계속해서 발견될 것입니다. 소프트웨어 생산자는 취약한 오픈 소스 구성 요소를 업그레이드하고, 독점 코드에서 자체적으로 발생하는 취약점을 검색하고, 소프트웨어 소비자에게 소프트웨어 재료 명세서(SBOM) 및 관련 의미를 알려 이러한 위험을 완화해야 합니다. 이러한 소비자는 그에 따라 조치를 취할 수 있습니다.
하이재킹된 오픈 소스 프로젝트 계정과 합법적인 것으로 가장하는 악성 패키지는 추가적인 위험을 초래하며 주로 파이프라인의 비밀 도용에 영향을 미칩니다. 오픈 소스 커뮤니티와 일부 상용 공급업체는 향상된 평판과 악의적인 행동 탐지를 통해 이 문제를 해결하기 위해 노력하고 있습니다.
3. 소프트웨어 아티팩트의 무결성 및 보안 빌드를 검증합니다.
사이버 보안에는 심층적인 방어가 필요합니다. 보호에 대한 기존 공격 표면 감소, 탐지 및 평판 접근 방식을 사용하면 공격이 틈을 통해 빠져나갈 수 있습니다. 더욱이 오늘날 다운스트림 소프트웨어 소비자는 이러한 제어에 거의 영향을 미치지 않습니다. 기껏해야 취약성 스냅샷을 제공하는 코드 스캐닝과 같은 특정 시점 보안 감사에 의존할 수 있으며, 이는 소프트웨어 아티팩트가 개발 수명 주기 동안 잘 보호되고 보호된다는 실제 신뢰를 생성하지 않는 공급업체에 대한 것입니다.
이제 모든 소프트웨어 아티팩트 빌드의 무결성과 보안 개발 프로세스를 지속적으로 증명하는 새롭게 떠오르는 컨트롤 클래스를 사용할 수 있습니다. 이러한 증명은 평판이 좋지 않으며 검증을 원하는 생산자와 다운스트림 소비자 간에 공유될 수 있습니다. 부인 방지는 암호화 방법을 통해 이루어지므로 공급망에 침투하는 공격자의 가격이 크게 상승합니다.
이 접근 방식은 소프트웨어 공급망 보안 분야의 전문가들에 의해 필수적이라고 간주됩니다. 그러나 이러한 종류의 제어를 지원하기 위한 일부 오픈 소스 구성 요소가 존재하지만 통합 솔루션을 제공할 수 있는 공급업체는 소수에 불과합니다.
전체 소프트웨어 공급망 솔루션에는 다음이 포함되어야 합니다.
소프트웨어 개발 및 빌드 프로세스에서 증거를 수집하고 이를 증명으로 서명합니다. 일반적으로 이 증거는 프로세스의 관련 단계, 코드 커미터 ID, 코드 검토, 자동 보안 테스트 등과 같은 보안 관련 단계에 대한 이벤트 간에 비교되는 메타데이터가 포함된 파일 해시입니다. 또한 소프트웨어 아티팩트가 빌드된 당시 소프트웨어 제작자의 빌드 프로세스의 보안 상태에 대한 증명을 제공해야 합니다.
가시성을 허용하고 코드 무결성 검증과 같은 분석을 지원하는 보안 증명 저장소입니다.
규정 준수 검증 및 시연을 위해 조직에서 정의한 정책 또는 표준 기반 정책에 대해 이러한 증명을 측정하는 정책 엔진입니다.
소프트웨어 생산자 또는 소비자 간의 신뢰 관련 정보를 공유하는 허브입니다. 이는 기업 간 또는 기업 내일 수 있습니다).
소프트웨어 무결성을 검증하는 것은 어렵습니다.
이론적으로 코드 무결성을 확인하는 것은 쉬워야 합니다. 파일을 비교하면 됩니다. 그렇죠? 현실적으로 고려해야 할 것이 많습니다. 우선, 각 언어는 파일을 다르게 컴파일합니다. 게다가 파일은 목적에 따라 매우 다르게 사용됩니다. 일부는 변경될 예정이고 일부는 삭제되고 다른 일부는 컴파일 프로세스 중에 생성됩니다.
게다가 회사들은 자신들의 독점 코드를 서로에게 넘겨주고 싶어하지 않는다는 사실도 덧붙입니다.
전체 SDLC에 대한 코드 보증
Scribe는 전체 SDLC를 지속적으로 보호하기 위해 출발합니다. 개발 및 구축 프로세스의 다양한 부분에서 수집된 증거를 통해 Scribe는 디지털 서명을 사용하여 위조할 수 없는 증명을 만듭니다.
일단 서명되면 나중에 각 증거를 확인하여 모든 프로세스가 계획대로 진행되었고 계획되지 않은 변경이 발생하지 않았는지 확인할 수 있습니다.
SSDF에 제시된 모범 사례에 따라 Scribe를 사용하면 상식적인 정책을 채택하여 개발 프로세스 전반에 걸쳐 자신감을 높일 수 있습니다. 서명된 커밋 요구, 개발자를 위한 2FA, 2인 코드 검토 등과 같은 정책은 각 소프트웨어가 올바른 보안 상태에 따라 제작되었다는 신뢰를 생성하는 데 도움이 됩니다.
코드 무결성 보고서와 모든 정책 및 증명의 요약과 함께 이 모든 증거를 단일 위치에 수집하면 개발 프로세스와 최종적으로 생성된 소프트웨어 아티팩트에 대한 가시성과 신뢰성이 향상되고 SSDF 지침과 일치합니다. 새로운 사이버 규정을 기반으로 합니다.
일부 구독자가 제품의 정책 요구 사항 준수 및 무결성 결과를 볼 수 있도록 허용하면 사용자가 개발 파이프라인과 최종 소프트웨어 제품에 대한 더 큰 가시성과 신뢰를 얻을 수 있습니다.
최종 결과는 코드 또는 파이프라인 변조를 감지할 뿐만 아니라 소프트웨어 설계 및 구축 중에 발생한 테스트 및 보안 절차와 소스 코드 및 오픈 소스 패키지의 무결성을 증명하는 기능입니다. 그것을 구축하는 데 사용됩니다.
SLSA 준수 평가 자동화
동적 파이프라인의 보안은 지속적으로 측정되어야 합니다. SLSA(소프트웨어 아티팩트에 대한 공급망 수준)는 네 가지 소프트웨어 공급망 보호 수준과 이에 도달하는 방법에 대한 지침을 정의합니다.
SLSA 준수 평가는 요구 사항을 충족하도록 자동화될 수 있습니다. 하지만 조직은 이를 획득하기 위해 어떻게 해야 할까요? 따라야 할 구체적인 모범 사례가 있습니까?
실제 시나리오에서 Sigstore 및 OPA와 같은 오픈 소스 도구를 사용하여 자동화 구현에 대한 모범 사례를 공유하는 이 비디오를 시청하세요. 개념적 모범 사례와 기술 모범 사례 모두 SLSA 규정 준수 평가 및 자동화에 대한 실제 세부 정보와 과제를 조명합니다.
스크라이브를 사용하기 전에 | 스크라이브를 사용한 후 | |
---|---|---|
Trust Hub – 정보 공유 |
|
|
보안 SDLC – 정책 및 규정 준수 |
|
|
무결성 및 변조 감지 |
|
|
시정 |
|
|
보안 태세 |
|
|
Scribe Security - 새로운 소프트웨어 공급망 보안 표준
소프트웨어 개발 프로세스의 모든 세부 사항과 이벤트는 물론 소프트웨어 구성 요소와 아티팩트의 무결성을 추적합니다.
소프트웨어 개발 프로세스의 모든 부분에서 변조가 발생하지 않았는지 확인
코드 빌드에 사용된 CI/CD 도구의 무결성 확인
개발 프로세스의 무결성 확인 - 보안 관련 단계가 조직의 정책에 따라 수행되었으며 우회되지 않았는지 확인
개발 수명 주기의 모든 단계에서 코드에 발생하는 모든 것에 대한 증거를 수집하고 서명함으로써 공격자가 파일, 도구 또는 CI/CD 파이프라인의 예상 동작을 변조하는 것을 더 어렵게 만듭니다.