공급망 보안 테스트
필수 조치 (읽은 후 즉시 실행)
NOW:../field-journal/precedent-pentest.md읽기 — 이 스킬의 작업이 승인된 정기 작업인지 확인NOW: 현재 작업이 이 스킬의 적용 범위에 해당하는지 확인NEXT:../tool-index.md읽기, 도구 가용성 및 실제 경로 확인NEXT: 도구가 없으면 bootstrap 호출, 경로 추측 금지ACT: "워크플로" 첫 번째 단계로 진입하여 실행, 확인 상태에서 멈추지 않음
SBOM / SCA / CI/CD 파이프라인 / 종속성 출처 규제 기반: 미국 행정명령 SBOM, 중국 국가 표준, EU CRA
적용 시나리오
- 소프트웨어 공급망 보안 평가
- 오픈소스 종속성 취약점 스캔 및 검증
- CI/CD 파이프라인 보안 감사
- 컨테이너 이미지 보안 분석
- 타사 구성 요소 규정 준수 검토
- 빌드 산출물 출처 및 무결성 검증
6계층 공급망 거버넌스 프레임워크
계층 1: 소스코드 신뢰 평가 → 업스트림 저장소/유지관리자/릴리스 히스토리 검토
계층 2: 빌드 파이프라인 통합 → CI/CD 보안 게이트, 서명 검증
계층 3: 아티팩트 배포 무결성 → 서명, 체크섬, SBOM 첨부
계층 4: 런타임 보호 → 컨테이너 스캔, 접근 제어
계층 5: 지속적 모니터링 → CVE 실시간 추적, 취약점 도달 가능성 분석
계층 6: 사고 대응 → 공급망 공격 긴급 대응, 롤백 전략
워크플로
1. SBOM 생성 및 감사
SBOM 생성:
□ CycloneDX 형식: cdxgen → bom.json
□ SPDX 형식: sbom-tool generate
□ Syft: syft <이미지|디렉터리> -o spdx-json
감사 포인트:
□ 알려지지 않거나 승인되지 않은 종속성 존재 여부
□ 폐기되었거나 유지보수가 중단된 패키지 존재 여부
□ 라이선스 충돌 감지
□ 직접 종속성 vs 전이 종속성 목록
□ 각 구성 요소의 릴리스 타임라인 및 유지관리자 상태
2. 소프트웨어 구성 분석 (SCA)
# OSV-Scanner (무료, Google 유지관리)
osv-scanner scan -r . --format json
# OWASP Dependency-Track (엔터프라이즈급 지속적 모니터링)
docker run -p 8080:8080 dependencytrack/apiserver
# → SBOM 업로드 → NVD/OSV/GitHub Advisory 자동 매칭
# Snyk (상용)
snyk test --all-projects
snyk monitor # 지속적 모니터링
# Trivy (컨테이너 + 종속성 + IaC)
trivy fs . # 파일 시스템 스캔
trivy image nginx # 컨테이너 이미지
trivy config . # IaC 설정
3. 취약점 도달 가능성 검증
SCA 경고 ≠ 실제 위험! 대부분의 SCA 도구는 경고의 약 15%만 실제 도달 가능합니다.
검증 단계:
1. Dependency-Track 또는 Trivy로 CVE 목록 획득
2. CVSS ≥ 7.0인 취약점 필터링
3. PoC가 있는 CVE에 대해 도달 가능성 분석
- Code Property Graph 슬라이싱: 사용자 입력에서 취약 함수까지 경로 추적
- DEPTEX 방법: EPD (실행 경로 지배) + LLM 의미론적 검증
4. 격리된 환경에서 PoC 검증
5. 도달 가능한 취약점을 실제 영향 기준으로 정렬하여 수정 우선순위 지정
도구 참고:
- CodeQL: GitHub 코드 쿼리 → 데이터 흐름 분석
- Snyk Code: 도달 가능성 표시
- DEPTEX: LLM 기반 컨텍스트 인식 위험 평가
4. CI/CD 파이프라인 보안
보안 검사 포인트:
□ 코드 커밋 → pre-commit hook: gitleaks (시크릿 스캔)
□ PR 단계 → SCA 스캔 (Trivy/OSV-Scanner)
□ 빌드 단계 → 아티팩트 서명 (cosign)
□ 푸시 단계 → SBOM 첨부 (syft + attest)
□ 배포 단계 → 접근 제어 (OPA/Kyverno + 이미지 스캔)
□ 런타임 → 지속적 취약점 모니터링 (Dependency-Track)
파이프라인 자체 보안:
□ Pipeline as Code 감사 (GitHub Actions / GitLab CI 설정 주입)
□ 러너 격리 (악성 빌드가 컨테이너를 벗어나는 것 방지)
□ 시크릿 관리 (Actions Secrets / Vault, 하드코딩 금지)
□ 서드파티 Action 검토 (태그가 아닌 commit SHA 고정)
5. 컨테이너 이미지 보안
# Dockerfile 감사
hadolint Dockerfile
# 이미지 스캔 (다중 계층: OS + 애플리케이션 종속성 + 설정)
trivy image --severity HIGH,CRITICAL nginx:latest
# 최소 베이스 이미지
# 우선 순위: distroless → alpine → slim → latest 사용 금지
docker scout quickview nginx:latest
# 이미지 서명
cosign sign --key cosign.key myimage:tag
cosign verify --key cosign.pub myimage:tag
6. 서드파티 종속성 검토
신규 종속성 도입 체크리스트:
□ 유지관리 상태: 최근 6개월 이내 커밋? 유지관리자 활동성?
□ 보안 이력: 과거에 악성 코드가 삽입된 적이 있는가?
□ 종속성 트리: 도입 후 추가되는 전이 종속성 수는?
□ 라이선스: 프로젝트 라이선스와 호환 가능?
□ 대안: 더 안전한 대안이 있는가 (Snyk Advisor / Socket.dev 점수)?
위험 평가 매트릭스:
높은 유지관리 × 낮은 종속성 수 × 호환 라이선스 → 낮은 위험
낮은 유지관리 × 높은 종속성 수 × 라이선스 충돌 → 높은 위험
도구 체인
| 도구 | 용도 | 획득 방법 |
|---|---|---|
| OWASP Dependency-Track | 엔터프라이즈급 지속적 SCA | docker pull dependencytrack/apiserver |
| OSV-Scanner | 무료 SCA (OSV.dev 생태계) | go install github.com/google/osv-scanner |
| Trivy | 이미지 + 종속성 + IaC 스캔 | apt install trivy |
| Syft | SBOM 생성 | curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh |
| cdxgen | CycloneDX SBOM 생성 | npm install -g @cyclonedx/cdxgen |
| Cosign | 컨테이너 서명 | go install github.com/sigstore/cosign/v2/cmd/cosign |
| Gitleaks | 시크릿/자격 증명 스캔 | go install github.com/gitleaks/gitleaks/v8 |
| Snyk | 상용 SCA + 도달 가능성 | npm install -g snyk |
| CodeQL | 코드 쿼리 + 데이터 흐름 | GitHub Actions 내장 |
참고
references/sbom-sca-methodology.md— SBOM + SCA 방법론references/cicd-pipeline-security.md— CI/CD 파이프라인 보안 감사
작업 완료 자가 점검 (완료를 주장하기 전에 MUST 통과)
- 워크플로의 각 단계를 실행했는가 (단순히 읽기만 하지 않았는가)?
-
tool-index를 기반으로 실제 도구 경로를 사용했는가? - 재현 가능한 증거(명령어/스크립트/스크린샷/보고서)를 생성했는가?
- RULES에서 요구하는 체크리스트 항목을 완료하고 기록했는가?