DAST 브라우저 기반 분석기

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

브라우저 기반 DAST를 사용하면 웹 애플리케이션에서 보안 취약점(CWE)을 식별할 수 있습니다. 웹 애플리케이션을 배포한 후에는 새로운 유형의 공격을 받게 되며, 이 중 많은 것들은 배포 전에는 감지되지 않을 수 있습니다. 예를 들어, 애플리케이션 서버의 잘못된 구성이나 보안 제어에 대한 부정확한 가정은 소스 코드에서는 보이지 않지만 브라우저 기반 DAST로 감지할 수 있습니다.

Dynamic Application Security Testing (DAST)는 배포된 환경에서 애플리케이션을 취약점으로부터 조사합니다.

개요는 Dynamic Application Security Testing (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 파라미터 삽입 위치 https://example.com?search=[INJECT]을 분석합니다.
  3. 능동 체크는 sleep 10이 Linux 호스트를 재우기 위한 페이로드로 정의합니다.
  4. DAST는 삽입된 페이로드 https://example.com?search=sleep%2010으로 대상 애플리케이션에 새 HTTP 요청을 보냅니다.
  5. 대상 애플리케이션이 시스템 명령을 검증하지 않고 쿼리 매개변수 값을 실행하려는 경우, 취약점이 있습니다.
  6. DAST는 응답 시간이 10초보다 길면 결과를 생성합니다.