본문 바로가기

POST/Tech

SAST vs. DAST: 애플리케이션 보안 강화

 

보안 위협이 다변화되면서, 기업은 소프트웨어 애플리케이션에 대한 보안을 강화해하는 과제를 생겼습니다.

 

소프트웨어 엔지니어가 코딩 가이드라인을 엄격히 준수함에도 취약성과 맬웨어는 프로덕션 코드에서 발견될 수 있습니다. 이런 냉혹한 현실이 취약성에 대한 소프트웨어 보안을 강화하기 위한 ‘애플리케이션 보안 테스트’를 더욱 강조하게 되었습니다.

 

애플리케이션 보안 테스팅에는 다음과 같은 방법론이 존재합니다:

  • 정적 애플리케이션 보안 테스트 (Static Application Security Testing, SAST)
  • 동적 애플리케이션 보안 테스트 (Dynamic Application Security Testing, DAST)
  • 대화형 애플리케이션 보안 테스트 (Interactive Application Security Testing, IAST)
  • 런타임 애플리케이션의 자체 보호 (Runtime Application Self Protection, RASP)

4 가지 방법론 모두 소프트웨어 개발 수명주기(SDLC)에서 조금씩 다른 영역과 단계에 대한 애플리케이션 보안을 강화하고 있습니다. 이번 블로그에서는 정적 애플리케이션 보안 테스트인 SAST와 동적 애플리케이션 보안 테스트인 DAST 에 대해 집중적으로 알아보려고 합니다.

 

애플리케이션 보안에서 SAST 와 DAST 역할과 각 방법론의 핵심 개념, 장점과 제약에 대해 이야기하려고 합니다. 또, 위협이 점점 증가하는 환경에서 이 방법론이 데브섹옵스 파이프라인과 통합되어 지속적으로 보안을 유지하고 강화하는지 확인해 보겠습니다.

 

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

SAST 란 무엇인가?

SAST는 애플리케이션의 소스코드와 근간이 되는 소프트웨어 구성요소를 분석하는 방법론입니다. 화이트박스 테스트 기법으로 테스터에게 검증되는 애플리케이션의 소스코드와 설계 문서를 포함하여 완전한 정보를 제공하는 분석 방식입니다.

 

이 테스트는 SDLC의 초기 단계에 자리하며, 특히 코드가 컴파일 혹은 배포되기 전의 단계에 이뤄집니다. SAST 를 통해 소스코드와 환경설정 파일 및 개발 아티팩트 전체를 스캔할 수 있으며 잠재된 보안 취약성과 코딩 오류를 발견할 수 있습니다.

 

SAST 는 왜 중요한가?

SAST는 애플리케이션의 구조와 로직에 대한 심도깊은 분석을 제공합니다.

 

내부의 코드 기반 분석을 통해 SAST 툴은 다음의 취약성을 파악할 수 있습니다:

  • SQL 인젝션
  • 크로스 사이트 스크립팅 (XSS)
  • 보안되지 않은 인증 메카니즘

이런 형태의 내부에서 외부로 접근 방식은 소프트웨어 엔지니어와 보안팀이 문제의 근원을 정확히 짚어내고 적극적으로 대응할 수 있도록 하며, 런타임 환경으로 전파되는 것을 방지합니다.

 

SAST의 또 다른 중요한 기능은 개발 단계의 매우 초기에 취약성을 파악할 수 있다는 점입니다. 코딩과 설계 단계에서 보안 결함을 발견함으로써 SAST는 소프트웨어가 보안을 고려하여 개발되었다는 것을 보장할 수 있습니다.

 

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

DAST 란 무엇인가?

 

DAST는 런타임 환경에서 운영중인 애플리케이션을 분석하는 방법으로 애플리케이션을 외부인의 관점에서 검토하고 잠재적 공격자의 입장을 모방합니다. 이 방식은 블랙 박스 테스트 기법으로 애플리케이션의 내부 아키텍처 혹은 소스코드에 대한 정보가 제한적이거나 없는 상태로 테스트가 이뤄집니다.

 

DAST 툴은 애플리케이션과 거의 현실 세계와 동일한 방식으로 상호작용하며 리퀘스트를 보내고 대응을 분석하여 어플리케이션의 악용을 찾아냅니다.

 

SAST와 다르게 DAST는 애플리케이션의 소스코드에 대한 액세스를 요구하지 않습니다. 소스코드가 제공되지 않는 서드 파티 혹은 레거시 애플리케이션을 테스트하는데 매우 유용한 기술입니다.

 

DAST는 런타임 상에서 다음의 취약성을 파악할 수 있습니다:

  • 세션 관리 이슈
  • 환경설정 오류
  • 서버측 취약성

왜 DAST 가 중요한가?

 

DAST는 공격자들이 악용할 만한 현실 세계의 위협과 잠재 취약성 발견하는데 핵심적인 역할을 담당합니다. 애플리케이션의 보안 상태를 현실 세계와 동일한 조건에서 검토하여 담당팀에게 노출되어 있는 외부 공격에 대한 깊이 있는 이해를 제공합니다. DAST는 외부 관점에서 공격을 시뮬레이션하고 보안 상태에 대한 통찰력을 얻는 중요한 수단입니다.

 

SAST와 DAST의 차이점

SDLC 적용 단계

 

SAST는 설계와 코딩을 포함한 SDLC의 런타임 이전 단계에 적용되며 코드가 배포되기 전에 취약성을 발견하는 것을 돕습니다.

