애플리케이션 보안 취약점으로 인해 기업은 평균 건당 488만 달러의 손실을 입습니다. NIS2, DORA, DSGVO로 인해 위험 부담이 커지면서, 올바른 AppSec 테스트 방식을 선택하는 것은 이제 선택이 아니라 생존의 문제입니다. 이 가이드는 다음 내용을 다룹니다: DAST vs SAST — 그것이 무엇인지, 어떻게 다른지, 어떻게 결합하는지.
애플리케이션 보안 테스트(AST)는 소프트웨어 애플리케이션의 보안 취약점을 식별, 분석, 해결하는 프로세스입니다. 현대적인 전략에는 여러 방법이 포함됩니다:
목표는 계층화된 커버리지입니다 — SDLC의 모든 단계에서 취약점을 찾아내는 것입니다. 이제 API가 가장 큰 공격 표면을 차지하고 있습니다. NIS2, DORA, DSGVO는 입증 가능한 보안 테스트를 의무화하고 있습니다.
소스 코드, 바이트코드, 바이너리 코드를 애플리케이션을 실행하지 않고 분석합니다. 기계 속도로 이뤄지는 보안 중심 코드 리뷰라고 생각하면 됩니다.
실행 중인 애플리케이션을 외부에서 테스트하며, 실제 공격을 시뮬레이션합니다. 소스 코드 접근 없이 이뤄집니다. 사실상 자동화된 침투 테스트입니다.
IAST는 테스트 중 코드 실행을 실시간으로 모니터링하는 에이전트로 실행 중인 애플리케이션을 계측합니다. SAST의 코드 수준 정밀도와 DAST의 런타임 컨텍스트를 결합해 낮은 오탐률 그리고 정확한 코드 위치를 모두 갖춥니다. 다만 에이전트 배포가 필요하고 성능 오버헤드가 발생하며, 실행된 코드 경로만 다룰 수 있습니다.
| 구분 | SAST | DAST |
|---|---|---|
| 테스트 방식 | 화이트박스(소스 코드) | 블랙박스(실행 중인 앱) |
| SDLC 적용 시점 | 초기 — 개발 단계 | 후반 — 배포 이후 |
| 소스 코드 필요 여부 | 예 | 아니요 |
| 실행 중인 앱 필요 여부 | 아니요 | 예 |
| 오탐률 | 높음(30~70%) | 낮음(5~15%) |
| 취약점 위치 | 정확한 파일 및 줄 번호 | URL, 파라미터, HTTP 요청 |
| 기술 의존성 | 언어별 분석기 필요 | 기술 독립적 |
| 런타임 이슈 | 탐지 불가 | ✅ 탐지 가능 |
| 코드 수준 이슈 | ✅ 탐지 가능 | 탐지 불가 |
| 서드파티 테스트 | 제한적(소스 코드 필요) | 실행 중인 모든 구성 요소를 테스트 |
| 컴플라이언스 | 시큐어 코딩 증거 | 런타임 보안 검증 |
SAST는 여러분의 코드에서 취약점을 찾아냅니다. DAST는 여러분의 애플리케이션에서 취약점을 찾아냅니다.
이 둘은 서로 경쟁하는 접근 방식이 아니라 상호 보완적입니다. SAST는 배포 전에 문제를 잡아내고, DAST는 실제로 실행되는 환경에서 보안을 검증합니다. 한 가지 방식에만 의존하는 조직은 상당한 사각지대를 남기게 됩니다.
[코드] → SAST → [빌드] → SCA → [배포] → DAST → [프로덕션] → 지속적 DAST
개발자는 병합 전에 수정합니다(시프트 레프트). 보안팀은 릴리스 전에 검증합니다(쉴드 라이트).
실시간 피드백을 위해 IDE에서 SAST를 실행합니다. 모든 풀 리퀘스트마다 실행됩니다. 개발자는 병합 전에 수정합니다. 기술 부채와 함께 보안 부채를 추적합니다.
통합된 코드베이스 전체에 SAST 스캔을 실행합니다. SCA는 취약한 종속성을 점검합니다. 컨테이너 이미지 스캐닝도 수행합니다. 자동화된 품질 게이트로, 치명적 취약점이 있으면 빌드가 실패합니다.
DAST는 배포된 스테이징 환경을 스캔합니다. 기능 QA 중에는 IAST 에이전트가 작동합니다. API 보안 테스트도 진행됩니다. 결과는 중복 제거를 위해 SAST 발견 사항과 연관 분석됩니다.
인증된 전체 DAST 스캔을 실행합니다. 컴플라이언스 검증 스캔도 진행합니다. 치명적/높음 심각도 취약점이 0건이어야 다음 단계로 진행할 수 있습니다.
예약된 DAST 스캔을 실행합니다. 공격 표면을 지속적으로 모니터링합니다. 새로운 취약점 발견 시 즉시 알림을 보냅니다. 결과는 우선순위가 지정된 티켓 형태로 개발팀에 피드백됩니다.
설치할 에이전트가 없습니다. 소스 코드 접근도 필요 없습니다. KENSAI는 마치 공격자처럼 외부에서 여러분의 애플리케이션을 테스트하여 몇 시간 안에 실행 가능한 결과를 제공합니다.
어느 쪽도 보편적으로 더 낫다고 할 수 없습니다. SAST는 정확한 파일/줄 참조와 함께 코드 수준의 문제를 초기에 찾아내는 데 뛰어납니다. DAST는 낮은 오탐률로 런타임 취약점을 찾아내는 데 뛰어납니다. 최고의 보안 프로그램은 둘 다 사용합니다 — 개발 단계에서는 SAST를, 스테이징/프로덕션 단계에서는 DAST를 사용하는 방식입니다.
DAST는 침투 테스터가 수동으로 수행하는 많은 점검을 자동화하지만, 수동 테스트를 완전히 대체할 수는 없습니다. DAST는 체계적이고 반복 가능한 스캐닝에 뛰어납니다. 침투 테스터는 창의성과 비즈니스 로직에 대한 이해를 더해줍니다. 지속적인 커버리지에는 DAST를, 주기적인 심층 평가에는 수동 침투 테스트를 활용하세요.
SAST: 30~70% (런타임 컨텍스트 없이 이론적 경로를 분석하기 때문입니다). DAST: 5~15% (실행 중인 앱을 실제로 익스플로잇하여 확인하기 때문입니다). DAST의 발견 사항은 일반적으로 신뢰도가 더 높고 즉시 조치하기에도 더 적합합니다.
SAST: 모든 코드 커밋 또는 풀 리퀘스트마다 실행하세요. DAST: 모든 프로덕션 릴리스 전에 실행하고, 이상적으로는 스테이징과 프로덕션을 대상으로 매주 또는 매월 실행하세요. NIS2와 DORA는 문서화된 정기적인 스캔 주기를 기대합니다.
보안은 선택이 아닙니다.
🗡️ KENSAI 팀