애플리케이션 보안

Supply Chain 보안

meellon 2026. 7. 5. 05:50

학습 목표

소프트웨어 공급망 위협(의존성·빌드·레지스트리·CI)을 설명할 수 있다.

SBOM목적·형식(CycloneDX·SPDX)·생성·활용설명할 수 있다.

SLSA 레벨빌드 출처(provenance무결성 개념설명할 수 있다.

의존성·컨테이너 스캔16편 CI 게이트통합하는 패턴설명할 수 있다.

아티팩트 pin·서명(digest·cosign) 개요설명할 수 있다.

문제 상황

  • log4j CVEtransitive 의존성 어디 쓰는지 모름·패치 수개월
  • npm 패키지 탈취maintainer 계정 해킹·악성 버전 배포
  • GitHub Action @main공급망 공격 빌드 파이프라인 침해
  • 베이스 이미지 latest프로덕션 없는 OS CVE 누적
  • 12편 vulnerable components스캔 있지만 SBOM·SLA 없음감사 불가
  • SolarWinds 유형빌드 시스템 침해신뢰 배포 경로 자체 오염

Part 5 — 17편 Zero Trust런타임 신뢰재정의했다면, 본편은 빌드·배포 아티팩트 계보무결성을 **다룬다.

공급망 공격직접 침투 없이 합법 업데이트 경로유입된다. 방어인벤토리·검증·최소 신뢰 빌드다.

1. 공급망 공격 표면

구간 위협 통제
소스 악성 커밋·typosquat code review·branch protection
의존성 CVE·탈취 패키지 lockfile·SBOM·dep scan
CI/CD compromised action·secret pin digest·OIDC·least privilege
아티팩트 이미지 변조 sign·provenance·digest pin
배포 레지스트리 침해 private registry·admission policy
  • OWASP Top 10 A06 — 12편에서 개요; 본편은 운영 체계
  • Platform CI/CD빌드 파이프라인공급망 일부

2. SBOM

SBOM (Software Bill of Materials) — 애플리케이션·이미지포함컴포넌트 목록버전·라이선스·해시.

형식 특징
CycloneDX OWASP·보안 중심·CVE 연동 풍부
SPDX Linux Foundation·라이선스 표준
// code/sbom-component.example.json (CycloneDX 발췌)
{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "components": [
    {
      "type": "library",
      "name": "log4j-core",
      "version": "2.14.1",
      "purl": "pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1"
    }
  ]
}
활용  
CVE 매칭 Grype·Trivy·Dependency-Track
라이선스 감사 법무·오픈소스 정책
인시던트 log4j 유형영향 범위 즉시 산출
규제 미국 EO 14028·EU CRA — SBOM 요구 추세
  • 생성syft, cyclonedx-npm, trivy sbom; CI에서 아티팩트함께 저장
  • 저장 — OCI artifact·Dependency-Track·artifact repository
  • diff릴리스 마다 SBOM 비교신규 컴포넌트 탐지

3. SLSA와 빌드 출처

SLSA (Supply-chain Levels for Software Artifacts) — 빌드 무결성·출처 검증 성숙도 프레임워크.

레벨 요구 요약
L1 provenance 존재누가 빌드했는지 기록
L2 hosted 빌드·서명 provenance
L3 hardened 빌드· 변조 소스·감사 가능
provenance 예시 필드:
  builder.id, buildType, source.repo, source.digest,
  materials[].uri, materials[].digest
  • 목표빌드 결과선언소스·의존성에서 왔음 증명
  • Sigstore cosign + GitHub attestations실무 L2 근접
  • L3Hermetic build· 검토대부분 조직로드맵

4. 의존성 스캔

도구 대상
pip-audit / npm audit lockfile 기반
OSV / Dependabot CVE DB 연동
Renovate 자동 PR 업데이트
Grype / Trivy SBOM·파일시스템
# code/ci-dependency-scan.example.yml (발췌)
- name: pip audit
  run: pip-audit -r requirements.lock --strict --desc on
- name: generate SBOM
  run: syft packages dir:. -o cyclonedx-json > sbom.json
- name: scan SBOM
  run: grype sbom:sbom.json --fail-on critical
정책  
lockfile 필수 requirements.txt 금지 (prod)
critical merge block (16편)
high SLA 7일 패치
예외 ticket·만료·완화영구 금지
  • transitive직접 dep 고쳐도 하위 CVE 잔존 가능 → SBOM 전체 스캔

5. 컨테이너·베이스 이미지

위험 통제
FROM ubuntu:latest digest pin·minimal 베이스 (distroless·alpine)
root 실행 non-root USER·12편 misconfig
OS 패키지 CVE Trivy image scan CI
레이어 비밀 BuildKit secret (13편)
# code/ci-container-scan.example.yml (발췌)
- name: Build image
  run: docker build -t app:${{ github.sha }} .
- name: Trivy scan
  uses: aquasecurity/trivy-action@0.28.0
  with:
    image-ref: app:${{ github.sha }}
    severity: CRITICAL,HIGH
    exit-code: 1
# code/Dockerfile.non-root.example (발췌)
FROM gcr.io/distroless/nodejs20-debian12@sha256:abc123...
WORKDIR /app
COPY --chown=nonroot:nonroot dist/ ./
USER nonroot:nonroot
  • admissionKyverno·OPA서명 없는·critical CVE 이미지 거부 (Platform 연계)

6. CI/CD·아티팩트 pin·서명

통제
Action pin actions/checkout@v4digest 또는 버전 고정
의존성 lockfile + audit + SBOM
이미지 scan + digest deploy
서명 cosign sign·GitHub artifact attestation
provenance SLSA generator·in-toto
# code/action-pin-digest.example.yml (발췌)
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
  • 16편 게이트SBOM 생성·저장 단계 추가
  • fork PRsecret 제한; supply chain 스캔fork에서도 실행 권장

7. 인시던트 대응

단계 조치
1 탐지 CVE 공지·Dependabot·NVD
2 영향 SBOM 쿼리어떤 서비스·이미지
3 패치 버전 ·베이스 재빌드
4 검증 재스캔·staging smoke
5 감사 15편 audit누가 예외 승인했는지
  • log4j 교훈인벤토리 없으면 대응 시간 = 수동 grep 전체 repo

8. 체크리스트

항목 확인
SBOM per release, CycloneDX or SPDX stored
Dep scan lockfile, critical blocks merge
Image scan Trivy or Grype in CI
Base image digest pin, minimal, non-root
CI actions version or digest pin
Provenance SLSA L1+ attestation where possible
SLA patch timeline for high/critical
Exception ticket + expiry, no permanent ignore
안티패턴  
npm audit warn critical block 없음
SBOM 수동 1회 릴리스 마다 자동
latest 태그 배포 digest
@main action 공급망 침해 표적

9. 정리

  • 공급망소스·dep·CI·이미지·배포 구간 각각 통제
  • SBOM인벤토리·CVE 대응·규제 기반
  • SLSA빌드 출처·무결성 성숙도 로드맵
  • 스캔 + pin + 서명16편 게이트 확장
  • Cloud IAM·워크로드 신원다음 에서 클라우드 권한 계층 정리

다음에 다룰 것

  • Cloud IAM
  • IAM policy·role, workload identity, least privilege

해당 내용은 OWASP SCVS, SLSA Framework, NTIA SBOM, CycloneDX Specification 의 내용을 기반으로 합니다.

'애플리케이션 보안' 카테고리의 다른 글

Security Series를 마치며  (0) 2026.07.07
Cloud IAM  (0) 2026.07.06
Zero Trust  (1) 2026.07.04
보안 체크리스트  (0) 2026.07.03
로깅과 감사  (0) 2026.07.02