모든 웹 애플리케이션은 공격 표면이며, 불편한 진실은 테스트하지 않은 것을 보호할 수 없다는 것이다. 정적 분석은 소스를 읽고 의심스러운 패턴을 플래그하지만, 배포된 애플리케이션이 실제로 데이터를 누수하는지, 주입된 페이로드를 수락하는지, 또는 인증되지 않은 관리 패널을 노출하는지 알 수 없다. 이는 공격자가 할 것처럼 외부에서 실행 중인 애플리케이션을 찌르는 것이 필요하다 — 동적 애플리케이션 보안 테스팅, 또는 DAST. 2026의 좋은 소식은 오픈소스 DAST 생태계가 성숙하고 능력이 있으며 무료라는 것이고, 빠른 알려진 CVE 체크에서 전체 크롤링 공격 스캔까지 모든 것을 다룬다. 함정은 어떤 단일 도구도 모든 것을 잘 수행하지 못하며, 필요한 것 중 일부를 사용하면 간격이 남는다는 것이다.
이 가이드는 DAST가 어떻게 작동하는지, 왜 오픈소스 도구가 경쟁 관계가 아닌 보완 관계인지, 그리고 CI/CD에 맞는 계층화된 스캔 파이프라인으로 이들을 어떻게 조립하는지 설명한다. 주요 인물은 ZAP, 완전 기능 프록시 및 스캐너; Nuclei, 빠른 템플릿 기반 취약점 스캐너; Wapiti, 명령줄 퍼징 스캐너; Nikto, 베테랑 서버 설정 체커다. 각각이 언제 사용하는지 이해하는 것이 중복이 아닌 범위를 구축하는 방법이다.
DAST가 실제로 무엇을 하는가
동적 테스팅은 애플리케이션을 블랙박스로 취급한다. 코드를 읽는 대신, DAST 도구는 HTTP를 통해 실행 중인 앱과 상호 작용한다 — 페이지를 크롤링하고, 폼을 제출하고, API를 호출 — 그리고 정상 및 악의적 입력에 어떻게 반응하는지 관찰한다. 파라미터에서 ' OR 1=1--을 보내는 것이 쿼리가 실행되었음을 암시하는 방식으로 응답을 변경하면, 그것이 SQL 주입의 신호다. 반사된 스크립트 태그가 페이지의 이스케이프되지 않은 상태로 돌아오면, 그것이 교차 사이트 스크립팅이다. DAST는 런타임에만 존재하는 취약점을 포착한다: 주입 결함, 인증 및 세션 문제, 설정 오류, 노출된 엔드포인트, 그리고 배포되었을 때 구성 요소가 실제로 상호 작용하는 방식에서 나오는 문제.
DAST의 큰 강점은 현실을 테스트한다는 것이다 — 실제 실행 중인 시스템, 그 서버, 설정, 런타임 동작을 포함하여, 소스의 추상 모델이 아니다. 그것의 해당 약점은 도달할 수 있는 것만 테스트한다는 것이다: 크롤러가 페이지를 절대 찾지 못하거나, 인증할 수 없거나, 단일 페이지 앱의 클라이언트 측 라우팅을 이해하지 못하면, 해당 표면은 테스트되지 않는다. 이것이 크롤링 품질과 인증 지원이 왜 그렇게 중요한지, 그리고 도구가 애플리케이션의 진정한 표면을 발견하는 데 얼마나 잘하는지에 있어서 의미 있게 다른 이유다. 또한 DAST가 정적 분석 및 의존성 스캔을 보완하지만 대체하지 않는 이유다 — 각각이 다른 것이 눈먼 것을 본다.
ZAP: 완전 기능 워크호스
ZAP (Zed Attack Proxy), Checkmarx에 의해 유지 관리되어 OWASP 플래그십의 긴 실행 후, 가장 완전한 오픈소스 DAST 도구이며, 많은 팀에 대해 그것이 전체 스택이다. 그 기초는 인터셉팅 프록시다: 브라우저 (또는 자동화된 크롤러)를 ZAP으로 라우트하고, 모든 요청과 응답을 기록하여 애플리케이션의 지도를 구축한다. 해당 트래픽에서 패시브 스캔 (공격 없이 관찰된 응답에서 문제 플래그)과, 요청 시, 액티브 스캔 (취약점을 확인하기 위해 공격 페이로드를 보냄)을 실행한다. 그 핵심 주변에 JavaScript-집약적 앱을 위한 스파이더 및 Ajax 스파이더, 퍼저, WebSocket 지원, REST, GraphQL, SOAP에 대한 API 스캔을 추가한다.
ZAP의 2026에 대한 결정적 이점은 자동화다. 기본 (패시브) 스캔, 전체 (액티브) 스캔, OpenAPI 스펙에 의해 구동되는 API 스캔을 하는 패키지된 스캔 스크립트는 컨테이너에서 헤드리스로 실행되도록 설계되었으므로, ZAP은 CI/CD에 자연스러운 적합이다. 포인트 기본 스캔을 매 풀 요청에 스테이징 배포에서 스캔하면, 거의 설정 없이 연속적이고 낮은 소음의 DAST를 얻는다. 그 자동화 프레임워크와 전체 HTTP API는 임의로 복잡한 스캔을 스크립트할 수 있게 하며, 그 컨텍스트 및 인증 처리는 로그인 사용자로 테스트할 수 있게 하는데, 이것이 흥미로운 취약점이 보통 사는 곳이다. 사람들이 "하나의 오픈소스 DAST 도구"를 요청할 때, ZAP이 답변이고, ZAP 치트시트가 그 스캔 모드 및 API를 다룬다.
트레이드오프는 ZAP의 폭이 무게와 함께 온다는 것이다: 그것은 학습 곡선이 있는 실질적인 도구고, 큰 애플리케이션의 전체 액티브 스캔은 시간이 걸린다. 이것은 그 범위에 대해 합리적인 비용이지만, 더 가볍고 더 빠른 도구가 여전히 그 옆에 장소를 가져야 하는 이유다.
Nuclei: 빠르고, 템플릿 구동 감지
Nuclei, ProjectDiscovery에서, 문제의 다른 부분을 공격한다: 속도 및 알려진 취약점 범위. 크롤링과 퍼징 대신, Nuclei는 거대한 커뮤니티 유지 관리 YAML 템플릿 라이브러리에 대해 타겟을 실행한다. 각각은 특정 문제 — 알려진 CVE, 기본 자격증, 노출된 설정 파일, 설정 오류를 감지하는 방법을 설명한다. 템플릿이 선언적이고 Nuclei 엔진이 빠르고 병렬이기 때문에, 수많은 알려진 문제를 수분 내에 많은 호스트에 걸쳐 결정론적으로 확인할 수 있다.
이것은 Nuclei를 이상적인 첫 번째 통과 및 이상적인 연속 확인으로 만든다. 이것은 "이 타겟이 알려진 것에 취약한가?"에 답하는 데 탁월하다 — 노출된 .git 디렉토리, 해제되지 않은 CVE, 남은 관리 패널, 기본 로그인. 12,000+ 커뮤니티 템플릿은 보안 커뮤니티의 집단 지식이 인코딩되고 재사용 가능함을 의미하고, 새로운 템플릿은 새로운 취약점이 공개될 때 나타난다. 파이프라인에서, Nuclei는 모든 배포에 대해 실행하고 프로덕션에 대해서도 (주의 깊게) 실행하기에 충분히 저렴하여, 회귀 및 새로 공개된 문제를 빠르게 포착한다. Nuclei 치트시트가 템플릿 선택 및 스캔을 다룬다.
Nuclei가 하지 않는 것은 당신의 특정 애플리케이션 논리에서 새로운 취약점을 발견하는 것이다. 이것은 알려진 패턴 카탈로그에 대해 확인한다; ZAP 또는 Wapiti처럼 당신의 앱을 크롤링하고 고유 파라미터를 퍼징하지 않는다. 이것은 결함이 아니다 — 이것이 설계다 — 하지만 이것이 정확히 Nuclei가 하나를 대체하기보다는 크롤링 스캐너와 페어링하는 이유다.
Wapiti 및 Nikto: 포커스된 전문가
두 개의 더 가벼운 도구가 오픈소스 스택을 둥글게 한다. Wapiti는 퍼저로 작동하는 명령줄 블랙박스 스캐너다: 애플리케이션을 크롤링하여 URL 및 폼을 열거한 다음 모든 파라미터에 페이로드를 주입하고 취약점의 신호에 대해 응답을 검사한다 — SQL 주입, XSS, 파일 공개, 명령 주입, SSRF 등. 그것은 ZAP보다 가볍고 더 스크립트 가능하고, GPL 라이선스 및 pip-설치 가능하므로, ZAP의 전체 발자국 없이 액티브 퍼징이 필요할 때 CI 작업으로 떨어뜨리기가 쉽다. 2026 릴리스는 더 새로운 공격 클래스와 함께 페이스를 유지했고, Wapiti 치트시트가 그 모듈 시스템을 다룬다.
Nikto는 그룹의 베테랑이고 좁지만 유용한 틈새를 차지한다: 서버 수준 확인. 이것은 위험한 파일 및 CGI, 시대 착오적 서버 소프트웨어, 일반적인 설정 오류 — 수천 개의 확인에 대해 웹 서버를 스캔한다. 애플리케이션의 비즈니스 논리가 아닌 서버 자체. 이것은 빠르고, 간단하고, 보완이다: Nikto는 서버가 설정 오류이거나 위험한 무엇인가를 실행하고 있는 것을 말하는 반면, ZAP 및 Wapiti는 애플리케이션을 테스트한다. 빠른 서버 위생 통과를 위해, 계속 실행할 가치가 있다.
계층화된 파이프라인 조립
도구는 서로 다른 축을 다루기 때문에 보완이다 — 알려진 취약점 폭, 애플리케이션 논리 깊이, 서버 설정 — 그리고 가장 강한 자세는 비용 및 범위에 의해 이들을 계층한다. 실용적인 2026 파이프라인은 이렇게 보인다. 스테이징으로의 모든 배포에, Nuclei를 실행하여 알려진 CVE 및 노출의 빠른 광범위 스윕, 그리고 ZAP 기본 스캔 (패시브)를 낮은 소음 애플리케이션 발견 — 둘 다 풀 요청을 게이트할 만큼 빠르다. 스케줄에 (야간 또는 릴리스별), 더 무거운 액티브 스캔을 실행한다: ZAP 전체 스캔 및/또는 Wapiti를 애플리케이션 파라미터 및 폼을 퍼징하고 새로운 주입 및 논리 결함을 찾으려고, 그리고 Nikto 통과를 서버 위생. 모든 것을 동일한 보고에 피드하여 발견 사항이 함께 심사된다.
이 계층화는 액티브 스캔은 느리고 알려진 CVE 확인은 빠르다는 현실을 존경한다. 따라서 저렴한 광범위 확인을 연속적으로 실행하고 비용이 많이 드는 깊은 확인을 주기적으로 실행한다. 또한 각 도구가 다른 도구가 다루는 눈먼 점을 가지고 있다는 현실을 존경한다: Nuclei는 ZAP/Wapiti 퍼징이 포착하는 새로운 앱 논리 버그를 놓친다; ZAP/Wapiti는 Nuclei의 신선한 템플릿이 포착하는 새로 공개된 CVE를 놓친다; 둘 다 Nikto가 플래그하는 서버 설정 오류를 놓친다. 하나를 실행하고 당신은 거짓 안보감을 가지고; 계층화된 세트를 실행하고 당신은 진정한 범위를 가진다. 팀이 하는 가장 일반적인 실수는 단일 스캐너를 채택하고 그것이 포괄적이라고 가정하는 것이다 — 어떤 DAST 도구도 없고, 오픈소스 것들은 서로 보완하도록 명시적으로 설계된다.
인증 및 범위: 스캔이 성공하거나 실패하는 곳
이것이 작동하는지 결정하는 지점: DAST는 도달할 수 있는 것만 테스트한다. 따라서 인증 및 범위 설정은 스캔이 조용히 성공하거나 실패하는 곳이다. 가장 심각한 취약점은 보통 로그인 뒤에 산다 — 인증된 애플리케이션, 관리 함수, 사용자 특정 데이터에서. 공개적이고 인증되지 않은 페이지만 테스트하는 스캐너는 공격 표면의 가장 흥미로운 부분을 테스트하고 있다. 모든 진지한 DAST 도구가 인증된 스캔을 지원한다 (ZAP의 컨텍스트 및 세션 관리가 특히 능력이 있다), 하지만 설정이 걸린다: 스캐너에게 어떻게 로그인하는지, 유효한 세션을 인식하는 방법, 자신을 로그아웃하지 않도록 하는 방법을 가르친다. 해당 설정에 투자하는 것이 진정한 문제를 찾는 스캔과 유용하고 오도적으로 깨끗한 보고서를 생성하는 스캔을 구분한다.
범위는 다른 방향에서 똑같이 중요하다. 액티브 스캐너는 실제 공격 페이로드를 보내는데, 이것은 데이터를 생성하거나, 작업을 트리거하거나, 시스템을 스트레스할 수 있다. 승인된 타겟 — 당신 자신의 스테이징 또는 명시적으로 허용된 환경 — 스캔을 제한해야 한다. 프로덕션에 대해 액티브 스캔을 실행하는 것에 대해 신중해야 한다. 당신이 소유하지 않거나 테스트 권한이 있는 시스템 스캔은 불법이고, 방어를 위해 이 도구를 가치 있게 만드는 전력은 오용될 때 위험하다. 범위를 정의하고, 권한을 얻고, 공격적인 스캔에 대해 스테이징을 선호하자.
현대 앱 처리: SPA 및 API
고전적 DAST 모델이 예상하지 않은 과제는 2026 웹 애플리케이션의 큰 공유가 크롤러가 링크를 따라 걸을 수 있는 서버-렌더링 페이지가 아니라는 것이다. 브라우저가 JavaScript를 실행하여 인터페이스를 구축하고 API에서 데이터를 가져오는 단일 페이지 애플리케이션이고, 클라이언트 측 라우팅이 없는 헤드리스 API다. 둘 다 순진한 스파이더를 부순다: 따라갈 <a href> 링크가 없고, 실제 공격 표면은 클라이언트 측 코드에 의해 호출되는 API 엔드포인트 세트다. 전통적인 HTML 크롤링만 이해하는 스캐너는 이러한 애플리케이션의 거의 없는 지도를 작성하고 안심스럽고 완전히 오도적인, 빈 결과를 보고할 것이다.
도구가 적응했고, 올바른 모드를 사용하는 것이 중요하다. SPA의 경우, ZAP의 Ajax 스파이더는 JavaScript를 실행하고 앱이 실제로 만드는 요청을 관찰하는 실제 브라우저를 구동하여 순수 스파이더가 놓칠 API 호출을 발견한다. 직접 API의 경우, 더 나은 경로는 크롤링을 완전히 건너뛰고 스캐너에 사양을 제공하는 것이다: ZAP의 API 스캔은 OpenAPI (Swagger), SOAP, 또는 GraphQL 정의를 소비하고 모든 문서화된 엔드포인트 및 파라미터를 체계적으로 테스트한다. 이것은 종종 크롤링보다 더 철저하다. 왜냐하면 사양이 크롤링이 발견에 의존하기보다는 완전한 표면을 열거하기 때문이다. 실용적인 규칙은 당신이 하나를 가지고 있을 때 스캐너에 지도를 제공하는 것이다 — OpenAPI 파일, Postman 컬렉션, GraphQL 스키마 — 완전한 범위에 크롤링의 방법을 하도록 희망하기보다는.
이것은 또한 현대 개발에서 DAST가 어디 들어맞는지를 다시 프레이밍한다. 애플리케이션이 API-우선일 때, DAST는 API 보안 테스팅이 되고, API 스펙을 스캔 파이프라인으로 통합하는 것이 가장 높은 레버리지 설정 단계다. REST 또는 GraphQL API를 배송하는 팀은 ZAP API 스캔을 OpenAPI/스키마와 함께 CI로 와이어하여 모든 변경에 대해 모든 엔드포인트가 테스트되도록 해야 한다. 렌더링된 UI가 아닌 스캔 타겟으로서 사양을 취급하는 것이 DAST가 애플리케이션이 서버-렌더링된 HTML에서 벗어나갈 때 효과적으로 유지되는 방법이다.
최종 결론
동적 애플리케이션 보안 테스팅은 당신의 애플리케이션이 실제로 실행될 때만 존재하는 취약점을 포착한다. 2026에, 오픈소스 DAST 스택이 무료로 전체 범위를 다룬다 — 만약 당신이 단일 도구에 베팅하기보다는 계층화된 세트로서 그것을 사용한다면. 빠르고 지속적인 알려진 CVE 및 노출 감지를 위해 Nuclei를 실행하라; 풀 크롤링 및 액티브 스캔 워크호스를 위해 첫 클래스 CI 자동화로 ZAP을 실행하라; 가벼운 명령줄 퍼징을 위해 Wapiti를 추가하고 서버 설정 위생을 위해 Nikto를 추가하라. 모든 배포에서 빠른 체크를 계층화하고 스케줄에서 깊은 스캔을 배치하고, 인증된 스캔에 투자하여 중요한 표면을 테스트하고, 능동적 스캔을 승인된 타겟으로 한정하고, 당신은 "우리는 앱이 보안이기를 희망한다"에서 "우리는 실제 공격에 대해 지속적으로 테스트한다"로 전환한다.
참고 자료 및 리소스
도구
배경 및 분석
- Nuclei 대안 2026: 더 빠른 Vuln 스캐너 — AppSec Santa
- 오픈소스 DAST 도구 비교 — ZAP, Nuclei, Wapiti, Nikto
- 2026년 최고의 무료 DAST 도구
관련 1337skills 치트시트