DAST(Dynamic Application Security Testing)는 웹 애플리케이션을 보호하려는 기업들에게 중요하다. 실제 사이버 공격을 모방하고 실시간으로 취약점을 노출하는 DAST의 능력은 사이버 보안 툴킷의 귀중한 자산이다. 지난 5년 동안 DAST의 인기가 눈에 띄게 증가했다.

AI 연구기관인 AI멀티플(AIMultiple)이 DAST의 중요성과 장단점, 투자 이유와 제한 사항에 대해 발표했다.

구글에서 'DAST'에 대한 검색 빈도 상승 (출처=구글 트렌드)
구글에서 'DAST'에 대한 검색 빈도 상승 (출처=구글 트렌드)

DAST의 정의

DAST(동적 애플리케이션 보안 테스트)는 웹 애플리케이션의 보안 취약점을 식별하는 데 사용되는 방법이다. 애플리케이션이 운영과 유사한 환경에서 실행되는 동안 외부에서 애플리케이션을 테스트한다는 점에서 접근 방식이 독특하다. 이 외부 애플리케이션 테스트 환경과 방법론을 통해 DAST는 해커가 사용할 수 있는 기술과 유사하게 애플리케이션에 대한 실제 공격을 시뮬레이션할 수 있다.

최신 소프트웨어 개발 방식, 특히 데브옵스 방법론을 따르는 방식에서 DAST는 CI/CD(지속적 통합/지속적 배포) 파이프라인에 통합될 수 있다. 이러한 통합은 애플리케이션의 수명주기 전반에 걸쳐 안전을 보장한다.

DAST의 장단점

DAST는 실제 공격자의 행동을 모방해 실제 보안 위협에 대한 애플리케이션의 방어력을 테스트하며, 애플리케이션의 소스 코드에 접근하지 않고도 사용할 수 있다.

응용 보안 프로그램 실행 중에만 나타나는 취약점을 찾는 데 효과적이며, 심도 있는 코딩 지식이 없는 사용자도 사용할 수 있고, 동적 테스트를 요구하는 규제 요구 사항을 충족하는 데 도움이 된다.

반면, DAST는 더 깊은 내부 취약성을 놓치고 외부 관점에서 볼 수 있는 식별된 취약성 문제만 감지하고, 소스 코드나 취약점의 정확한 원인에 대한 구체적인 통찰력을 제공하지 않는다.

개발 주기 후반에 취약점을 발견하는 경우가 많으며, 이로 인해 수정 비용이 증가할 수 있고, 잘못된 경고를 생성하거나 잘못된 긍정/부정이라고도 알려진 일부 취약점을 놓칠 수 있다. 테스트를 실행하면 실제 환경에서 애플리케이션 속도가 느려질 수 있다는 단점이 있다.

DAST 작동 방식

DAST는 웹 애플리케이션에 대한 외부 공격을 시뮬레이션해 보안 취약점을 파악하는 방식으로 작동한다. DAST의 일반적인 작동 방식은 다음과 같다.

① 대상 식별 : 처음에 DAST 도구는 테스트 대상이 무엇인지 알아야 한다. 일반적으로 웹 애플리케이션 또는 API 엔드포인트의 URL을 지정하는 작업이다.

② 크롤링 : DAST 도구는 검색 엔진과 마찬가지로 애플리케이션을 크롤링하는 것으로 시작된다. 애플리케이션의 웹 페이지와 기능을 탐색해 구조를 매핑하고 테스트할 수 있는 다양한 입력과 끝점을 파악한다.

③ 공격 시뮬레이션 : DAST 도구는 크롤링 중에 수집된 정보를 사용해 다양한 공격 시나리오를 시뮬레이션한다. 악성 데이터(예 : SQL 주입, XSS 페이로드 등)를 양식, URL 매개변수, 쿠키 및 헤더에 입력해 애플리케이션이 어떻게 응답하는지 테스트한다.

④ 응답 분석 : 시뮬레이션된 공격에 대한 애플리케이션의 응답을 분석한다. 애플리케이션이 오류 메시지를 반환하거나 예기치 않게 동작하거나 중요한 정보를 공개하는 경우 도구는 이를 잠재적인 취약점으로 표시한다.

⑤ 보고 : 테스트를 완료한 후 발견된 취약점을 자세히 설명하는 보고서를 생성한다. 이 보고서에는 각 취약점의 심각도, 해당 위치, 때로는 수정 제안 사항이 포함된다.

⑥ 재테스트 : 취약점이 수정된 후 DAST 도구를 다시 사용해 보안 문제가 적절하게 해결됐는지 확인한다.

DAST의 작동 방식 (자료 제공=AI멀티플)
DAST의 작동 방식 (자료 제공=AI멀티플)

DAST에 투자해야 하는 7가지 이유

DAST는 웹 애플리케이션의 동적인 측면을 해결하고 실제 공격 시나리오를 시뮬레이션해 보안 취약성을 파악하고 완화하며, 민감한 데이터를 보호하고 웹 서비스의 무결성과 가용성을 유지한다.

