본문으로 건너뛰기

보안 분석

소프트웨어 보안, 어디서부터 시작해야 할지 막막하신가요? KIWI의 DevSecOps 보안 분석 기능을 활용하면 소스 코드부터 실행 중인 애플리케이션까지 전 단계에 걸쳐 보안 취약점을 자동으로 탐지할 수 있습니다.

보안 분석이 왜 중요한가요?

보안 취약점은 개발 후반부에 발견될수록 수정 비용이 기하급수적으로 증가합니다. 코드 작성 시점부터 배포 후까지 지속적으로 보안을 점검하면 비용을 절감하고 안전한 소프트웨어를 제공할 수 있습니다.

DevSecOps 보안 분석 개요

KIWI는 소프트웨어 개발 생명주기(SDLC)의 각 단계에 맞는 4가지 유형의 보안 분석을 제공합니다.

flowchart LR
A[Source] --> B[Build]
B --> C[Deploy]
C --> D[Operate]

A1[SAST] -.-> A
B1[SCA] -.-> B
B2[SBOM] -.-> B
D1[DAST] -.-> D

style A1 fill:#E3F2FD
style B1 fill:#E8F5E9
style B2 fill:#FFF3E0
style D1 fill:#FCE4EC

보안 용어 쉽게 이해하기

처음 보는 용어들이 많으시죠? 걱정 마세요. 하나씩 설명해 드릴게요.

  • SAST (Static Application Security Testing): 소스 코드를 실행하지 않고 코드 자체를 분석하여 보안 취약점을 찾습니다. 마치 문서 교정처럼 코드의 잠재적 문제를 미리 발견하는 방식입니다.

  • SCA (Software Composition Analysis): 프로젝트에서 사용하는 외부 라이브러리와 패키지에 알려진 보안 취약점이 있는지 확인합니다. npm, pip 등으로 설치한 패키지들의 보안 상태를 점검한다고 생각하시면 됩니다.

  • SBOM (Software Bill of Materials): 소프트웨어에 포함된 모든 구성요소의 목록입니다. 제품의 "재료 목록"이라고 생각하시면 이해하기 쉬워요. 어떤 라이브러리가 어떤 버전으로 포함되어 있는지 한눈에 파악할 수 있습니다.

  • DAST (Dynamic Application Security Testing): 실제로 실행 중인 애플리케이션에 HTTP 요청을 보내 취약점을 찾습니다. 해커의 관점에서 외부로부터 공격을 시뮬레이션하는 방식입니다.

  • CVE (Common Vulnerabilities and Exposures): 공개적으로 알려진 보안 취약점에 부여되는 고유 식별자입니다. CVE-2021-44228처럼 표기되며, 이 번호로 전 세계 어디서나 같은 취약점을 참조할 수 있습니다.

분석 유형 비교

  • SAST (정적 애플리케이션 보안 테스트): 소스 코드를 분석합니다. Source 단계에서 실행되며 CodeQL, Semgrep 도구를 사용합니다.
  • SCA (소프트웨어 구성 분석): 의존성/이미지를 분석합니다. Build 단계에서 실행되며 Trivy 도구를 사용합니다.
  • SBOM (소프트웨어 BOM 생성): 구성요소 목록을 생성합니다. Build 단계에서 실행되며 Trivy 도구를 사용합니다.
  • DAST (동적 애플리케이션 보안 테스트): 실행 중인 앱을 분석합니다. Operate 단계에서 실행되며 OWASP ZAP 도구를 사용합니다.

보안 분석 시나리오 가이드

각 분석 유형별 상세 가이드를 확인해보세요.

  • SAST 스캔: 소스 코드 정적 보안 분석입니다. Source 단계에서 실행되며 5-30분이 소요됩니다.
  • SCA 스캔: 이미지/의존성 취약점 분석입니다. Build 단계에서 실행되며 1-5분이 소요됩니다.
  • SBOM 생성: 소프트웨어 구성요소 목록을 생성합니다. Build 단계에서 실행되며 1-2분이 소요됩니다.
  • DAST 스캔: 실행 중인 앱 동적 분석입니다. Operate 단계에서 실행되며 5분-2시간이 소요됩니다.

