DAST(동적 애플리케이션 보안 테스트)는 실행 중인 애플리케이션을 외부에서 테스트해 약점을 찾는 방법입니다. 이 페이지에서는 다른 방법과의 차이점과 자신의 앱에 활용하는 방법을 설명합니다(타인의 사이트 테스트는 다루지 않습니다).
DAST란
DAST는 동적 애플리케이션 보안 테스트(dynamic application security testing)의 약자입니다. OWASP DevSecOps Guideline은 이를 실행 중인 애플리케이션의 보안 취약점과 약점을 찾는 블랙박스 테스트로 설명합니다. 블랙박스란 내부 소스 코드를 보지 않고 외부에서 보이는 부분만으로 테스트한다는 뜻입니다.
실제로 도구는 애플리케이션의 페이지와 입력 필드를 따라가며 테스트 요청을 보내고, 응답에서 문제의 징후를 찾습니다. 가이드라인은 이 방법이 입출력 검증, 인증 문제, 서버 설정 실수를 찾는 데 특히 유용하다고 설명합니다.
작동 방식
SAST, IAST, SCA와의 차이
| 방법 | 점검 대상 | 앱 실행 여부 | 적합한 용도 |
|---|---|---|---|
| DAST | 외부에서 본 실행 중인 앱의 동작 | 예 | 입출력 검증, 인증, 서버 설정 |
| SAST | 소스 코드 또는 컴파일된 코드 | 아니요 | 개발 초기의 코딩 문제 발견 |
| IAST | 센서를 통한 앱 내부 동작 | 예(테스트 중) | 자동화 테스트 중 나타나는 문제 |
| SCA | 라이브러리 및 기타 의존성 | 아니요 | 알려진 취약점(CVE)이 있는 구성 요소 |
SAST에 대해 OWASP는 애플리케이션 보안 결함의 상대적으로 작은 비율만 찾고, 오탐이 많으며, 설정 문제를 놓친다는 한계를 제시합니다. DAST는 이 공백을 메우는 데 도움이 되지만 역시 완전하지는 않습니다. SCA에 대해서는 OSV-Scanner로 의존성 점검하기를 참고하세요.
자신의 앱에 활용하기(OWASP ZAP 예시)
ZAP(Zed Attack Proxy, 이전 명칭 OWASP ZAP)은 무료 오픈소스 DAST 도구입니다. 공식 사이트에서는 현재 "ZAP by Checkmarx"로 표기합니다.
- 자신이 관리하는 테스트 환경의 URL을 준비합니다. 운영 환경이 아닌 테스트 환경을 사용하세요
- 베이스라인 스캔을 실행합니다. ZAP 문서에 따르면 이 스캔은 패시브 방식으로만 동작하며, 기본적으로 1분 동안 스파이더(페이지를 따라가는 기능)를 실행하고 공격은 수행하지 않습니다. 길어야 몇 분 정도 걸립니다
- 결과를 읽고, 어떤 발견 사항이 실제인지 사람이 확인합니다. 오탐은 발생할 수 있습니다
- 필요한 경우에만 테스트 환경에서 액티브 스캔으로 넘어갑니다. 액티브 스캔은 대상에 알려진 공격을 실행하며, 문서에는 소유하지 않은 웹 애플리케이션에 사용해서는 안 된다고 명시되어 있습니다
- 수정 후에는 예를 들어 CI에서 정기적으로 다시 실행합니다
자신이 소유하거나 관리하는 앱의 테스트 환경에서만 사용
DAST 도구는 실제 공격과 비슷한 트래픽을 보냅니다. 테스트 허가를 받지 않은 사이트에서 실행하면 무단 접근이나 서비스 방해로 간주될 수 있습니다. ZAP 문서도 소유하지 않은 웹 애플리케이션에 액티브 스캔을 사용하지 말라고 밝히고 있습니다. 운영 환경에서 실행하면 데이터 생성이나 부하 증가 같은 부작용이 생길 수도 있습니다.
DAST가 놓치는 것
ZAP 문서에 따르면 액티브 스캔은 접근 제어 실패 같은 논리적 문제를 찾지 못하므로 수동 테스트를 함께 해야 합니다. 한 사용자가 다른 사용자의 데이터를 볼 수 있는 IDOR 같은 결함은, 올바른 동작이 무엇인지 도구가 알 수 없으므로 자동화 도구로 찾기 어렵습니다. 다른 사용자의 ID를 요청했을 때 거부되는지 확인하는 테스트를 직접 작성해야 합니다.
반면 설정 점검은 DAST가 잘하는 영역입니다. 어떤 설정이 여전히 중요한지는 보안 헤더: 여전히 중요한 것을 참고하세요.
이 사이트의 견해: DAST는 마지막 안전망입니다. 코드, 구성 요소, 동작의 세 계층으로 생각하세요
하나의 도구가 모든 것을 찾을 것으로 기대하기보다, 서로 다른 위치를 살피는 세 가지 방법을 결합하는 것이 현실적입니다. 코드를 읽고(SAST), 구성 요소의 알려진 취약점을 점검하고(SCA), 그다음 앱을 실행해 외부에서 테스트합니다(DAST). 도구가 잘하지 못하는 "누가 무엇을 할 수 있는가" 같은 부분은 직접 작성한 테스트로 보호하세요. 도구 결과를 그대로 믿지 말고, 수정하기 전에 사람이 확인하세요.
출처 (1차 자료)
- OWASP DevSecOps Guideline, "Dynamic Application Security Testing" — owasp.github.io (DAST 정의, 블랙박스)
- OWASP DevSecOps Guideline, "Interactive Application Security Testing" — owasp.github.io (IAST)
- OWASP Community, "Source Code Analysis Tools" — owasp.org (SAST 및 그 한계)
- ZAP Documentation, "Active Scan" — zaproxy.org (소유하지 않은 앱에는 사용 금지, 논리적 문제는 찾지 못함)
- ZAP Documentation, "Baseline Scan" — zaproxy.org (패시브 전용, 실행 시간)
- SCA에 대한 설명은 일반적인 정의이며, 이에 대한 단일 공식 정의는 확인하지 않았습니다
다음으로 읽기
- 용어집: 퍼징이란 · OWASP Top 10이란 · IDOR이란
- 가이드: 보안 헤더: 여전히 중요한 것 · OSV-Scanner로 의존성 점검하기
- 용어집: CVE란