--- id: software_composition_analysis title: 소프트웨어 구성 분석 (Software Composition Analysis, SCA) category: DevOps_and_Security status: stable confidence_score: 0.95 created_at: 2026-04-18 updated_at: 2026-05-08 tags: - sca - supply_chain_security - open_source - dependency_management - devsecops raw_sources: - Programming & Language/SCA (소프트웨어 구성 분석).md - Programming & Language/소프트웨어 구성 분석(SCA).md - Security & Reliability/Software Composition Analysis (SCA).md --- # 소프트웨어 구성 분석 (Software Composition Analysis, SCA) ## 📌 Brief Summary SCA(Software Composition Analysis)는 애플리케이션에 포함된 제3자(Third-party) 코드 및 오픈소스 라이브러리의 의존성(Dependencies)을 분석하여 보안 취약점과 라이선스 리스크를 식별하는 테스팅 기법입니다 [1, 2]. 현대 소프트웨어 개발에서 오픈소스 비중이 급증함에 따라 소프트웨어 공급망 보안(Supply Chain Security) 관리의 핵심 도구로 자리 잡았습니다 [1]. 자체 코드를 검사하는 SAST와 상호 보완적으로 활용됩니다 [3]. ## 📖 Core Content ### 1. 분석 대상 및 목적 * **의존성 분석**: 개발자가 직접 작성한 커스텀 코드 대신, 외부에서 가져온 오픈소스 패키지의 취약점(CVE 등)을 식별합니다 [1, 2]. * **라이선스 컴플라이언스**: 구성 요소의 라이선스 세부 정보를 파악하여 법적 리스크를 관리합니다 [1]. * **가시성 확보**: 직접 선언된 의존성뿐만 아니라 그 이면에 연결된 전이적 의존성(Transitive Dependencies)까지 추적하여 전체 공급망 지도를 구축합니다 [1]. ### 2. 도달 가능성 분석 (Reachability Analysis) 최신 SCA 도구들은 단순히 취약한 패키지의 존재 유무를 확인하는 것을 넘어, 해당 취약 함수가 실제 애플리케이션의 실행 경로에서 호출되는지 분석하는 '도달 가능성 기반 SCA'로 진화하고 있습니다 [4, 5]. 이를 통해 허위 양성(False Positives)을 줄이고 보안 패치의 우선순위를 효과적으로 지정할 수 있습니다 [4, 6]. ### 3. 보안 도구 간의 시너지 (SAST + SCA) * **SAST**: 자체 작성 코드의 논리적 결함 및 보안 약점 탐지. * **SCA**: 외부 라이브러리의 알려진 취약점 및 라이선스 위반 탐지. * **결론**: 전체 애플리케이션 보안 범위를 포괄하기 위해 두 도구를 파이프라인에 통합하여 사용하는 것이 모범 사례입니다 [1-3]. ## ⚖️ Trade-offs & Caveats * **알림 피로 (Alert Fatigue)**: 수많은 오픈소스 취약점 중 실제 실행되지 않는 코드에 대한 경고가 많아지면 개발자가 중요한 보안 위협을 간과할 수 있습니다. * **버전 업데이트의 역설**: 보안 패치를 위해 버전을 올리면 의존성 충돌이나 예기치 않은 버그가 발생할 수 있으므로 철저한 테스트가 병행되어야 합니다. ## 🔗 Knowledge Connections - **Related Topics**: [[SAST|정적 보안 테스트]], [[DAST|동적 보안 테스트]], [[Supply Chain Security|공급망 보안]], 도달 가능성 분석 - **Projects/Contexts**: DevSecOps 파이프라인 통합, Snyk/Checkmarx/Endor Labs 활용 - **Contradictions/Notes**: SCA와 SAST는 대체 관계가 아니라 상호 보완 관계입니다 [1, 2]. --- *Last updated: 2026-05-08*