보안 분석 접근 방법

파이프라인 통합 스캔

[서비스 관리] 페이지에서 서비스의 파이프라인 각 단계를 클릭하여 보안 분석을 실행합니다.

보안 분석 화면

각 파이프라인 단계에서 제공하는 보안 분석:

  • Source 단계 (정적 코드 분석): 소스 코드를 정적으로 분석하여 보안 취약점을 탐지합니다. Source 단계 클릭 후 SAST 탭을 선택하세요.

  • Build 단계 (이미지 분석): 빌드된 컨테이너 이미지와 의존성의 취약점을 분석합니다. Build 단계 클릭 후 SCA/SBOM 탭을 선택하세요.

  • Operate 단계 (도메인 분석): 실행 중인 애플리케이션에 HTTP 요청을 보내 동적으로 취약점을 탐지합니다. Operate 단계 클릭 후 DAST 탭을 선택하세요.

대시보드 통합 뷰

[대시보드] 페이지의 보안 현황 탭에서 전체 서비스의 보안 분석 결과를 한눈에 확인할 수 있습니다.

효율적인 보안 모니터링

대시보드에서 전체 서비스의 보안 현황을 주기적으로 확인하면, 새로운 취약점이 발견되었을 때 빠르게 대응할 수 있습니다. 특히 Critical이나 High 심각도의 취약점은 즉시 확인하는 습관을 들이세요.


각 분석 유형 상세

SAST (Static Application Security Testing)

소스 코드를 실행하지 않고 정적으로 분석하여 보안 취약점을 탐지합니다. 개발 초기 단계에서 문제를 발견할 수 있어 수정 비용을 크게 줄일 수 있습니다.

  • CodeQL: GitHub의 심층 데이터 흐름 분석입니다. Java, JavaScript, Python, Go, C++, C#, Ruby를 지원합니다.
  • Semgrep: 패턴 매칭 기반 빠른 분석입니다. 30개 이상의 언어를 지원합니다.

주요 탐지 취약점:

  • SQL Injection (CWE-89): 악의적인 SQL 쿼리가 삽입될 수 있는 코드
  • Cross-Site Scripting, XSS (CWE-79): 웹 페이지에 악성 스크립트가 삽입될 수 있는 취약점
  • Command Injection (CWE-78): OS 명령어가 주입될 수 있는 코드
  • Hardcoded Credentials (CWE-798): 소스 코드에 하드코딩된 비밀번호나 API 키
  • Path Traversal (CWE-22): 파일 경로 조작으로 의도하지 않은 파일에 접근 가능한 취약점

SCA (Software Composition Analysis)

빌드된 컨테이너 이미지와 의존성 패키지의 알려진 취약점(CVE)을 탐지합니다. 현대 소프트웨어는 수많은 외부 라이브러리에 의존하기 때문에 이 분석이 매우 중요합니다.

  • OS 패키지: Alpine, Debian, Ubuntu 시스템 패키지
  • 언어 패키지: npm, pip, maven, go 패키지
  • 베이스 이미지: FROM 절의 베이스 이미지 취약점
VEX Hub 필터링

실제 영향이 없는 취약점(오탐)을 자동 필터링하여 불필요한 알림을 줄여줍니다. 진짜 중요한 취약점에 집중할 수 있도록 도와주는 기능입니다.

SBOM (Software Bill of Materials)

소프트웨어를 구성하는 모든 구성요소의 목록을 생성합니다. 공급망 보안의 기초가 되는 중요한 문서입니다.

  • CycloneDX: OWASP 표준, 보안 분석에 초점
  • SPDX: Linux Foundation 표준, 라이선스 관리에 초점

활용 목적:

  • 공급망 보안 (Supply Chain Security): 어떤 구성요소가 포함되어 있는지 투명하게 관리
  • 라이선스 컴플라이언스: 사용 중인 오픈소스 라이선스 파악
  • 취약점 추적 및 대응: 새로운 CVE가 발표되면 영향받는 서비스 빠르게 식별

DAST (Dynamic Application Security Testing)

