DAST 브라우저 기반 분석기

Tier: Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated
caution
DAST 버전 4 브라우저 기반 분석기는 GitLab 17.0에서 DAST 버전 5로 대체되었습니다. DAST 버전 5로 마이그레이션하는 방법에 대한 지침은 마이그레이션 가이드를 참조하세요.

브라우저 기반 DAST를 사용하면 웹 애플리케이션에서 보안 취약점 (CWEs)을 식별할 수 있습니다. 웹 애플리케이션을 배포한 후에는 새로운 유형의 공격에 노출될 수 있으며, 이 중 많은 공격은 배포 전에 감지할 수 없습니다. 예를 들어, 응용 프로그램 서버의 구성 오류 또는 보안 제어에 대한 부정확한 가정은 원본 코드에서는 보이지 않을 수 있지만, 브라우저 기반 DAST로 감지할 수 있습니다.

동적 애플리케이션 보안 테스트 (DAST)는 배포된 환경에서 이러한 취약점과 같은 응용 프로그램을 조사합니다.

개요는 동적 애플리케이션 보안 테스트 (DAST)를 참조하세요.

caution
DAST 스캔을 프로덕션 서버에 실행하지 마십시오. 사용자가 할 수 있는 모든 기능을 수행할 뿐만 아니라 버그를 유발하여 프로덕션 데이터를 수정하거나 손실을 유발할 수 있습니다. DAST 스캔을 테스트 서버에서만 실행하십시오.

DAST 브라우저 기반 분석기는 GitLab에서 현대적인 웹 애플리케이션의 취약점을 스캔하기 위해 개발되었습니다. 스캔은 브라우저에서 실행되어 JavaScript에 크게 의존하는 애플리케이션을 최적화합니다. 자바스크립트에 크게 의존하는 단일 페이지 애플리케이션과 같은 애플리케이션을 효과적으로 테스트하고자 합니다. 자세한 내용은 DAST가 어떻게 애플리케이션을 스캔하는지를 참조하세요.

분석기를 CI/CD 파이프라인에 추가하려면 분석기를 활성화를 참조하세요.

DAST가 애플리케이션을 스캔하는 방법

스캔은 다음 단계를 수행합니다:

  1. 인증하십시오 (구성되어 있는 경우).
  2. 대상 애플리케이션을 크롤하여 링크를 따라가거나 버튼을 클릭하거나 양식을 작성하는 등의 사용자 조작을 수행하여 애플리케이션의 표면 영역을 발견합니다.
  3. 크롤 중에 발견된 페이지에서 취약점을 찾기 위한 매뉴얼 스캔을 수행합니다.
  4. 크롤 중에 기록된 HTTP 요청에 공격 페이로드를 삽입하여 능동 스캔을 수행합니다.

애플리케이션 크롤링

“네비게이션”은 사용자가 버튼을 클릭하거나 앵커 링크를 클릭하거나 메뉴 항목을 열거나 양식을 작성하는 등의 작업입니다. “네비게이션 경로”는 사용자가 애플리케이션을 탐색할 수 있는 방식을 나타내는 네비게이션 작업의 시퀀스입니다. DAST는 특별히 조작된 Chromium 브라우저에서 대상 애플리케이션의 URL을로드하는 네비게이션 경로를 포함하여 표면 영역을 발견합니다. 그런 다음 DAST는 모든 네비게이션 경로가 크롤될 때까지 네비게이션 경로를 크롤링합니다.

