본문으로 건너뛰기

DAST 스캔

코드만 봐서는 발견할 수 없는 취약점도 있습니다. DAST(Dynamic Application Security Testing)는 실제로 실행 중인 애플리케이션에 HTTP 요청을 보내 취약점을 탐지하는 방법입니다. 마치 해커가 외부에서 공격하는 것처럼 애플리케이션을 테스트합니다.

DAST가 왜 필요한가요?

SAST는 코드를 분석하지만, 서버 설정 오류나 배포 환경의 문제는 발견하지 못합니다. 예를 들어 보안 헤더 누락, 쿠키 설정 오류, CORS 설정 문제 등은 애플리케이션이 실제로 실행되어야만 확인할 수 있습니다. DAST는 이러한 런타임 취약점을 찾아줍니다.

DAST 스캔 결과

개요

  • 분석 대상: 배포되어 실행 중인 웹 애플리케이션
  • 분석 엔진: OWASP ZAP + Nuclei (동시 실행)
  • 분석 방식: 실제 HTTP 요청을 보내 응답을 분석
DAST는 두 도구를 동시 실행합니다

OWASP ZAP과 Nuclei는 같은 대상 도메인에 대해 동시에 실행되며, 결과는 하나의 통합 뷰에 표시됩니다. 두 도구는 서로 다른 관점의 분석을 제공하므로 함께 보면 더 종합적인 위험 평가가 가능합니다. 한 도구가 실패해도 다른 도구는 계속 진행됩니다 (Promise.allSettled 패턴, SecurityScanTriggerBar.tsx line 367).


DAST의 특징

장점

  • 실제 환경 테스트: 프로덕션과 동일한 환경에서 테스트하여 실제 위험을 파악
  • 설정 오류 탐지: 웹 서버, 프레임워크, 클라우드 설정의 보안 문제 발견
  • 인증 테스트: 로그인 우회, 세션 관리 취약점 등 인증 관련 문제 검증
  • 런타임 취약점: 코드만 봐서는 알 수 없는, 실행 중에만 나타나는 문제 탐지

SAST vs DAST

  • SAST: 소스 코드를 개발 중에 분석합니다. 전체 코드베이스를 다루며 개발 초기에 문제를 발견합니다.
  • DAST: 실행 중인 앱을 배포 후에 분석합니다. 접근 가능한 엔드포인트만 다루며 설정 오류와 런타임 취약점을 발견합니다.
두 가지 모두 사용하세요

SAST와 DAST는 상호 보완적입니다. SAST는 개발 단계에서, DAST는 배포 후에 실행하여 각각 다른 유형의 취약점을 커버하세요.


Step 1: DAST 스캔 진입

  1. 사이드바의 "보안" 그룹 > [보안 분석] 메뉴를 클릭합니다.
  2. 페이지 상단의 카드 캐러셀에서 분석할 서비스를 선택합니다.
  3. DAST 탭을 선택합니다.
URL로 바로 진입하기

/security?id={서비스ID}&area=dast URL로 진입하면 해당 서비스의 DAST 탭이 바로 열립니다.


Step 2: 스캔 실행 준비

DAST 모달([도메인 분석 (DAST) · OWASP ZAP + Nuclei])을 열면 다음을 설정합니다:

  • 스캔 대상 URL: 서비스에 등록된 도메인 중 하나를 선택하거나 수동으로 URL 입력
  • ZAP 스캔 타입: baseline(기본, 450초) / full(900초) / api(450초) 선택. Nuclei는 항상 default 타입으로 고정 실행

DAST 모달은 두 가지 도메인 선택 모드(select / manual)를 토글할 수 있습니다.

  • select: 자동 감지된 도메인 목록에서 선택. 서비스에 매핑된 외부 Nginx 도메인이 카드 스트립으로 표시되며, 각 카드는 도메인명, 마지막 스캔 상태 및 시간, 재스캔 버튼을 제공합니다. 여러 도메인이 있는 경우 카드를 클릭하여 스캔 대상 도메인을 전환할 수 있습니다.
  • manual: target_url 필드에 수동으로 URL 입력

ZAP 스캔 타입은 목적에 맞게 선택합니다.

  • Baseline (짧은 액티브 스캔): 전체 타임아웃 450초. 짧게 제한된 액티브 스캔으로 보안 헤더 누락, 쿠키 설정 문제, 기본 인젝션/XSS 패턴 등을 탐지합니다. 개발 환경, CI 파이프라인에 권장됩니다.
  • Full (액티브 스캔): 전체 타임아웃 900초. SQL Injection, XSS 등을 테스트하기 위해 악성 페이로드를 전송합니다. 스테이징 환경에 권장됩니다.
  • API (API 전용 스캔): 전체 타임아웃 450초. REST API 엔드포인트에 최적화된 스캔입니다.
프로덕션 환경에서 Full 스캔 주의

Full 스캔은 실제 공격 페이로드를 전송하므로, 프로덕션 환경에서는 서버 부하 증가, 데이터 변경, 일시적 오류 등이 발생할 수 있습니다. 프로덕션에서는 Baseline 스캔만 실행하거나, Full 스캔은 스테이징 환경에서 실행하세요.

도메인 인라인 등록 (2026-06-01)

도메인이 미등록 상태라면 보안 분석 페이지 내에서 "여기서 도메인 등록" 버튼으로 인라인 도메인 추가가 가능합니다. 페이지 이탈 없이 등록되며(DomainAddModal 통합), 외부 Nginx, K8s Ingress 등 다양한 인프라 유형을 지원합니다.