실행 중인 애플리케이션에 실제 HTTP 요청을 보내 동적으로 취약점을 탐지합니다. SAST로 발견하기 어려운 런타임 취약점을 찾을 수 있습니다.

  • Baseline: 빠른 패시브 스캔입니다. 개발, CI 환경에 권장합니다. (5-10분 소요)
  • Full: 전체 액티브 스캔입니다. 스테이징 환경에 권장합니다. (30분-2시간 소요)
  • API: API 전용 스캔입니다. REST API 서비스에 권장합니다. (15-30분 소요)

주요 탐지 취약점:

  • Missing Security Headers: 보안 관련 HTTP 헤더 누락
  • Cookie Security Issues: 쿠키의 Secure, HttpOnly 플래그 미설정
  • CSRF Vulnerabilities: 크로스사이트 요청 위조 취약점
  • SQL Injection (런타임): 실제 요청으로 확인되는 SQL 인젝션
  • XSS (런타임): 실제 요청으로 확인되는 크로스사이트 스크립팅

심각도 분류 및 대응 가이드

CVSS 기반 심각도

CVSS(Common Vulnerability Scoring System)는 취약점의 심각도를 0-10점으로 표준화한 점수 체계입니다.

  • Critical (CVSS 9.0-10.0): 즉시 대응이 필요합니다. 배포 차단 및 긴급 수정을 권장합니다.
  • High (CVSS 7.0-8.9): 24-48시간 내 대응이 필요합니다. 우선 수정을 권장합니다.
  • Medium (CVSS 4.0-6.9): 1-2주 내 대응이 필요합니다. 계획적 수정을 권장합니다.
  • Low (CVSS 0.1-3.9): 다음 릴리스에 대응합니다. 모니터링을 권장합니다.
  • Info (N/A): 선택적 대응입니다. 참고용 정보입니다.
Critical/High 취약점 발견 시

Critical이나 High 심각도의 취약점이 발견되면 즉시 조치가 필요합니다. 특히 프로덕션 환경에서는 해당 취약점이 악용될 위험이 있으므로 빠른 패치나 임시 대응 방안을 마련하세요.

환경별 권장 정책

Development 환경

  • SAST: 선택, SCA: 권장, SBOM: 선택, DAST: 선택
  • 차단 정책: 알림만

Staging 환경

  • SAST: 권장, SCA: 필수, SBOM: 권장, DAST: 권장
  • 차단 정책: High 이상 차단

Production 환경

  • SAST: 필수, SCA: 필수, SBOM: 필수, DAST: 필수
  • 차단 정책: Critical 차단

빠른 시작: 전체 보안 분석 흐름

처음이시라면 아래 단계를 따라 전체 보안 분석을 경험해보세요.

1단계: SAST 스캔 (Source 단계)

  1. [서비스 관리] 페이지에서 서비스를 선택합니다 .
  2. Source 단계를 클릭합니다 .
  3. SAST 탭에서 스캔 시작을 클릭합니다 .
  4. 분석 엔진을 선택합니다 (CodeQL/Semgrep/둘 다)
  5. 결과를 확인하고 발견된 취약점을 수정합니다 .

2단계: SCA/SBOM 스캔 (Build 단계)

  1. Build 단계를 클릭합니다 .
  2. SCA 탭에서 스캔 시작을 클릭합니다 .
  3. VEX Hub 필터링을 활성화합니다 (권장)
  4. 취약점을 확인하고 패키지를 업데이트합니다 .
  5. SBOM 탭에서 구성요소 목록을 생성합니다 .

3단계: DAST 스캔 (Operate 단계)

  1. 서비스 배포가 완료되었는지 확인합니다 .
  2. Operate 단계를 클릭합니다 .
  3. DAST 탭에서 대상 URL을 확인합니다 .
  4. 스캔 유형을 선택합니다 (Baseline/Full/API)
  5. 스캔 시작을 클릭합니다 .
  6. 런타임 취약점을 확인하고 수정합니다 .
처음엔 Baseline 스캔부터

