본문 바로가기
IT학술탐구

애플리케이션 보안 테스트(DAST/SAST)의 개념과 설정 및 테스트 방법

by IT라이프왕 2024. 10. 10.

현대의 IT 환경에서는 애플리케이션 보안이 그 어느 때보다 중요한 이슈로 떠오르고 있습니다. 웹 애플리케이션이나 모바일 앱은 기업의 중요한 자산이며, 해커들은 이러한 애플리케이션의 취약점을 노려 공격을 시도합니다. 따라서 애플리케이션이 개발되는 모든 과정에서 보안 테스트를 통해 잠재적인 취약점을 찾아내는 것이 필수적입니다. 이번 글에서는 대표적인 애플리케이션 보안 테스트 방법인 DAST(동적 애플리케이션 보안 테스트)와 SAST(정적 애플리케이션 보안 테스트)에 대해 살펴보고, 설정 및 테스트 방법을 자세히 알아보겠습니다.

애플리케이션 보안 테스트


애플리케이션 보안 테스트 DAST와 SAST의 개념

1. DAST(동적 애플리케이션 보안 테스트)

'DAST(Dynamic Application Security Testing)'는 애플리케이션이 실행 중인 상태에서 취약점을 탐지하는 보안 테스트 방법입니다. DAST는 주로 웹 애플리케이션이나 API를 대상으로 하며, 외부 공격자의 시각에서 시스템을 분석하여 잠재적인 보안 문제를 찾아냅니다. 이 방법은 실제로 애플리케이션이 동작하는 동안 보안 취약점을 발견하기 때문에 실시간 공격 시나리오에 가까운 결과를 제공합니다.

특징:

  • 애플리케이션이 실행 중일 때만 테스트 가능.
  • 공격자의 관점에서 보안 문제를 분석.
  • 코드 수준의 취약점보다는 런타임 취약점에 집중.

2. SAST(정적 애플리케이션 보안 테스트)

'SAST(Static Application Security Testing)'는 애플리케이션의 소스 코드나 바이너리 파일을 분석하여 취약점을 찾는 방법입니다. 이 방법은 코드 작성 단계에서 보안 문제를 발견할 수 있기 때문에 개발 초기 단계에서 문제를 해결할 수 있는 장점이 있습니다. SAST는 소스 코드 내부의 논리적 결함이나 잘못된 보안 설정 등을 탐지하는 데 유용합니다.

특징:

  • 소스 코드가 존재할 때만 실행 가능.
  • 개발 초기 단계에서 보안 문제를 발견.
  • 코드 내부의 논리적 결함 및 잘못된 설정 등을 분석.

DAST와 SAST 비교

구 분 DAST(동적 애플리케이션 보안 테스트) SAST(정적 애플리케이션 보안 테스트)
테스트 시점 애플리케이션이 실행 중일 때 소스 코드가 작성된 단계에서
분석 대상 애플리케이션의 실행 중 동작 및 취약점 소스 코드, 바이너리, 컴파일된 코드
결과 제공 방식 런타임 환경에서 발생하는 보안 문제 코드 내부의 보안 취약점 및 논리적 결함 탐지
적용 사례 웹 애플리케이션, API 보안 테스트 개발 초기 단계의 애플리케이션 보안 테스트
테스트 유형 블랙박스 테스트(외부 관점에서 분석) 화이트박스 테스트(내부 코드 분석)
주요 탐지 취약점 SQL 인젝션, XSS(교차 사이트 스크립팅) 등 잘못된 인증, 보안 설정 누락, 코드 결함 등

 

DAST와 SAST는 상호 보완적인 방식으로 활용될 수 있습니다. SAST는 개발 초기 단계에서 소스 코드의 보안 문제를 해결하는 데 효과적이며, DAST는 애플리케이션이 완전히 개발된 후 실제 환경에서 발생할 수 있는 보안 위협을 탐지하는 데 유용합니다.


DAST(동적 애플리케이션 보안 테스트) 설정 및 테스트 방법

DAST를 실행하기 위한 설정 및 테스트 과정은 다음과 같습니다.

