소프트웨어 공급망 보안 솔루션은 시스템을 위협하는 위험을 감소시키고, 사이버 공격으로부터 시스템을 보호하는 데 필수적입니다.
최근 몇 년간 사이버 공격의 빈도와 강도가 증가하면서 기업과 개인에게 보안은 더 이상 선택이 아닌 필수 요소가 되었습니다. 이러한 공격은 조직 전체, 부서, IT 인프라, 소프트웨어 공급망 등 시스템의 모든 영역에서 발생할 수 있습니다.
오늘날의 복잡한 소프트웨어 공급망은 기존 라이브러리, CI/CD 시스템, 오픈 소스 저장소, 버전 관리 시스템, 배포 플랫폼, 모니터링 및 테스트 도구 등을 포함하는 광범위한 영역을 아우릅니다.
소프트웨어 솔루션 개발은 다양한 단계를 거치며, 코드는 여러 프로젝트에서 재사용됩니다. 이는 시스템의 취약점을 노리는 해커들에게 더 많은 공격 기회를 제공하게 됩니다.
해커가 취약점을 발견하면 이를 악용하여 시스템을 침해할 수 있으며, 그 결과로 데이터 유출, 악성코드 감염, 랜섬웨어 공격 등 심각한 피해가 발생할 수 있습니다.
이러한 이유로 조직, 개발자, 소프트웨어 공급업체는 소프트웨어 공급망 보안을 강화하는 데 더욱 주의를 기울여야 합니다.
이 글에서는 소프트웨어 공급망 공격이 무엇인지, 공급망을 보호해야 하는 이유, 그리고 위험을 완화하는 데 도움이 되는 최고의 보안 솔루션에 대해 자세히 알아보겠습니다.
그럼 시작해 볼까요?
소프트웨어 공급망 보안이란 무엇일까요?
소프트웨어 공급망은 소프트웨어 개발 수명 주기(SDLC) 전반에 걸쳐 애플리케이션 개발을 지원하는 모든 시스템, 프로세스, 도구, 그리고 자산을 포괄적으로 지칭합니다.
소프트웨어 공급망 보안은 이러한 시스템, 구성 요소, 그리고 관련된 모든 활동을 보호하는 것을 의미합니다. 여기에는 프로토콜, 인터페이스, 독점 코드, 제3자 코드, 외부 도구, 인프라 시스템 및 배포 시스템 등이 포함됩니다.
출처: 미란티스
공급망은 다른 시스템과 마찬가지로 공격에 취약하며, 공급망 공격은 해커가 공급망의 모든 시스템과 프로세스에서 취약점을 찾아 악용하는 형태로 발생합니다. 이는 데이터 유출과 같은 심각한 보안 위협으로 이어질 수 있습니다.
일반적인 소프트웨어 공급망 공격 유형은 다음과 같습니다.
- CI/CD 파이프라인 침해: 빌드 서버, 배포 도구, 테스트 프레임워크, 코드 저장소 등이 공격 대상이 될 수 있습니다.
- 오픈 소스 도구 내 악성 코드: 악의적인 코드가 코드 저장소에 삽입되는 경우가 있습니다.
- CI/CD 구성 오류: 배포 및 테스트 프로세스에서 발생할 수 있는 구성 오류 또한 공격의 빌미가 될 수 있습니다.
잘 알려진 소프트웨어 공급망 공격 사례:
- SolarWinds 해킹: 해커가 Orion 플랫폼의 취약점을 악용하여 전 세계 3만 개 이상의 조직을 공격했습니다.
- CodeCov 침해: 2021년 4월, 공격자가 코드 감사 도구인 CodeCov를 해킹하여 광범위한 사용자에게 피해를 입혔습니다.
- Mimecast 공격: 공격자가 인증에 사용되는 디지털 인증서 중 하나를 탈취했습니다.
소프트웨어 공급망 보안이 중요한 이유
위에 언급된 공격 사례에서 볼 수 있듯이, 코드의 단 하나의 취약점이 광범위한 침해로 이어져 개인과 조직 모두에게 심각한 영향을 미칠 수 있습니다.
개발팀이 소프트웨어를 배포할 때, 직접 작성한 코드뿐만 아니라 사용하는 타사 도구의 보안도 매우 중요합니다. 외부 자원을 맹목적으로 신뢰할 경우, 내부 자원의 취약점이 위협과 공격으로 이어질 수 있습니다.
따라서 소프트웨어 공급망은 전체 코드, 도구, 자원이 최적의 보안 상태를 유지하고, 변조되지 않으며, 최신 상태를 유지하는지, 취약점이나 악성 코드가 없는지 확인해야 합니다.
이를 위해서는 사내 코드, 오픈 소스 배포, 프로토콜, 인터페이스, 개발 도구, 아웃소싱 서비스, 소프트웨어 빌드와 관련된 다른 모든 항목을 포함하여 SDLC 전반에 걸쳐 각 소프트웨어 구성 요소를 철저히 검증해야 합니다.
또한 포괄적이고 안정적이며 효율적인 소프트웨어 공급망 보안 솔루션을 사용하여 잠재적 문제를 완화하고 모든 소프트웨어 구성 요소를 보호해야 합니다. 알려진 익스플로잇과 종속성에 대해 소프트웨어를 스캔하고, 네트워크 보호 메커니즘을 구현하여 이를 수행할 수 있습니다.
이러한 도구는 승인되지 않은 수정 및 무단 접근을 차단하여 위협과 공격을 예방하는 데 도움이 됩니다.
이제 공격을 완화하고 소프트웨어 공급망을 보호하는 데 도움이 되는 최고의 소프트웨어 공급망 보안 도구에 대해 알아보겠습니다.
Slim.ai
Slim.ai를 사용하면 새로운 코드를 작성하지 않고도 소프트웨어 공급망을 보호하면서 안전하고 빠르게 컨테이너를 구축할 수 있습니다.
Slim.ai는 프로덕션 단계로 배포되기 전에 컨테이너화된 애플리케이션 내 소프트웨어 시스템의 취약점을 자동으로 찾아 제거하는 데 도움을 줍니다. 이는 소프트웨어 생산 워크로드를 보호하는 데 필수적입니다.
Slim.ai는 컨테이너를 효과적으로 관리하는 동시에 강화하고 최적화합니다. 또한 패키지, 메타데이터, 레이어를 심층적으로 분석하여 컨테이너 콘텐츠에 대한 심층적인 정보를 제공합니다.
Slim.ai를 CI/CD 파이프라인에 원활하게 통합하고 자동화를 활성화하면 수동 작업 없이 보안 위험을 줄일 수 있어 시간과 노력을 절약할 수 있습니다.
모든 언어 또는 프레임워크에서 앱을 만드는 데 사용할 수 있는 Slim Starter Kit 템플릿을 제공합니다. 컨테이너 인텔리전스를 사용하면 이미지 구성, 패키지 정보, 취약점을 확인할 수 있으며, 보안 상태를 이해하고 안전한 이미지를 만드는 데 도움이 됩니다.
Docker Wasm
Wasm은 Docker에서 사용하는 Windows 또는 Linux 컨테이너를 대체하는 가볍고 빠른 새로운 기술입니다. Docker + Wasm을 사용하면 더욱 강력한 보안을 갖춘 최신 애플리케이션을 구축, 실행, 공유할 수 있습니다.
Docker를 사용하여 소프트웨어 공급망을 보호하면 다양한 이점을 얻을 수 있습니다. 작업 자동화와 반복적인 구성 작업 필요성을 제거하여 소프트웨어 개발을 더 예측 가능하고 효율적으로 만들 수 있습니다. 이를 통해 전체 소프트웨어 개발 수명 주기를 더 빠르고 쉽게 만들 수 있으며, 이식성도 향상됩니다.
Docker는 SDLC 전반에 걸쳐 즉시 사용할 수 있도록 설계된 보안 기능이 포함된 API, CLI 및 UI를 제공하여 프로세스를 보다 효율적으로 만드는 포괄적인 엔드투엔드 플랫폼을 제공합니다.
- Docker 이미지는 Mac 및 Windows에서 애플리케이션을 효율적으로 생성할 수 있는 뛰어난 기능을 제공합니다.
- Docker Compose를 사용하여 다중 컨테이너 소프트웨어를 구축합니다.
- AWS ECS, Google GKE, Azure ACI, Kubernetes와 같은 다양한 환경에서 일관되게 실행되는 이식 가능한 컨테이너 이미지로 소프트웨어를 패키징합니다.
- CicleCI, GitHub, VS Code 등 소프트웨어 개발 파이프라인 전반의 다양한 도구와 통합할 수 있습니다.
- RBAC(역할 기반 액세스 제어)를 사용하여 개발자를 위한 이미지 액세스를 사용자 정의하고 Docker Hub 감사 로그를 사용하여 활동 기록에 대한 심층적인 통찰력을 얻을 수 있습니다.
- 개발자 및 팀원과의 협업을 강화하고 이미지를 Docker Hub에 쉽게 게시하여 혁신을 촉진할 수 있습니다.
- 다양한 컨테이너 및 언어에 애플리케이션을 독립적으로 성공적으로 배포할 수 있습니다. 이는 라이브러리, 프레임워크, 언어 간의 충돌 가능성을 줄입니다.
- Docker Compose CLI를 활용하고 단순성을 활용하여 애플리케이션을 빠르게 구축할 수 있습니다. Azure ACI 또는 AWS ECS를 사용하여 클라우드에서 빠르게 시작하거나 로컬에서 실행할 수 있습니다.
CycloneDX
CycloneDX는 온라인 위험 및 공격으로부터 공급망을 보호하기 위해 고급 기능을 제공하는 최신 풀 스택 BOM 표준입니다.
CycloneDX는 다음을 지원합니다.
- HBOM(Hardware Bill of Materials): ICS, IoT 및 기타 연결 및 임베디드 장치에 대한 하드웨어 구성 요소를 관리합니다.
- SBOM(Software Bill of Materials): 소프트웨어 서비스, 구성 요소 및 종속성 목록을 관리합니다.
- OBOM(Operations Bill of Materials): 전체 스택 런타임 인벤토리 구성, 환경, 추가 종속성 등을 관리합니다.
- SaaSBOM(Software-as-a-Service): 클라우드 네이티브 애플리케이션을 지원하는 엔드포인트, 서비스, 분류, 데이터 흐름 목록을 관리합니다.
- VEX(Vulnerability Exploitability eXchange): 취약한 구성 요소가 제품에서 어떻게 악용될 수 있는지에 대한 정보를 제공합니다.
- VDR(Vulnerability Disclosure Reports): 서비스 및 구성 요소에 영향을 미치는 알려지지 않은 취약점을 알립니다.
- BOV: 취약한 정보 소스와 시스템 간에 취약한 데이터를 공유합니다.
OWASP Foundation은 CycloneDX를 지원하고 CycloneDX Core Working Group이 이를 관리합니다. 또한 전 세계의 정보 보안 커뮤니티로부터 지원을 받고 있습니다.
Aqua
Aqua는 소프트웨어의 전체 수명 주기 동안 공급망 보안을 제공합니다. 소프트웨어 공급망의 모든 단계를 보호하여 공격 표면을 최소화하고 코드 무결성을 유지할 수 있습니다.
Aqua는 이미지와 코드를 스캔하여 소프트웨어 수명 주기의 모든 단계에서 위험과 취약점을 발견하는 데 도움을 줍니다. 또한 노출된 비밀, 잘못된 IaC 구성 및 악성 코드를 찾아내어 문제가 프로덕션 단계로 넘어가는 것을 방지합니다.
소프트웨어 개발 및 배포 과정에서 공급망 전체의 프로세스와 시스템을 보호할 수 있습니다. Aqua는 DevOps 도구의 보안 상태를 모니터링하여 보안 제어가 제대로 구현되도록 도와줍니다.
주요 기능 및 이점:
- 범용 코드 스캔: Aqua는 전체 소스 코드를 몇 분 만에 스캔하여 취약점, 보안 허점, 오픈 소스 라이선스 문제 등을 감지할 수 있습니다. 주기적인 코드 스캔을 통해 코드 변경으로 인한 새로운 위험에 대한 경고를 받을 수 있습니다. Aqua Trivy Premium을 통해 코드 스캔을 받고 SDLC 전반에 걸쳐 일관된 결과를 얻을 수 있습니다.
- 워크플로우 내 알림: 코드를 스캔하고 어디에서 작업하든 알림을 받을 수 있습니다. 소프트웨어 릴리스 전에 풀 리퀘스트, 클라우드 저장소, CI 파이프라인에 대한 주석 형태로 SCM(소스 코드 관리) 시스템에서 직접 알림을 받을 수 있으며, IDE에서도 직접 알림을 받을 수 있습니다.
- 오픈 소스 종속성 모니터링: Aqua는 각 오픈 소스 패키지의 인기도, 위험, 유지 관리 가능성, 품질을 평가하고 등급을 매깁니다. 위험도가 높은 패키지가 도입되면 개발자에게 알립니다. 이를 통해 코드베이스에 새로운 코드를 추가하기 전에 충족해야 하는 조직 전체의 품질 수준을 설정하고 적용할 수 있습니다.
- 파이프라인 보안: CI 파이프라인 전체에 대한 완전한 가시성을 확보하고 프로덕션 환경으로 이어지는 수많은 소프트웨어 릴리스 트랙을 탐색합니다. GitLab CI, Bitbucket Pipeline, Jenkins, GitHub Actions, CircleCI 등 각 파이프라인에 대한 정적 파이프라인 분석을 쉽게 구현하고 각 단계를 이해할 수 있습니다.
- 차세대 SBOM: 기본 SBOM 생성에 제한되지 마십시오. 개발자가 코드를 커밋한 시점부터 최종 아티팩트가 생성될 때까지 전체 빌드 프로세스를 넘어 각 작업 및 단계를 기록합니다. 코드 서명은 또한 사용자가 코드 기록을 확인하고 생성된 코드가 개발 도구 체인에서 나오는 코드와 동일한지 확인하는 데 도움이 됩니다.
- CI/CD 상태 관리: Aqua를 사용하면 Jenkins, GitHub 등 DevOps 플랫폼에서 중요한 구성 오류를 찾아 해결하고 제로 트러스트 보안을 구현할 수 있습니다. SDLC 전체에서 권한을 감사하는 데 도움이 되도록 최소 권한 액세스 정책을 시행할 수 있습니다. 또한 업무 분리(SoD)를 구현하여 규정 준수를 보장하면서 보안 위험을 줄일 수 있습니다.
또한 디지털 서명된 SBOM을 생성하고 무결성 게이트를 적용하여 CI/CD 파이프라인에서 아티팩트를 확인함으로써 신뢰를 구축하고 유지할 수 있습니다. 이는 코드만 프로덕션 단계로 이동하고 다른 구성 요소는 포함되지 않도록 하는 데 도움이 됩니다.
ReversingLabs
DevSecOps 팀이 애플리케이션을 더욱 자신 있게 배포할 수 있도록 ReversingLabs의 고급 SSCS(소프트웨어 공급망 보안)를 사용하여 CI/CD 워크플로, 릴리스 패키지, 컨테이너를 보호하십시오.
ReversingLabs 도구를 사용하면 위협에 대한 광범위한 릴리스 패키지, 오픈 소스 라이브러리, 타사 소프트웨어, 컨테이너를 신속하게 분석할 수 있습니다. 또한 소프트웨어 종속성 계층 내에 숨겨진 고위험 위협을 감지, 해결, 우선 순위를 지정할 수 있습니다.
ReversingLabs는 사용자 정의 승인 정책을 제공하므로 소프트웨어를 프로덕션에 출시하기 전에 소프트웨어의 보안 품질을 자신 있게 확인할 수 있습니다. 이 도구는 소스 코드 제어부터 소프트웨어 구성 요소 종속성, CI/CD 프로세스, 릴리스 이미지 관리에 이르기까지 전체 SDLC의 보안을 관리합니다.
따라서 조직의 소프트웨어 개발 수명 주기의 모든 지점에서 CI/CD 워크플로 위험, 침해, 악성 오픈 소스 패키지, 비밀 노출, 기타 종류의 위협을 쉽게 탐지하고 수정할 수 있습니다.
또한 무단 동작 변경, 백도어, 맬웨어를 소프트웨어에 주입하여 발생할 수 있는 원치 않는 변조로부터 고객을 보호할 수 있습니다.
배포 파이프라인의 모든 단계에서 원활한 통합을 제공하며, 이러한 통합을 통해 고위험 위협을 더 빠르게 해결할 수 있습니다. ReversingLabs는 개발팀뿐만 아니라 보안운영센터(SOC) 팀에도 훌륭한 투자입니다.
Snyk
Snyk를 사용하여 소프트웨어 공급망 보안을 강화하고 컨테이너 이미지, 오픈 소스 라이브러리, 개발자 도구, 클라우드 인프라와 같은 중요한 소프트웨어 구성 요소를 보호하십시오.
Snyk는 종속성을 추적하고 안전한 설계를 보장하며 취약점을 수정하여 공급망 보안을 이해하고 관리하는 데 도움을 줍니다. 처음부터 보안을 고려하여 소프트웨어를 설계할 수 있습니다.
Snyk를 사용하면 다양한 생태계에서 100만 개 이상의 오픈 소스 패키지의 인기, 유지 관리, 보안을 추적할 수 있습니다.
사용된 구성 요소와 구성 요소 간의 상호 작용을 식별하기 위해 소프트웨어를 스캔하여 BOM을 생성할 수 있습니다. Snyk는 더 짧은 시간에 더 많은 보안 관련 문제를 해결하는 데 도움이 됩니다.
- Snyk Vulnerability Database와 Snyk Advisor는 중요한 문제에 대한 유용한 최신 정보와 이를 방지하는 방법을 제공하여 프로젝트가 시작되기 전부터 보안 위협 관리를 용이하게 만드는 두 가지 도구입니다.
- Snyk의 감사 서비스인 Snyk Container와 Snyk Open Source는 프로젝트를 분석하고 알려진 취약점, 오픈 소스 패키지, 수정 조언 목록이 포함된 SBOM을 생성합니다.
- Snyk는 다양한 도구, 워크플로, 파이프라인과 통합하여 소프트웨어 공급망 전반에서 보안을 활성화할 수 있습니다. 통합 대상에는 PHP, Java, JS, Python, AWS, GCP, RedHat, Jenkins, Docker, Kubernetes, GitHub, GitLab, Slack 등이 포함됩니다.
또한 Snyk는 업계를 선도하는 보안 인텔리전스 시스템의 지원을 받아 단일 플랫폼에서 오픈 소스 종속성, 사용자 정의 코드, 클라우드 인프라, 컨테이너를 보호할 수 있는 도구를 제공합니다.
결론
온라인 위험이 증가하면서 기업, 자산, 개인에 대한 위협이 증가하고 있습니다. 따라서 소프트웨어 개발자이거나 소프트웨어 개발을 담당하는 기업이라면 위에서 소개한 방법과 도구를 사용하여 소프트웨어 공급망 보안을 강화해야 합니다. 이러한 도구는 위협을 효과적으로 완화하고 전체 소프트웨어 공급망을 보호하는 데 도움이 됩니다.
DevSecOps 도구를 살펴보는 것도 좋은 방법입니다.