① 개발 수명 주기와 통합

DAST는 테스트 또는 배포 후와 같은 소프트웨어 개발 수명주기의 후반 단계에서 보안 코드에 통합될 수 있다. 이를 통해 애플리케이션의 수명주기 전반에 걸쳐 보안이 유지될 수 있다.

② 실제 공격 시뮬레이션

DAST 도구는 웹 애플리케이션에 대한 실제 공격을 시뮬레이션해 보안 상태에 대해 실질적으로 평가한다. 이 접근 방식은 악의적인 행위자가 악용할 수 있는 취약점을 식별하는 데 도움이 된다.

③ 규정 준수 및 규제 요구 사항

PCI DSS(Payment Card Industry Data Security Standard), HIPAA(Health Insurance Portability and Accountability Act), GDPR(General Data Protection Regulation) 등 많은 규정과 표준은 민감한 데이터를 처리하는 애플리케이션에 대한 정기적인 보안 테스트를 요구한다. DAST는 데이터 보안을 손상시킬 수 있는 취약성을 파악해 이러한 요구 사항 준수를 지원한다.

DAST는 실제 환경에서 보안 제어의 효율성을 테스트한다. 이는 배포된 보안 조치가 의도한 대로 작동하고 있다는 경험적 증거를 제공하므로 규정 준수에 필수적이다.

④ 포괄적인 적용 범위

DAST는 공개적으로 사용 가능한 인터페이스와 엔드포인트를 탐색해 외부에서 애플리케이션을 테스트할 수 있다. 이를 통해 사용자 인증, 세션 관리, 애플리케이션의 기타 동적 측면 문제와 같이 정적 분석만으로는 명확하지 않은 취약점을 찾아낼 수 있다.

⑤ 사용 편의성

DAST 도구는 일반적으로 사용하기 쉽고 소스 코드에 액세스할 필요가 없다. 따라서 복잡한 형태의 보안 테스트를 수행할 기술 전문 지식이 없는 조직에 편리하다.

⑥ 런타임 문제 파악

DAST는 실행 중인 상태에서 애플리케이션을 테스트하므로 런타임 중에만 나타나는 문제를 발견할 수 있다. 여기에는 애플리케이션과 다른 시스템의 상호 작용, 타사 구성 요소 사용, 다양한 유형의 입력에 대한 응답과 관련된 문제가 포함된다.

⑦ 다른 테스트 방법에 대한 보완

DAST는 애플리케이션 보안에 대한 더 포괄적인 보기를 제공하기 위해 정적 애플리케이션 보안 테스트(SAST) 및 대화형 애플리케이션 보안 테스트와 같은 기타 방법론과 함께 사용되는 경우가 많다. SAST가 잠재적인 취약점에 대해 소스 코드를 분석하는 반면, DAST는 실행 상태에서 애플리케이션을 테스트하여 다른 관점을 제공한다.

DAST의 제한 사항

여러가지 장점에도 불구하고 사용자는 DAST가 가진 제약 조건들을 알고 있어야 한다. 우선 DAST는 애플리케이션의 노출된 인터페이스만 테스트하기에 내부 코드에 대한 가시성이 제한적이다. 애플리케이션 코드의 내부 소스를 분석할 수 없어 외부 관점에서 볼 수 없는 취약점을 놓칠 수 있다.

DAST는 일반적으로 개발 후반 단계나 배포 후에도 사용되므로 취약점이 늦게 발견돼 수정하는 데 더 많은 비용과 시간이 소요될 수 있다. 가양성(애플리케이션의 양성 측면을 취약점으로 잘못 식별)과 가음성(실제 취약점을 감지하지 못함)을 생성할 수 있어 불필요한 작업이 발생하거나 보안 위험이 간과될 수 있다.

DAST는 SQL 주입과 XSS 같은 특정 취약점을 식별하는 데는 효과적이지만 비즈니스 논리 결함과 같은 더 복잡한 보안 문제를 탐지하는 데는 효율성이 떨어질 수 있다.

실행 중인 상태에서 애플리케이션을 테스트하기에 DAST 도구를 실행하면 애플리케이션 성능에 영향을 미칠 수 있다. 정상적인 운영을 방해하지 않도록 주의 깊게 관리해야 한다.

취약점이 존재함을 나타낼 수 있지만 코드의 정확한 위치를 정확히 찾아낼 수 없는 경우가 많다. 이로 인해 문제를 해결하고 수정하는 것이 더욱 어려워질 수 있다.

DAST의 효율성은 테스트 중인 애플리케이션의 특정 동적 동작에 따라 달라질 수 있으며, 이로 인해 테스트 결과에 불일치가 발생할 수 있고 애플리케이션 보안 취약점을 발견하는 데 방해가 될 수 있다.

관련기사

저작권자 © 지티티코리아 무단전재 및 재배포 금지