sitelink1 | https://github.com/anchore/syft |
---|---|
sitelink2 | https://owasp.org/www-project-dependency-check/ |
sitelink3 | https://anchore.com/ |
sitelink4 | |
extra_vars5 | |
extra_vars6 |
* Syft 는 테스트 해본 결과 프로젝트 내의 환경 메타 파일의 내용과 모든 바이너리 파일을 스캔하는 것으로 보인다. (program source file 내용을 scan 하지는 않음)
Syft와 OWASP Dependency-Check는 SBOM(Software Bill of Materials) 생성 및 활용에 있어 서로 다른 역할과 강점을 가지고 있으며, 상호 보완적인 관계를 맺고 있습니다.
Syft의 역할:
- SBOM 생성 전문 도구: Syft는 소프트웨어 빌드 아티팩트(예: 컨테이너 이미지, 파일 시스템, 아카이브)를 스캔하여 포함된 모든 구성 요소와 그 종속성을 식별하고 SBOM을 생성하는 데 특화된 도구입니다.
- 다양한 포맷 지원: CycloneDX, SPDX, 그리고 Syft 자체의 JSON 포맷 등 여러 표준 SBOM 포맷을 지원하여 다양한 툴체인 및 규정 준수 요구 사항과의 호환성을 제공합니다.
- 광범위한 언어 및 생태계 지원: 파이썬, 자바, Go, Ruby 등 다양한 프로그래밍 언어와 그 패키지 관리자를 분석하여 종속성을 추출합니다.
- 메타데이터 풍부: 각 패키지의 출처, CPE(Common Platform Enumeration) 식별, 라이선스 정보 등 풍부한 메타데이터를 SBOM에 포함합니다.
- CI/CD 파이프라인 통합 용이: 빌드 프로세스의 일부로 SBOM을 자동으로 생성하고 관리하는 데 매우 효과적입니다.
OWASP Dependency-Check의 역할:
- 취약점 분석 전문 도구: Dependency-Check는 애플리케이션 종속성에서 알려진 취약점을 식별하는 데 중점을 둔 오픈 소스 SCA(Software Composition Analysis) 도구입니다.
- 취약점 데이터베이스 활용: NVD(National Vulnerability Database), Sonatype OSS Index, GitHub Advisories 등 다양한 취약점 데이터베이스와 연동하여 종속성의 취약점 여부를 확인합니다.
- 다양한 구현 방식: 커맨드라인 인터페이스, 빌드 플러그인(Maven, Ant 등), Jenkins 플러그인 등 다양한 형태로 제공되어 기존 개발 워크플로우에 쉽게 통합할 수 있습니다.
- 정확한 매칭: CPE 등을 활용한 정밀 매칭 및 퍼지 매칭을 통해 취약점을 식별합니다.
Syft와 Dependency-Check의 관계 및 상호 보완성:
Syft와 Dependency-Check는 각각 SBOM 생성과 취약점 분석이라는 핵심적인 기능을 수행하며, 서로의 강점을 활용하여 소프트웨어 공급망 보안을 강화할 수 있습니다.
SBOM 생성 (Syft) -> 취약점 분석 (Dependency-Check 또는 다른 SCA 툴):
- Syft로 정확한 SBOM 생성: Syft는 소프트웨어 구성 요소의 정확하고 포괄적인 목록을 포함하는 SBOM을 생성하는 데 탁월합니다. 이는 소프트웨어의 "재료 목록"을 만드는 것과 같습니다.
- SBOM을 활용한 취약점 분석: 이렇게 Syft가 생성한 SBOM(특히 CycloneDX 또는 SPDX 포맷)은 Dependency-Check 또는 Anchore의 Grype, Trivy, Dependency-Track과 같은 다른 취약점 스캐너에 입력으로 사용될 수 있습니다. SBOM에 포함된 구성 요소 정보를 기반으로 해당 스캐너들은 알려진 취약점을 효율적으로 식별하고 보고합니다.
- 이점: Syft는 SBOM 생성에 특화되어 있고, Dependency-Check는 취약점 분석에 특화되어 있으므로, 각 도구의 최적화된 기능을 활용하여 정확한 SBOM을 얻고 그 SBOM을 통해 심층적인 취약점 분석을 수행할 수 있습니다. 이는 "shift-left" 보안 접근 방식을 가능하게 하여 개발 초기 단계에서부터 취약점을 발견하고 해결할 수 있도록 돕습니다.
독립적인 사용:
- 물론 두 도구는 독립적으로 사용될 수도 있습니다. Dependency-Check는 자체적으로 파일 시스템을 스캔하여 종속성을 추출하고 취약점을 분석할 수 있습니다. 하지만 Syft가 생성한 잘 구조화된 SBOM을 사용하면 Dependency-Check가 더 효율적으로 구성 요소를 식별하고 분석할 수 있는 기반을 제공할 수 있습니다.
요약하자면:
- Syft: 소프트웨어의 모든 구성 요소와 종속성을 빠르고 정확하게 식별하고, 표준 SBOM 형식으로 내보내는 데 강점이 있습니다. 이는 소프트웨어의 "재료 목록"을 만드는 도구입니다.
- OWASP Dependency-Check: SBOM 또는 직접 스캔을 통해 식별된 구성 요소에서 알려진 취약점을 찾아내고 보고하는 데 강점이 있습니다. 이는 "재료 목록"에 있는 것들이 어떤 보안 문제가 있는지 확인하는 도구입니다.
이 두 도구는 각자의 전문성을 바탕으로 상호 보완적인 관계를 가지며, 함께 사용될 때 소프트웨어 공급망 보안의 가시성과 제어를 크게 향상시킬 수 있습니다.
- Syft : binary와 meta file scan, dependency check (SBOM 생성)
- https://github.com/anchore/syft
- file type : binary, java-archive, swift 등등 github의 Supported Ecosystems 항목 참고
- Defendency-check : 취약점(vulnerabilities) 분석 전문 도구
- Trivy : 보안 취약점 분석
- https://trivy.dev/v0.63/docs/target/filesystem/
- 프로젝트의 Vulnerabilities(취약점), Misconfigurations(설정 오류), Secrets(비밀 정보), Licenses(라이선스) 스캔