DAST는 런타임 취약성을 분석하는데 적절하며 애플리케이션이 배포되고 활성되어 운영되는 프로덕션 이후 환경에 적합합니다.

 

발견가능한 취약성의 종류

 

SAST는 코드의 질, 즉 코드 인젝션, 안전하지 않은 데이터 스토리지와 인증 이슈와 관련된 취약성을 파악하는데 뛰어납니다. 보안 취약성을 야기할 수 있는 설계 오류를 발견하는데에도 뛰어납니다.

 

DAST는 런타임에서 발견될 수 있는 취약성을 발견하며 어플리케이션의 환경설정, 세션 관리 및 외부 상호작용으로 인한 위협을 발견하는데 적합합니다.

 

  SAST DAST
장점 초기 취약성 발견으로 수정작업 비용과 시간 절감 현실 세계 위협 시뮬레이션하여 실제 운영 시 발생가능한 위협에 대한 인사이트 제공
소스코드의 깊이 있는 분석으로 코드의 질, 구조, 잠재 보안이슈 발견에 탁월 세션 관리 이슈, 서버 설정오류 및 런타임 관련 이슈 등 런타임 취약성 발견
개발 단계에 통합되어 코드 작성과 동시에 검토 가능 소스코드에 대한 접근 불필요하여 서드 파티 및 레거시 애플리케이션 분석에 적합
런타임 분석에서는 발견하기 힘든 설계 오류 파악 및 아키텍처 취약성 발견 환경설정 문제로 야기된 취약성 파악 가능
단점 정적 코드 분석 중심의 기법으로 런타임 취약성에 대한 커버리지 미약 애플리케이션의 내부 로직에 대한 가시성 부족
때때로 거짓 긍정 오류로 인한 검증 리소스 투입 애플리케이션의 동작방식, 데이터 오류, 특정 의존성에 대한 취약성을 파악하기 어려움
소스코드에 대한 액세스가 필요하며 서트파티나 레거시 애플리케이션 적용 어려움 오프라인 혹은 개발 환경상의 애플리케이션 취약성은 파악하기 어려움

 

 

데브섹옵스에 SAST와 DAST 통합

애플리케이션 안전한 개발과 배포를 위해 데브옵스 파이프라인에 보안이 통합되는 것은 매우 중요합니다.

 

CI/CD 파이프라인 통합

 

지속적인 보안 검토를 위해 SAST와 DAST 를 CI/CD 파이프라인에 통합해야 합니다. CI/CD 오케스트레이션 툴의 적절한 활용을 통해 보안 스캔을 개발과 배포 워크플로우에 자연스럽게 통합할 수 있습니다.

 

자동화가 핵심

 

코든 코드 커밋과 배포에 대해 자동으로 SAST 와 DAST 스캔이 이뤄지도록 합니다. CI/CD 파이프라인 상에서 스크립트와 환경설정을 통해 가능합니다.

 

SAST 툴 활용

 

SAST를 적용하려며 정적코드 분석과 코드 리뷰 개념이 고려되어야 합니다. 이런 프로세스는 소스코드를 분석하여 잠재된 취약성과 위협을 초기 단계에 발견할 수 있으며 안전한 코딩 관행에 중요한 요소로 자리잡을 수 있게 됩니다.

 

일원화된 리포팅과 해결방안

 

SAST와 DAST 스캔으로 발견된 결과를 하나의 통합된 리포트로 제공하세요. 취약성과 우선순위에 대한 단일화된 뷰를 제공하여 수정 과정을 간결하게 만들 수 있습니다.

 

시프트 레프트 보안

 

개발의 시작부터 보안을 핵심으로 간주하는 ‘시프트 레프트’ 개념을 포용합니다. 개발자가 보안 테스팅 개념을 코딩과 설계 단계에 적용하도록 장려하여 코드 기반에 보안 취약성이 유입될 수 있는 가능성을 최소화합니다.

 

일원화된 접근 방식의 장점

 

데브섹옵스 파이프라인에 단일화된 SAST와 DAST를 모두 적용할 경우 완전한 보안이 가능해 집니다. SAST가 초기 취약성 발견과 소스코드 분석에 집중한다면 DAST는 현실 세계 테스트 시나리오를 적용해 줍니다.

 

보안이 강화된 소프트웨어 개발을 위한 단일화된 접근

 

두 방법론, SAST와 DAST가 함께 적용되면 애플리케이션 보안 전체를 볼 수 있게 되며 발견되지 않은 취약성이 프로덕션 환경으로 전파되는 위험을 줄일 수 있습니다. SAST 문제를 개발 단계의 초기에 발견하며, DAST는 현실 세계 테스트 시나리오를 제공합니다.

 

두 방법론의 장점이 명확하며 데브섹옵스 파이프라인에 통합되어 애플리케이션 보안을 전체적으로 강화해줍니다. 이런 일원화된 접근방식은 보안 취약성의 위협을 감소해줄 뿐만 아니라 조직이 더 안전한 소프트웨어를 고객에게 제공한다고 확신할 수 있게 해 줍니다.

 

이렇게 서로 보완되는 방법을 데브섹옵스 워크플로우에 적용함으로써 조직은 애플리케이션 보안 상태를 강화하고 더 안전한 소프트웨어를 사용자에게 제공할 수 있습니다.

 

 

원문보기: SAST vs. DAST: Enhancing application security

 

참고자료:

The Synergies with SAST and DAST: Your Questions Answered

Cloud DevSecOps: what it is, benefits and tools