2026년 하루 평균 보고된 CVE가 전년 대비 131% 증가했습니다.

종속성

소프트웨어 구성 분석(SCA)이란?

소프트웨어 구성 분석은 소프트웨어에 포함된 오픈 소스 및 서드파티 구성 요소를 찾아 알려진 취약점, 라이선스 문제, 오래된 버전을 확인합니다. 출시하는 코드의 대부분은 의존하는 코드이므로, SCA는 코드의 대부분을 다룹니다. 다만 SCA는 식별해 낸 구성 요소만 분석할 수 있습니다.

업데이트

SCA의 작동 방식

  1. 구성 요소 식별. 도구는 지정된 대상을 읽습니다. 리포지토리의 매니페스트와 잠금 파일, 설치된 패키지, 또는 컨테이너 이미지나 바이너리의 내용입니다. 그 결과는 구성 요소와 버전의 인벤토리이며, 흔히 SBOM으로 내보냅니다.
  2. 알려진 위험과 매칭. 각 구성 요소를 GitHub Advisory Database, OSV, NVD 같은 취약점 데이터베이스에서 조회하고, 선언된 라이선스를 정책과 대조합니다.
  3. 우선순위 지정. 발견 사항은 심각도에 따라 순위가 매겨지며, 일부 도구는 도달 가능성 분석을 더해 코드가 취약한 함수를 실제로 호출할 수 있는지 확인합니다.
  4. 수정. 많은 도구가 Dependabot과 Renovate처럼 수정된 버전을 제안하거나 풀 리퀘스트를 엽니다. 취약한 전이적 종속성의 경우, 수정은 대개 그것을 끌어오는 패키지에서 이루어지며 이는 종속성 그래프로 확인할 수 있습니다.

SCA가 찾아내는 것

  • 사용 중인 버전의 알려진 취약점과 이를 설명하는 권고.
  • 독점 제품에 포함된 카피레프트 라이선스 같은 라이선스 위험.
  • 보안 수정을 받지 못할 오래되었거나 유지 관리되지 않는 패키지.
  • 권고 매칭에 그치지 않고 패키지의 동작까지 분석하는 도구에서는 악성 패키지.

SCA와 SAST 비교

SCA와 정적 애플리케이션 보안 테스트(SAST)는 흔히 함께 판매되지만, 서로 다른 코드를 살펴보고 서로 다른 질문에 답합니다.

SCA SAST
분석 대상 의존하는 오픈 소스 및 서드파티 구성 요소 팀이 작성하는 코드
찾아내는 것 알려진 취약점, 라이선스 문제, 오래된 패키지 인젝션이나 안전하지 않은 입력 처리 같은 코드 결함
읽는 대상 매니페스트, 잠금 파일, 설치된 패키지, 이미지 또는 바이너리 소스 코드
새 발견 사항이 생기는 계기 종속성 변경, 또는 이미 출시한 버전에 대한 새 권고 코드 변경
일반적인 출력 수정 버전이 표시된 취약한 구성 요소와 SBOM 결함이 있는 코드 위치와 수정 제안

둘 다 필요합니다. SAST 발견 사항이 없는 코드베이스도 취약한 종속성을 출시할 수 있고, 깨끗한 종속성 트리는 자체 코드에 대해 아무것도 말해 주지 않습니다. 전체 비교는 SAST와 SCA 비교를 참조하세요. 실행 방식에 중요한 차이가 하나 있습니다. SAST 발견 사항은 코드가 변경될 때 나타나지만, SCA 발견 사항은 새 권고가 게시된 날 몇 달 전에 출시한 릴리스에서도 나타날 수 있습니다.

SCA의 한계

모든 SCA 결과는 첫 단계인 구성 요소 식별에 달려 있습니다. 도구가 식별하지 못한 구성 요소는 매칭되거나, 우선순위가 지정되거나, 수정될 수 없으며, 누락으로 표시되지도 않습니다. 흔한 사각지대는 다음과 같습니다.

  • 파일에 적혀 있지 않은 것. 대부분의 SCA 도구는 매니페스트와 잠금 파일을 읽습니다. 누락되었거나 오래된 잠금 파일, CI 캐시에서 복원된 패키지, 빌드 도구, 다운로드와 설치 스크립트는 인벤토리에 들어가지 않습니다. 잠금 파일이 출시된 내용의 기록이 아닌 이유를 참조하세요.
  • 도구마다 결과가 다릅니다. 같은 커밋을 대상으로 한 두 스캐너가 서로 다른 구성 요소 목록을 반환합니다. 각자 무엇을 읽고 어떻게 이름 붙일지에 대한 규칙이 다르기 때문입니다. 오픈 소스 SBOM 생성기가 놓치는 것을 참조하세요.
  • 바이너리. 사전 빌드된 바이너리로 배포되는 소프트웨어는 매니페스트 리더가 볼 수 있는 정보를 거의 또는 전혀 선언하지 않습니다.
  • 알려진 취약점만. 매칭은 게시된 것만 찾습니다. 새로운 악성 패키지나 공개되지 않은 결함에는 아직 권고가 없습니다.
  • 스냅샷. 풀 리퀘스트에서의 스캔은 그 순간을 설명합니다. 이미 프로덕션에 있는 버전에 대한 새 권고를 잡으려면 출시된 내용을 계속 확인하는 무언가가 필요합니다.