DAST는 SBOM/라이선스 분석을 동반 생성하지 않습니다

DAST 스캔은 SBOM이나 라이선스 정보를 만들지 않습니다. SBOM/라이선스는 SAST·SCA·DAST와 무관한 별개의 독립 스캔으로, SBOM / 라이선스 탭에서 직접 실행합니다(소스 SBOM·이미지 SBOM 모두).


Step 3: 스캔 실행 및 실시간 진행률

스캔 시작 버튼을 클릭하면 WebSocket을 통해 진행률이 실시간으로 표시됩니다. 스캔 진행 중에는 버튼 라벨이 변경되며, 진행률(0~100%)과 함께 현재 수행 중인 단계 라벨이 동적으로 노출됩니다.

WebSocket 진행 중 단계

ZAP는 spider(크롤링)와 active_scan(능동 보안 스캔)을 순차적으로 수행하며, 진행 중에는 다음 단계 라벨이 순서대로 표시됩니다.

  • ZAP 환경 준비 중
  • 스캔 옵션 구성 중
  • ZAP 데몬 시작 중
  • 사이트 탐색(크롤링) 중
  • 능동 보안 스캔 중
  • 보고서 생성 중
  • 결과 파싱 중

ZAP와 Nuclei가 동시에 실행되므로, Nuclei 측의 단계 라벨(예: Nuclei 템플릿 점검 중)도 함께 진행될 수 있습니다.

결과(완료/실패)

WebSocket을 통해 실시간 진행 메시지가 표시되며, 스캔이 끝나면 최종적으로 완료 또는 오류 상태로 전환됩니다. 완료 시 결과를 확인할 수 있고, 실패 시 오류 메시지가 표시됩니다.


Step 4: 결과 확인

4.1 결과 요약

스캔이 완료되면 위험도별 알림 수와 스캔 소요 시간 등의 메트릭이 노출됩니다.

4.2 카테고리별 결과 보기

각 알림은 다음 상태로 분류 및 처리할 수 있습니다.

  • open: 새로 발견된 미처리 알림
  • resolved: 수정 완료
  • false_positive: 오탐으로 확인됨
  • accepted_risk: 위험 수용 (인지했으나 수정하지 않음)

4.3 알림 상세

각 알림을 클릭하면 취약점 유형, 위험도, URL, 파라미터, 증거(요청/응답), 권장 해결 방법, 참조 링크를 확인할 수 있습니다.

증거(Evidence) 활용하기

Evidence에는 실제 요청과 응답이 포함되어 있습니다. 이를 통해 취약점을 재현하고 수정 후 검증할 수 있습니다. 개발자에게 취약점을 전달할 때 Evidence를 함께 공유하면 이해가 빠릅니다.

4.4 스캔 이력 조회

페이지 하단의 '스캔 이력' 테이블에서 과거 스캔 기록을 확인합니다.

  • 그룹화된 행: 한 번의 DAST 트리거에서 ZAP과 Nuclei를 동시에 실행한 경우, 이 두 행은 하나의 그룹(group_id)으로 묶여 한 행에 표시됩니다 (commit a3be8037)
  • 도구별 배지: 각 행에 'ZAP', 'Nuclei' 배지가 표시되어 어떤 도구의 스캔인지 명확함
  • 누적 결과: 같은 도메인의 ZAP과 Nuclei 결과가 같은 dast_results 행에 저장되므로, 도메인별 두 도구 카운트를 한 번에 확인 가능
  • 행 클릭: 이력 행을 클릭하면 그 스캔 시점의 결과를 조회할 수 있습니다 (보는 중 라벨 표시)

주요 탐지 취약점

  • 인젝션: SQL Injection, OS Command Injection, LDAP Injection
  • XSS: Reflected XSS, Stored XSS, DOM-based XSS
  • 설정 오류: Missing Security Headers, Cookie Flags 미설정, CORS Misconfiguration, Directory Listing
  • 인증/세션: Broken Authentication, Session Fixation, CSRF

문제 해결

스캔 실패

  • URL 접근 불가: 외부 Nginx에 도메인이 연결되어 있지 않거나, KIOPS 서버에서 해당 URL로 접근할 수 없는 경우입니다. 도메인이 외부 Nginx에 정상 등록되어 있는지 먼저 확인하세요.

  • 타임아웃: Baseline/API 스캔은 450초, Full 스캔은 900초 후 타임아웃됩니다. 대상 사이트가 너무 크거나 응답이 느린 경우 스캔 대상 도메인을 좁혀보세요.

  • SSL 오류: 자체 서명 인증서를 사용하는 경우 대상 도메인의 인증서 설정을 확인하세요.

  • 도메인 미등록: 스캔 대상 도메인이 없는 경우 보안 분석 페이지의 사전 조건 패널에서 "여기서 도메인 등록" 버튼을 클릭해 인라인 도메인 추가. 외부 Nginx, K8s Ingress 등 다양한 인프라 유형을 지원합니다.

오탐(False Positive) 처리

DAST도 때때로 실제로는 취약하지 않은 것을 취약점으로 보고할 수 있습니다. 알림을 false_positive 또는 accepted_risk 상태로 변경하면 이후 스캔에서 동일 항목이 자동 분류됩니다.


관련 가이드