1. 테스트 환경 설정

  • 실행 중인 애플리케이션 준비: DAST는 실행 중인 애플리케이션에서만 테스트가 가능하므로, 테스트 환경에서 애플리케이션을 실제로 실행해야 합니다.
  • 네트워크 설정 확인: 테스트 도구가 네트워크 트래픽을 분석할 수 있도록, 필요한 네트워크 설정을 구성합니다.
  • 보안 취약점 스캐너 설치: DAST 도구를 설치하고, 웹 애플리케이션의 URL이나 API 엔드포인트를 입력하여 테스트를 시작할 수 있습니다. 예를 들어, OWASP ZAP이나 Burp Suite 같은 도구를 사용할 수 있습니다.

2. 보안 스캔 수행

DAST 도구는 자동으로 애플리케이션의 여러 취약점을 스캔합니다. 주요 탐지 항목은 다음과 같습니다.

  • SQL 인젝션: 데이터베이스와의 통신 과정에서 발생할 수 있는 취약점.
  • XSS(교차 사이트 스크립팅): 클라이언트 측에서 악성 스크립트가 실행될 수 있는 취약점.
  • CSRF(사이트 간 요청 위조): 사용자의 권한을 도용해 의도하지 않은 요청을 보내는 공격.

3. 테스트 결과 분석 및 수정

DAST 도구가 제공하는 보고서를 분석하여 발견된 보안 취약점을 수정합니다. DAST는 실행 중인 애플리케이션을 대상으로 하므로, 발견된 취약점은 개발팀과 협력하여 코드 및 설정을 수정해야 합니다.


SAST(정적 애플리케이션 보안 테스트) 설정 및 테스트 방법

SAST는 코드 레벨에서의 보안 문제를 찾기 위해 사용되며, 이를 설정하고 테스트하는 과정은 다음과 같습니다.

1. 테스트 도구 설정

  • SAST 도구 선택: SAST 도구로는 SonarQube, Checkmarx, Veracode 같은 도구들이 있습니다. 이러한 도구들은 소스 코드를 분석하고 보안 취약점을 탐지합니다.
  • 코드 리포지토리와 연결: SAST 도구를 소스 코드 리포지토리(Git 등)와 연결하여 코드를 자동으로 스캔할 수 있도록 설정합니다.

2. 코드 분석 및 취약점 탐지

SAST 도구는 코드 내부를 분석하여 보안 취약점을 탐지합니다. 주요 탐지 항목은 다음과 같습니다.

  • 인증 및 권한 관리 오류: 잘못된 사용자 인증 및 권한 관리로 인한 취약점.
  • 입력값 검증 부족: 사용자로부터 입력받은 데이터를 적절히 검증하지 않아 발생하는 보안 문제.
  • 취약한 암호화 알고리즘 사용: 강력하지 않은 암호화 알고리즘을 사용하는 경우의 취약점.

3. 보안 문제 수정 및 재검토

SAST 도구가 제공하는 보고서를 분석하여 코드 수정이 필요한 부분을 파악합니다. 개발팀은 수정 작업을 진행하며, 수정된 코드가 다시 SAST를 통해 검토되어야 합니다. 이 과정은 보안 문제를 개발 단계에서 해결함으로써, 최종 애플리케이션 배포 전 더 많은 보안 문제를 방지할 수 있습니다.


DAST와 SAST 통합 전략

DAST와 SAST는 각각의 장단점을 가지며, 이를 효과적으로 통합함으로써 애플리케이션의 전반적인 보안성을 높일 수 있습니다. 다음은 DAST와 SAST를 통합한 보안 전략입니다.

통합 전략 설 명
초기 개발 단계 개발 초기에 SAST를 통해 코드 수준에서 보안 문제를 해결합니다.
테스트 단계 애플리케이션이 실행되는 테스트 환경에서 DAST를 통해 런타임 보안 문제를 점검합니다.
지속적인 통합 CI/CD 파이프라인에 SAST와 DAST를 통합하여, 코드 변경 시마다 자동으로 보안 테스트를 실행합니다.

애플리케이션 보안은 오늘날의 IT 환경에서 매우 중요한 요소입니다. DAST와 SAST는 각각의 테스트 방식에서 발견할 수 있는 보안 취약점이 다르므로, 상호 보완적인 접근이 필요합니다. DAST는 애플리케이션이 실제로 실행될 때 발생할 수 있는 보안 위협을 탐지하고, SAST는 코드 작성 단계에서 발생할 수 있는 보안 문제를 미리 해결할 수 있게 도와줍니다. 기업은 두 가지 테스트 방식을 통합하여 애플리케이션 보안을 강화하고, 해커의 위협으로부터 애플리케이션과 데이터를 안전하게 보호해야 할 것입니다.