DAST를 처음 사용하신다면 Baseline 스캔부터 시작하세요. 빠르게 결과를 확인할 수 있고, 대부분의 일반적인 취약점을 탐지할 수 있습니다. Full 스캔은 시간이 오래 걸리고 서비스에 부하를 줄 수 있으니 스테이징 환경에서 실행하는 것을 권장합니다.


Auto CI와 보안 분석 연동

Auto CI 설정에서 보안 분석을 자동화할 수 있습니다. 수동으로 매번 스캔을 실행하는 번거로움 없이, 코드 변경 시 자동으로 보안 점검이 이루어집니다.

자동 스캔 트리거

  • Push: SAST와 SCA가 자동 실행되고, DAST는 선택적입니다.
  • Merge Request: SAST와 SCA가 빌드 후 자동 실행되고, DAST는 선택적입니다.
  • 배포 완료: DAST가 자동 실행됩니다.

차단 정책 설정

Auto CI에서 심각도별 차단 정책을 설정하면 취약점 발견 시 배포가 자동으로 차단됩니다. 이를 통해 보안에 문제가 있는 코드가 프로덕션에 배포되는 것을 방지할 수 있습니다.


보안 분석 결과 활용

PDF 보고서 생성

각 분석 결과 화면에서 PDF 다운로드 버튼을 클릭하여 상세 보안 보고서를 생성할 수 있습니다. 이 보고서는 보안 감사나 컴플라이언스 증빙 자료로 활용할 수 있습니다.

  • SAST 보고서: 코드 취약점, 위치, CWE 매핑
  • SCA 보고서: CVE 목록, 영향받는 패키지, 수정 버전
  • SBOM 보고서: 전체 구성요소 목록, 라이선스 정보
  • DAST 보고서: 런타임 취약점, 요청/응답 증거

대시보드 통합

[대시보드] 페이지의 보안 현황 탭에서 다음 정보를 확인할 수 있습니다:

  • 전체 서비스의 취약점 현황 요약
  • 심각도별 분포 차트
  • 최근 스캔 이력
  • 트렌드 분석

문제 해결

공통 문제

  • 스캔 시작 불가: Git 토큰 권한이 부족할 수 있습니다. Access Token을 갱신하고 필요한 권한이 있는지 확인하세요.

  • 타임아웃: 대용량 저장소나 이미지의 경우 분석 시간이 오래 걸릴 수 있습니다. 분석 범위를 축소하거나 타임아웃 설정을 늘려보세요.

  • 빈 결과: 지원하지 않는 언어나 형식일 수 있습니다. 각 분석 도구의 지원 언어 목록을 확인하세요.

분석별 문제 해결

각 분석 유형의 상세 문제 해결 가이드는 개별 문서를 참조하세요:


보안 분석 베스트 프랙티스

Shift-Left Security

"Shift-Left"란 보안 점검을 개발 프로세스 초기(왼쪽)로 옮기는 것을 의미합니다. 문제를 일찍 발견할수록 수정 비용이 낮아집니다.

  1. 개발 초기부터 SAST 실행: 코드 작성 시점에서 취약점을 탐지하면 수정이 쉽습니다 .
  2. 의존성 추가 시 SCA 확인: 새 패키지를 도입하기 전에 알려진 취약점이 없는지 확인하세요
  3. PR/MR에 보안 분석 통합: 코드 리뷰 시 보안 결과도 함께 검토하는 문화를 만드세요

취약점 관리

  1. Critical/High 우선 처리: 리소스가 한정되어 있다면 심각한 취약점부터 해결하세요
  2. 오탐 관리: VEX 필터를 활용하고, 확인된 오탐은 무시 목록에 추가하세요
  3. 정기적 재스캔: 새로운 CVE가 계속 발견되므로 정기적으로 재스캔하세요
  4. 베이스 이미지 업데이트: 컨테이너 베이스 이미지를 최신으로 유지하세요

컴플라이언스

  1. SBOM 생성 및 보관: 공급망 보안 요구사항을 충족하기 위해 SBOM을 생성하고 보관하세요
  2. 라이선스 검토: 사용 중인 OSS 라이선스가 프로젝트 정책과 맞는지 확인하세요
  3. 감사 로그: 보안 스캔 이력을 추적하여 감사에 대비하세요

관련 기능