네비게이션 경로를 크롤링하려면 DAST가 브라우저 창을 열고 해당 네비게이션 경로의 모든 네비게이션 작업을 수행하도록 지시합니다. 브라우저가 최종 작업 결과를로드하는 것을 완료하면 DAST는 사용자가 수행할 수 있는 작업을 페이지에서 검토하고 찾은 각 작업에 대해 새로운 네비게이션을 만들고 새로운 네비게이션 경로를 형성하기 위해 이를 네비게이션 경로에 추가합니다. 예를들어:

  1. DAST는 네비게이션 경로 LoadURL[https://example.com]을 처리합니다.
  2. DAST는 LeftClick[class=menu]LeftClick[id=users]라는 두 가지 사용자 작업을 찾습니다.
  3. DAST는 LoadURL[https://example.com] -> LeftClick[class=menu]LoadURL[https://example.com] -> LeftClick[id=users] 두 개의 새로운 네비게이션 경로를 생성합니다.
  4. 크롤링이 두 개의 새 네비게이션 경로에서 시작됩니다.

메뉴의 경우와 같이 응용 프로그램의 여러 위치에 HTML 요소가 존재하는 것이 일반적입니다. 중복된 요소는 크롤러가 동일한 페이지를 다시 크롤하거나 루프에 갇히는 것을 유발할 수 있습니다. DAST는 HTML 속성을 기반으로한 요소의 고유성 계산을 사용하여 이전에 크롤한 새 네비게이션 작업을 폐기합니다.

매뉴얼 스캔

매뉴얼 스캔은 크롤 단계에서 발견된 페이지에서 취약점을 확인합니다. 매뉴얼 스캔은 기본적으로 활성화되어 있습니다.

이러한 확인은 HTTP 메시지, 쿠키, 스토리지 이벤트, 콘솔 이벤트 및 DOM을 검사합니다. 사용자 이벤트의 부재 확인, 노출된 신용 카드, 노출된 시크릿 토큰, 부재한 내용 보안 정책 및 신뢰할 수 없는 위치로의 리디렉션과 같은 매뉴얼 확인의 예시를 들 수 있습니다.

개별 확인에 대한 자세한 내용은 확인을 참조하세요.

능동 스캔

능동 스캔은 스캔 단계 중에 기록된 HTTP 요청에 공격 페이로드를 삽입하여 취약점을 확인합니다. 능동 스캔은 그들의 탐사적 공격의 성격 때문에 기본적으로 비활성화되어 있습니다.

DAST는 기록된 각 HTTP 요청을 주입 위치 (쿼리 값, 헤더 값, 쿠키 값, 양식 게시 및 JSON 문자열 값 등)에 대해 분석합니다. 공격 페이로드는 삽입 위치에 주입되어 새로운 요청을 형성합니다. DAST는 요청을 대상 애플리케이션에 전송하고 HTTP 응답을 사용하여 공격 성공을 결정합니다.

능동 스캔에서 두 가지 유형의 능동 검사가 실행됩니다:

  • 일치 응답 공격은 응답 내용을 분석하여 공격 성공을 결정합니다. 예를들어, 공격이 시스템 패스워드 파일을 읽도록 시도하는 경우 응답 본문에 패스워드 파일의 증거가 포함되어 있으면 결과가 생성됩니다.
  • 타이밍 공격은 응답 시간을 사용하여 공격 성공을 결정합니다. 예를들어, 공격이 대상 애플리케이션을 자다게 하도록 시도하는 경우 응용 프로그램의 응답 시간이 자다게 하려는 시간보다 길 경우 결과가 생성됩니다. 타이밍 공격은 잘못된 양성을 줄이기 위해 다양한 공격 페이로드로 여러 번 반복됩니다.

간단한 타이밍 공격은 다음과 같이 작동합니다:

  1. 크롤 단계는 HTTP 요청 https://example.com?search=people을 기록합니다.
  2. DAST는 URL을 분석하고 URL 매개변수 주입 위치 https://example.com?search=[INJECT]를 찾습니다.
  3. 능동 검사는 sleep 10으로 시스템을 수면 상태로 만들으려는 페이로드를 정의합니다.
  4. DAST는 주입된 페이로드 https://example.com?search=sleep%2010와 함께 대상 애플리케이션에 새 HTTP 요청을 보냅니다.
  5. 대상 애플리케이션이 시스템 명령을 확인 없이 쿼리 매개변수 값을 실행하는 경우 취약하며, 예를 들어 system(params[:search])과 유사합니다.
  6. 응답 시간이 10초보다 길면 DAST는 결과를 생성합니다.