SAST는 애플리케이션 소스 코드나 중간 표현을 실행하지 않은 상태에서 분석해 잠재적인 보안 문제를 찾습니다. DAST는 실행 중인 애플리케이션의 외부 인터페이스와 상호작용하며 응답과 동작을 시험합니다. 따라서 코드를 가지고 있는지, 실행 환경을 시험하는지로 구분하면 빠르게 답할 수 있습니다.

둘은 서로 다른 단서를 얻으며 어느 한쪽도 모든 위험을 찾아내거나 다른 쪽을 대체하지 않습니다. 아래 입력 기능과 질문은 교육용으로 새로 만든 가상 사례이며 공식 기출이나 판매 카드 문항이 아닙니다.

SAST는 실행 전에 코드의 구조와 흐름을 살핍니다

OWASP Developer Guide는 SAST를 소스 코드의 잠재적 보안 문제를 분석하고 찾는 기법으로 설명합니다. 코드가 실행되는 동안 요청을 보내지 않고 코드의 텍스트나 중간 표현에서 데이터 흐름, 위험한 함수 호출, 검증 누락 같은 패턴을 검사할 수 있습니다. 그래서 개발 초기나 코드 변경 검토 때 빠르게 피드백을 주는 데 활용됩니다. 그러나 실행 환경의 전체 구성, 실제 배포 설정, 외부 서비스 응답을 모두 알고 있는 것은 아닙니다. 분석기는 규칙에 따라 잠재 문제를 표시하므로 사람이 맥락을 검토해야 합니다. OWASP는 finding을 실제 취약점으로 자동 간주하지 말고, 수동 검토나 다른 검사 방법으로 보완해야 한다고 안내합니다.

DAST는 실행 중인 앱에 외부에서 상호작용합니다

DAST는 이미 실행되는 애플리케이션의 웹 인터페이스에 요청을 보내고 응답이나 동작을 살펴 잠재 취약점을 찾는 방식입니다. OWASP 안내에서는 DAST 도구가 소스 코드를 보지 않고 외부에서 블랙박스 방식으로 검사할 수 있다고 설명합니다. 이 특성은 서버가 실제로 응답하는 경로와 배포 환경에서의 일부 문제를 확인하는 데 유용하지만, 관측할 수 없는 내부 코드나 요청으로 접근하지 않은 기능은 놓칠 수 있습니다. 자동 검사기는 기능별 사용자 의도나 복잡한 업무 규칙을 충분히 이해하지 못할 수 있어 사람의 수동 평가가 필요할 때도 있습니다. 테스트 요청이 실제 데이터를 바꾸거나 서비스를 방해하지 않도록 승인된 시험 환경, 계정, 범위를 설정해야 합니다.

같은 검색 기능을 두 검사 관점으로 나눕니다

교육용 웹 서비스에 상품 검색창이 있다고 가정하겠습니다. SAST 담당자는 저장소의 코드에서 입력값이 어디서 들어오고, 검색 처리 함수까지 어떤 경로를 거치며, 데이터베이스 쿼리에서 어떤 방식으로 사용되는지 살펴봅니다. DAST 담당자는 승인된 테스트 앱의 검색창에 허용된 테스트 입력을 넣고, 응답과 오류 처리, 화면 동작을 관찰합니다. 첫 활동은 코드가 어떤 구조를 갖는지에 관한 단서를 제공하고, 두 번째는 실제 실행 인스턴스가 정해진 요청에 어떻게 반응했는지 보여 줍니다. 서로 다른 검사 결과가 불일치한다면 환경 차이, 실행 경로, 입력 검증, 배포 버전을 점검할 수 있습니다. 어느 한쪽의 결과를 다른 쪽의 증거인 것처럼 바꾸어 쓰지 않습니다.

동일 기능에 대한 두 검사 방식의 차이입니다.
비교 축SASTDAST
주요 대상소스 코드 또는 코드 표현실행 중인 애플리케이션
검사 시점코드 실행 없이 분석테스트 앱과 상호작용
얻는 단서코드 경로, 잠재 패턴, 위험 함수 사용요청에 대한 응답과 실행 시 동작
주의할 빈틈배포 설정·외부 환경·런타임 조건을 모를 수 있음접근하지 않은 경로·내부 코드·복잡한 논리를 놓칠 수 있음

검사 결과가 답하려는 질문을 먼저 정합니다

  1. 코드가 준비되어 있고 변경 지점의 잠재 위험을 빠르게 검토하려면 SAST가 제공하는 코드 단서를 확인합니다.
  2. 실행 환경의 응답이나 배포 경로가 관심사라면 승인된 테스트 환경에서 DAST 방식으로 관찰할 수 있는 범위를 정합니다.
  3. 두 결과의 자산·코드 버전·설정이 일치하는지 확인하고 서로 다른 시점의 결과를 한 시스템의 단일 사실처럼 합치지 않습니다.
  4. 자동 finding은 검토 대상으로 두고 실제 영향, 업무 논리, 도달성은 적절한 추가 검토로 확인합니다.

SAST는 코드만 보고 DAST는 앱만 보면 끝난다고 단순화하지 마세요

SAST가 코드에서 경고를 냈다고 실행 환경에서 같은 문제가 나타난다고 확정할 수 없고, DAST에서 문제가 재현되지 않았다고 소스 코드에 위험한 경로가 전혀 없다고 단정할 수도 없습니다. 각 도구가 접근한 정보와 시험한 조건이 다르기 때문입니다. OWASP는 SAST가 모든 위험 유형을 다루지 못하며 SCA, DAST, 수동 검토 같은 방식이 보완적으로 쓰일 수 있다고 안내합니다. 따라서 질문에 답할 때는 ‘코드를 실행 없이 분석’과 ‘실행 앱의 외부 동작 시험’이라는 핵심 차이를 먼저 적고, 그 뒤 각 방식이 확인하지 못한 범위를 한 가지씩 덧붙이면 충분합니다. 특정 제품의 정확도나 전체 커버리지는 이 가이드만으로 주장하지 않습니다.

회상 연습: 입력 기능을 보고 방식을 고릅니다

예시 답: 저장소 코드와 입력 경로를 실행 없이 분석한 첫 작업은 SAST입니다. 실행 서버의 인터페이스에 요청을 보내 실제 응답을 관찰한 두 번째 작업은 DAST입니다. 핵심은 ‘보안 검사를 했다’는 명칭이 아니라 검토한 대상과 상호작용 여부입니다. 답안을 한 단계 더 정확하게 쓰려면 첫 검사는 소스의 잠재 문제를, 두 번째 검사는 특정 시험 앱이 시험 입력에 보인 동작을 확인했다고 범위를 제한하세요. 두 검사 모두 자동 결과를 검증된 전체 결론이라고 취급하지 않습니다.

정답을 가리고 확인해 보세요

이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.

소스 코드의 입력 검증 흐름을 실행 없이 분석하는 작업과, 시험 서버의 웹 기능에 요청을 보내 응답을 살피는 작업을 각각 무엇이라 하는지 답하시오.

정답과 해설 확인코드의 정적 분석은 SAST이고, 실행 중 애플리케이션의 외부 동작 시험은 DAST이다.

OWASP Developer Guide는 SAST를 코드에서 잠재 문제를 찾는 분석으로, DAST를 실행 앱의 웹 프런트엔드와 상호작용하는 검사로 설명하며 둘을 상호보완 기법으로 다룬다.

이 주제의 회상 연습 이어가기