이는 특정 제품의 결함이 아닙니다. 상용이든 오픈 소스든 스캔이 작동하는 방식입니다. CRACI는 Snyk와 Aikido가 보고하지 않은 취약한 패키지를 찾아냈습니다. 해당 구성 요소가 그 도구들이 스캔한 대상에 애초에 없었기 때문입니다.

빌드를 기록하고, SCA는 유지하세요

CRACI는 빌드 쪽에서 식별 격차를 메웁니다. CRACI는 각 작업이 가져오는 모든 패키지를 트리의 모든 깊이에서, CI 캐시에서 복원된 패키지까지 포함해 기록하는 GitHub Actions 러너이며, 그 기록을 자체 완전성을 명시하는 SBOM으로 남깁니다. 새로운 취약점이 게시될 때마다 출시된 내용의 SBOM을 계속 재평가하며, 빌드 기록을 통해 과거 어떤 빌드에 취약한 패키지가 포함되었는지 확인할 수 있습니다.

CRACI는 설계상 SAST나 도달 가능성 분석을 수행하지 않습니다. 팀은 풀 리퀘스트와 자체 코드를 다루는 SCA 또는 SAST 도구와 함께 CRACI를 실행합니다. SCA 도구 비교, SCA 도구 옆에서 CRACI의 역할을 참조하거나, 데모를 예약해 기록된 SBOM을 현재 스캔 결과와 비교해 보세요.

소프트웨어 구성 분석: 자주 묻는 질문

사이버 보안에서 SCA란 무엇입니까?

소프트웨어 구성 분석(SCA)은 소프트웨어에 포함된 오픈 소스 및 서드파티 구성 요소를 찾아 알려진 취약점, 라이선스 문제, 오래된 버전을 확인하는 활동입니다. 직접 작성하는 코드가 아니라 의존하는 코드를 다룹니다.

SCA와 SAST의 차이는 무엇입니까?

SAST는 팀이 작성하는 코드에서 인젝션 버그 같은 결함을 분석합니다. SCA는 의존하는 구성 요소에서 알려진 취약점과 라이선스 문제를 분석합니다. 서로 다른 질문에 답하므로 대부분의 보안 프로그램은 둘 다 실행합니다.

SCA 스캔이란 무엇을 의미합니까?

SCA 스캔은 프로젝트의 매니페스트, 잠금 파일, 설치된 패키지 또는 컨테이너 이미지를 읽어 어떤 구성 요소가 들어 있는지 파악하고, 이를 취약점 및 라이선스 데이터와 매칭합니다. 그 결과는 발견 사항 목록이며, 흔히 식별한 구성 요소의 SBOM이 함께 제공됩니다.

SBOM과 SCA는 같은 것입니까?

아닙니다. SBOM은 인벤토리, 즉 릴리스에 포함된 구성 요소의 목록입니다. SCA는 분석, 즉 구성 요소를 식별하고 위험을 확인하는 활동입니다. 많은 SCA 도구가 그 과정에서 SBOM을 생성하며, SBOM은 출시 후 취약점 모니터링에 활용될 수 있습니다.

SCA의 한계는 무엇입니까?

SCA는 식별할 수 있는 구성 요소만 분석하며, 대개 매니페스트와 잠금 파일에서 식별합니다. CI 캐시에서 복원된 패키지, 빌드 도구, 다운로드, 패키지 메타데이터가 없는 바이너리는 누락될 수 있습니다. 알려지지 않은 취약점이 아닌 알려진 취약점을 찾으며, 도구가 출시된 내용을 계속 다시 확인하지 않는 한 스캔은 스냅샷에 불과합니다.

가장 좋은 SCA 도구는 무엇입니까?

기본 기능 외에 무엇이 필요한지에 따라 다릅니다. 도달 가능성 분석, 악성 패키지 탐지, 라이선스 정책, 개발자 워크플로 등입니다. 각 도구가 다루는 범위와 한계는 13개 SCA 도구 비교를 참조하세요.

SCA 스캔이 보지 못한 것을 확인하세요

CRACI에서 GitHub Actions 워크플로 하나를 실행하고, 기록된 SBOM을 SCA 도구가 보고한 구성 요소와 비교해 보세요.

데모 예약