보안 분석
소프트웨어 보안, 어디서부터 시작해야 할지 막막하신가요? 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 절의 베이스 이미지 취약점
실제 영향이 없는 취약점(오탐)을 자동 필터링하여 불필요한 알림을 줄여줍니다. 진짜 중요한 취약점에 집중할 수 있도록 도와주는 기능입니다.
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 심각도의 취약점이 발견되면 즉시 조치가 필요합니다. 특히 프로덕션 환경에서는 해당 취약점이 악용될 위험이 있으므로 빠른 패치나 임시 대응 방안을 마련하세요.
환경별 권장 정책
Development 환경
- SAST: 선택, SCA: 권장, SBOM: 선택, DAST: 선택
- 차단 정책: 알림만
Staging 환경
- SAST: 권장, SCA: 필수, SBOM: 권장, DAST: 권장
- 차단 정책: High 이상 차단
Production 환경
- SAST: 필수, SCA: 필수, SBOM: 필수, DAST: 필수
- 차단 정책: Critical 차단
빠른 시작: 전체 보안 분석 흐름
처음이시라면 아래 단계를 따라 전체 보안 분석을 경험해보세요.
1단계: SAST 스캔 (Source 단계)
- [서비스 관리] 페이지에서 서비스를 선택합니다 .
- Source 단계를 클릭합니다 .
- SAST 탭에서 스캔 시작을 클릭합니다 .
- 분석 엔진을 선택합니다 (CodeQL/Semgrep/둘 다)
- 결과를 확인하고 발견된 취약점을 수정합니다 .
2단계: SCA/SBOM 스캔 (Build 단계)
- Build 단계를 클릭합니다 .
- SCA 탭에서 스캔 시작을 클릭합니다 .
- VEX Hub 필터링을 활성화합니다 (권장)
- 취약점을 확인하고 패키지를 업데이트합니다 .
- SBOM 탭에서 구성요소 목록을 생성합니다 .
3단계: DAST 스캔 (Operate 단계)
- 서비스 배포가 완료되었는지 확인합니다 .
- Operate 단계를 클릭합니다 .
- DAST 탭에서 대상 URL을 확인합니다 .
- 스캔 유형을 선택합니다 (Baseline/Full/API)
- 스캔 시작을 클릭합니다 .
- 런타임 취약점을 확인하고 수정합니다 .
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"란 보안 점검을 개발 프로세스 초기(왼쪽)로 옮기는 것을 의미합니다. 문제를 일찍 발견할수록 수정 비용이 낮아집니다.
- 개발 초기부터 SAST 실행: 코드 작성 시점에서 취약점을 탐지하면 수정이 쉽습니다 .
- 의존성 추가 시 SCA 확인: 새 패키지를 도입하기 전에 알려진 취약점이 없는지 확인하세요
- PR/MR에 보안 분석 통합: 코드 리뷰 시 보안 결과도 함께 검토하는 문화를 만드세요
취약점 관리
- Critical/High 우선 처리: 리소스가 한정되어 있다면 심각한 취약점부터 해결하세요
- 오탐 관리: VEX 필터를 활용하고, 확인된 오탐은 무시 목록에 추가하세요
- 정기적 재스캔: 새로운 CVE가 계속 발견되므로 정기적으로 재스캔하세요
- 베이스 이미지 업데이트: 컨테이너 베이스 이미지를 최신으로 유지하세요
컴플라이언스
- SBOM 생성 및 보관: 공급망 보안 요구사항을 충족하기 위해 SBOM을 생성하고 보관하세요
- 라이선스 검토: 사용 중인 OSS 라이선스가 프로젝트 정책과 맞는지 확인하세요
- 감사 로그: 보안 스캔 이력을 추적하여 감사에 대비하세요
관련 기능
- 서비스 빌드/배포 - 보안 분석 통합 파이프라인
- 운영 관리 - 실시간 보안 모니터링
- Auto CI 설정 - 자동 보안 분석 설정