SBOM(Software Bill of Materials)은 SaaS가 사용하는 모든 직간접 의존성·라이선스·버전을 기계 판독 가능한 형식(CycloneDX·SPDX)으로 나열한 공급망 자재명세서다.
AI 코딩 도구가 만든 코드에서 가장 자주 누락되며, 누락 시 인증 우회·데이터 탈취·서비스 마비로 직결된다.
이 글은 자주 발생하는 실수 패턴, 표준 구현 코드, 30초 자가진단, 24시간 패치 순서를 정리했다.
한눈에 보는 핵심
Q. EU CRA가 한국 기업에도 적용되나요? A. EU 시장에 디지털 제품을 판매하는 모든 기업에 적용됩니다. 2027년 12월부터 SBOM 동봉 및 보안 사고 24시간 고지 의무가 강제됩니다. Q. CycloneDX와 SPDX 중 어떤 게 표준인가요? A. 둘 다 OASIS·Linux Foundation 인정 표준이며 CycloneDX가 보안 매핑(VEX)에 더 강하고 SPDX는 라이선스 분석에 강합니다. 둘 다 생성하는 것이 표준입니다. Q. 자동 생성 도구는 무엇이 있나요? A. Syft(Anchore), CycloneDX CLI, GitHub Dependency Graph가 대표적입니다. CI/CD에 통합해 빌드마다 자동 생성·서명·아카이브가 권장됩니다.자주 발생하는 실수 패턴
| # | 패턴 | 위험도 |
|---|---|---|
| 1 | SBOM 미생성 — 의존성 가시성 0 | 치명 |
| 2 | 간접 의존성(transitive) 미포함 — 상위 패키지만 나열 | 치명 |
| 3 | SBOM 서명 누락 — 위조·변조 위험 | 높음 |
| 4 | 취약점 매핑(VEX) 없음 — 영향 평가 불가 | 높음 |
| 5 | CI 빌드별 SBOM 미아카이브 — 사후 추적 불가 | 중간 |
표준 구현 코드
# .github/workflows/sbom.yml — CI 자동 생성·서명·업로드
name: SBOM Generation
on: [push, release]
jobs:
sbom:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# 1. CycloneDX 생성 (Python 예시)
- run: pip install cyclonedx-bom
- run: cyclonedx-py requirements -i requirements.txt -o sbom.cdx.json
# 2. SPDX 생성 (이중 표준)
- uses: anchore/sbom-action@v0
with:
format: spdx-json
output-file: sbom.spdx.json
# 3. 취약점 매핑 (Grype)
- uses: anchore/scan-action@v3
with:
sbom: sbom.spdx.json
fail-build: true
# 4. cosign 서명 — 위조 차단
- run: cosign sign-blob --key=cosign.key sbom.cdx.json
# 5. 릴리즈에 첨부 — 고객 다운로드 가능
- uses: softprops/action-gh-release@v1
with:
files: |
sbom.cdx.json
sbom.spdx.json
sbom.cdx.json.sig
핵심 4요소를 모두 충족해야 결함이 사라진다.
AI 도구는 동작 코드만 출력하므로 보안 분기는 별도로 강제해야 한다.
미들웨어/데코레이터로 모든 경로에 일괄 적용이 표준이다.
30초 자가진단
# 1. 자기 프로젝트 의존성 카운트
pip list 2>/dev/null | wc -l # 또는 npm ls --depth=0 | wc -l
# 2. SBOM 생성 시도
syft dir:. -o cyclonedx-json
# 3. SBOM 파일 존재 확인 (릴리즈 첨부 여부)
gh release view --json assets | grep -E "sbom|cyclonedx|spdx"
# 결과 0이면 EU CRA 대응 미흡
위 시그널이 발견되면 결함이다. EU Cyber Resilience Act 공식 참조.
24시간 패치 절차
| 순위 | 조치 |
|---|---|
| 1 | Syft/cyclonedx-cli 도구로 빌드 자동화 |
| 2 | 직간접(transitive) 의존성 포함 검증 |
| 3 | cosign sign-blob으로 SBOM 서명 |
| 4 | Grype/OSV-scanner로 취약점 자동 매핑 |
| 5 | 릴리즈 노트에 SBOM 다운로드 링크 + VEX 첨부 |
지금 해야 할 것
실무자: CodeScan 무료 스캔으로 30초 점검.
CISO·임원: 통합 보안 점검은 SENTRIX 30분 1:1 상담.
결함 발견 시 24시간 안에 패치 완료가 표준이다.