DAST 온디맨드 스캔

Tier: Ultimate Offering: GitLab.com, Self-Managed형, GitLab Dedicated
caution
프로덕션 서버에 대해 DAST 스캔을 실행하지 마십시오. 사용자가 할 수 있는 모든 기능을 수행할 뿐만 아니라 버튼을 클릭하거나 양식을 제출하는 것과 같이 버그를 유발하여 프로덕션 데이터의 수정 또는 손실로 이어질 수 있습니다. 테스트 서버에서만 DAST 스캔을 실행하십시오.

온디맨드 스캔

온디맨드 DAST 스캔은 DevOps 라이프사이클 외부에서 실행됩니다. 리포지터리의 변경 사항으로 스캔이 트리거되지 않습니다. 스캔을 매뉴얼으로 시작하거나 실행할 수 있어야 합니다. 온디맨드 DAST 스캔에서는 사이트 프로필이 무엇을 스캔할지를 정의하고, 스캐너 프로필이 어떻게 응용 프로그램을 스캔할지를 정의합니다.

온디맨드 스캔은 active 모드 또는 passive 모드로 실행할 수 있습니다:

온디맨드 DAST 스캔 보기

온디맨드 스캔을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트 또는 그룹을 찾습니다.
  2. 보안 > 온디맨드 스캔을 선택합니다.

온디맨드 스캔은 상태에 따라 그룹화됩니다. 스캔 라이브러리에는 모든 사용 가능한 온디맨드 스캔이 포함되어 있습니다.

온디맨드 DAST 스캔 실행

전제 조건:

  • 보호된 브랜치에 대한 온디맨드 DAST 스캔을 실행할 권한이 있어야 합니다. 기본 브랜치는 자동으로 보호됩니다. 자세한 정보는 보호된 브랜치에서 파이프라인 보안을 참조하십시오.

기존의 온디맨드 스캔을 실행하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 보안 > 온디맨드 스캔을 선택합니다.
  3. 스캔 라이브러리 탭을 선택합니다.
  4. 스캔의 행에서 스캔 실행을 선택합니다.

    만약 스캔에 저장된 브랜치가 더 이상 존재하지 않는 경우 다음을 수행해야 합니다:

    1. 스캔을 편집합니다.
    2. 새 브랜치를 선택합니다.
    3. 편집된 스캔을 저장합니다.

온디맨드 DAST 스캔이 실행되고 프로젝트 대시보드에 결과가 표시됩니다.

온디맨드 스캔 생성

온디맨드 스캔을 만들어서:

  • 즉시 실행합니다.
  • 나중에 실행할 수 있도록 저장합니다.
  • 지정된 일정에 따라 실행하도록 예약합니다.

온디맨드 DAST 스캔을 만들려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트 또는 그룹을 찾습니다.
  2. 보안 > 온디맨드 스캔을 선택합니다.
  3. 새 스캔을 선택합니다.
  4. 스캔 이름설명 필드를 완성합니다.
  5. 브랜치 드롭다운 디렉터리에서 원하는 브랜치를 선택합니다.
  6. 선택 사항입니다. 러너 태그를 선택합니다.
  7. 드로어를 열기 위해 스캐너 프로필 선택 또는 스캐너 프로필 변경을 선택하고, 다음 중 하나를 수행합니다:
    • 드로어에서 스캐너 프로필을 선택합니다. 또는
    • 새 프로필을 선택하여 스캐너 프로필을 만든 후 프로필 저장을 선택합니다.
  8. 드로어를 열기 위해 사이트 프로필 선택 또는 사이트 프로필 변경을 선택하고, 다음 중 하나를 수행합니다:
    • 사이트 프로필 라이브러리 드로어에서 사이트 프로필을 선택합니다, 또는
    • 새 프로필을 선택하여 사이트 프로필을 만든 후 프로필 저장을 선택합니다.
  9. 온디맨드 스캔을 실행하려면:

    • 즉시 실행하려면 저장하고 스캔 실행을 선택합니다.
    • 나중에 실행하려면 스캔 저장을 선택합니다.
    • 일정에 따라 실행하려면:

      • 스캔 일정 활성화 토글을 켭니다.
      • 일정 필드를 완성합니다.
      • 스캔 저장을 선택합니다.

온디맨드 DAST 스캔은 지정된 대로 실행되고 프로젝트 대시보드에 결과가 표시됩니다.

온디맨드 스캔 상세 정보 보기

온디맨드 스캔의 세부 정보를 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 보안 > 온디맨드 스캔을 선택합니다.
  3. 스캔 라이브러리 탭을 선택합니다.
  4. 저장된 스캔의 행에서 더 많은 작업 ()을 선택한 다음 편집을 선택합니다.

온디맨드 스캔 편집

온디맨드 스캔을 편집하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 보안 > 온디맨드 스캔을 선택합니다.
  3. 스캔 라이브러리 탭을 선택합니다.
  4. 저장된 스캔의 행에서 더 많은 작업 ()을 선택한 다음 편집을 선택합니다.
  5. 저장된 스캔의 세부 정보를 편집합니다.
  6. 스캔 저장을 선택합니다.

온디맨드 스캔 삭제

온디맨드 스캔을 삭제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 보안 > 온디맨드 스캔을 선택합니다.
  3. 스캔 라이브러리 탭을 선택합니다.
  4. 저장된 스캔의 행에서 더 많은 작업 ()을 선택한 다음 삭제을 선택합니다.
  5. 확인 대화상자에서 삭제를 선택합니다.

사이트 프로필

사이트 프로필은 DAST로 스캔할 배포된 응용 프로그램, 웹사이트 또는 API의 속성 및 구성 세부 정보를 정의합니다. 사이트 프로필은 .gitlab-ci.yml 및 온디맨드 스캔에서 참조할 수 있습니다.

사이트 프로필에는 다음이 포함되어 있습니다:

  • 프로필 이름: 스캔 대상에 할당하는 이름입니다. 사이트 프로필은 .gitlab-ci.yml 또는 온디맨드 스캔에서 참조되는데, 이때 해당 이름을 변경할 수 없습니다.
  • 사이트 유형: 스캔할 대상의 유형, 즉 웹사이트 또는 API 스캔 중 하나입니다.
  • 대상 URL: DAST가 실행될 URL입니다.
  • 제외된 URL: 스캔에서 제외할 URL의 쉼표로 구분된 디렉터리입니다.
  • 요청 헤더: HTTP 요청 헤더의 이름과 값이 포함된 쉼표로 구분된 디렉터리입니다. 이러한 헤더는 DAST에 의해 수행되는 모든 요청에 추가됩니다.
  • 인증:
    • 인증된 URL: 대상 웹사이트에서 로그인 HTML 양식을 포함하는 페이지의 URL입니다. 사용자 이름과 암호는 인증된 스캔을 만들기 위해 로그인 양식에 제출됩니다.
    • 사용자 이름: 웹사이트에 인증하는 데 사용되는 사용자 이름입니다.
    • 암호: 웹사이트에 인증하는 데 사용되는 암호입니다.
    • 사용자 이름 양식 필드: HTML 양식에 있는 사용자 이름 필드의 이름입니다.
    • 암호 양식 필드: HTML 양식에 있는 암호 필드의 이름입니다.
    • 양식 제출 필드: 선택시 로그인 HTML 양식을 제출하는 요소의 id 또는 name입니다.
  • 스캔 방법: API 테스트 수행 방법의 유형입니다. 지원되는 방법은 OpenAPI, Postman Collection, HTTP Archive(HAR) 또는 GraphQL입니다.
    • GraphQL 엔드포인트 경로: GraphQL 엔드포인트의 경로입니다. 이 경로는 테스트할 스캔의 URI을 제공하기 위해 대상 URL과 연결됩니다. GraphQL 엔드포인트는 설명 쿼리를 지원해야 합니다.
    • 파일 URL: OpenAPI, Postman Collection 또는 HTTP Archive 파일의 URL입니다.

API 사이트 유형이 선택된 경우, 호스트 오버라이드가 사용되어 스캔 중인 API가 대상과 동일한 호스트에 있는지 확인됩니다. 이렇게 함으로써 잘못된 API에 대해 활성 스캔을 실행하는 위험을 줄입니다.

구성된 경우, 요청 헤더 및 암호 필드는 데이터베이스에 저장되기 전에 aes-256-gcm으로 암호화됩니다. 이 데이터는 유효한 비밀 파일로만 읽고 복호화할 수 있습니다.

사이트 프로필 유효성 검사

사이트 프로필 유효성 검사는 잘못된 웹 사이트에 대한 활성 스캔을 실행하는 위험을 줄입니다. 활성 스캔을 실행하기 전에 사이트를 검증해야 합니다. 각 사이트 유효성 검사 방법은 기능적으로 동등하므로 가장 적합한 방법을 사용하세요:

  • 텍스트 파일 유효성 검사: 대상 사이트에 텍스트 파일을 업로드해야 합니다. 텍스트 파일에는 프로젝트와 고유한 이름과 내용이 할당됩니다. 유효성 검사 프로세스에서 파일의 내용을 확인합니다.
  • 헤더 유효성 검사: 대상 사이트에 Gitlab-On-Demand-DAST 헤더가 추가되어야 합니다. 값은 프로젝트와 고유해야 합니다. 유효성 검사 프로세스에서 헤더가 있는지와 그 값이 있는지 확인합니다.
  • 메타 태그 유효성 검사: 대상 사이트에 gitlab-dast-validation이라는 메타 태그가 추가되어야 합니다. 해당 값은 프로젝트와 고유해야 합니다. 페이지의 <head> 섹션에 추가되었는지 확인합니다. 유효성 검사 프로세스에서 메타 태그가 있는지와 그 값이 있는지 확인합니다.

사이트 프로필 생성

사이트 프로필을 생성하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. 동적 응용 프로그램 보안 테스트 (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 새로 만들기 > 사이트 프로필을 선택합니다.
  5. 필드를 작성한 다음 프로필 저장을 선택합니다.

사이트 프로필이 저장되어 온디맨드 스캔에 사용됩니다.

사이트 프로필 편집

note
사이트 프로필이 보안 정책에 연결되어 있는 경우, 해당 페이지에서 프로필을 편집할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요.
note
사이트 프로필의 대상 URL 또는 인증된 URL이 업데이트되면 해당 프로필과 관련된 요청 헤더 및 비밀번호 필드가 지워집니다.

검증된 사이트 프로필의 파일, 헤더 또는 메타 태그가 편집되면 사이트의 유효성 상태가 해제됩니다.

사이트 프로필을 편집하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. 동적 응용 프로그램 보안 테스트 (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 사이트 프로필 탭을 선택합니다.
  5. 프로필 행에서 더보기 () 메뉴를 선택한 다음 편집을 선택합니다.
  6. 필드를 편집한 다음 프로필 저장을 선택합니다.

사이트 프로필 삭제

note
사이트 프로필이 보안 정책에 연결되어 있는 경우, 해당 페이지에서 프로필을 삭제할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요.

사이트 프로필을 삭제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. 동적 응용 프로그램 보안 테스트 (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 사이트 프로필 탭을 선택합니다.
  5. 프로필 행에서 더보기 () 메뉴를 선택한 다음 삭제를 선택합니다.
  6. 삭제를 확인하려면 삭제를 선택합니다.

사이트 프로필 유효성 검사

사이트를 유효성 검사하려면 활성 스캔을 실행해야 합니다.

전제 조건:

  • 프로젝트에서 실행하는 러너가 있어야 합니다.
  • GitLab 서버의 인증서가 신뢰할 수 있어야 하며, 자체 서명 인증서를 사용해서는 안 됩니다.

사이트 프로필을 유효성 검사하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. 동적 응용 프로그램 보안 테스트 (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 사이트 프로필 탭을 선택합니다.
  5. 프로필 행에서 유효성 검사를 선택합니다.
  6. 유효성 검사 방법을 선택합니다.
    1. 텍스트 파일 유효성 검사의 경우:
      1. 단계 2에 나열된 유효성 파일을 다운로드합니다.
      2. 유효성 파일을 호스트에 업로드하여 단계 3의 위치나 원하는 위치로 업로드합니다.
      3. 필요한 경우 단계 3의 파일 위치를 편집합니다.
      4. 유효성 검사를 선택합니다.
    2. 헤더 유효성 검사의 경우:
      1. 단계 2의 클립보드 아이콘을 선택합니다.
      2. 검증할 사이트의 헤더를 편집하고 클립보드 내용을 붙여넣습니다.
      3. 단계 3의 입력 필드를 선택하고 헤더의 위치를 입력합니다.
      4. 유효성 검사를 선택합니다.
    3. 메타 태그 유효성 검사의 경우:
      1. 단계 2의 클립보드 아이콘을 선택합니다.
      2. 검증할 사이트의 콘텐츠를 편집하고 클립보드 내용을 붙여넣습니다.
      3. 단계 3의 입력 필드를 선택하고 메타 태그의 위치를 입력합니다.
      4. 유효성 검사를 선택합니다.

사이트가 유효성 검사되어 활성 스캔이 실행될 수 있습니다. 사이트 프로필의 유효성 상태는 매뉴얼으로 해제되거나 파일, 헤더, 또는 메타 태그가 편집될 때에만 해제됩니다.

실패한 유효성 검사 재시도

실패한 사이트 유효성 검사 시도는 프로필 관리 페이지의 사이트 프로필 탭에 나열됩니다.

사이트 프로필의 유효성 검사를 다시 시도하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. 동적 응용 프로그램 보안 테스트 (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 사이트 프로필 탭을 선택합니다.
  5. 프로필 행에서 유효성 검사 재시도를 선택합니다.

사이트 프로필의 유효성 상태 해제

caution
사이트 프로필의 유효성 상태가 해제되면 동일한 URL을 공유하는 모든 사이트 프로필의 유효성 상태도 해제됩니다.

사이트 프로필의 유효성 상태를 해제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. 동적 응용 프로그램 보안 테스트 (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 확인된 프로필 옆에서 유효성 해제를 선택합니다.

사이트 프로필의 유효성 상태가 해제됩니다.

유효성 검사된 사이트 프로필 헤더

다음은 애플리케이션에서 필요한 사이트 프로필 헤더를 제공하는 코드 예제입니다.

온디맨드 스캔을 위한 Ruby on Rails 예제

다음은 루비 온 레일 애플리케이션에서 사용자 정의 헤더를 추가하는 방법입니다:

class DastWebsiteTargetController < ActionController::Base
  def dast_website_target
    response.headers['Gitlab-On-Demand-DAST'] = '0dd79c9a-7b29-4e26-a815-eaaf53fcab1c'
    head :ok
  end
end

온디맨드 스캔을 위한 Django 예제

다음은 장고 애플리케이션에서 사용자 정의 헤더를 추가하는 방법입니다:

class DastWebsiteTargetView(View):
    def head(self, *args, **kwargs):
      response = HttpResponse()
      response['Gitlab-On-Demand-DAST'] = '0dd79c9a-7b29-4e26-a815-eaaf53fcab1c'
      
      return response

온디맨드 스캔을 위한 Node (Express 포함) 예제

다음은 Node (Express 포함)에서 사용자 정의 헤더를 추가하는 방법입니다:

app.get('/dast-website-target', function(req, res) {
  res.append('Gitlab-On-Demand-DAST', '0dd79c9a-7b29-4e26-a815-eaaf53fcab1c')
  res.send('DAST 핑에 응답')
})

스캐너 프로필

  • dast_ods_browser_based_scanner 피처 플래그 뒤에 브라우저 기반 온디맨드 DAST 스캔이 도입되면서 AJAX 스파이더 옵션이 폐기되었습니다.
  • dast_ods_browser_based_scanner 피처 플래그 뒤에 브라우저 기반 온디맨드 DAST 스캔이 도입되면서 스파이더 타임아웃이 크롤 타임아웃으로 이름이 변경되었습니다.

스캐너 프로필은 보안 스캐너의 구성 세부 정보를 정의합니다. 스캐너 프로필은 .gitlab-ci.yml 및 온디맨드 스캔에서 참조할 수 있습니다.

스캐너 프로필에는 다음이 포함됩니다:

  • 프로필 이름: 스캐너 프로필에 지정하는 이름입니다. 예: “Spider_15”. 스캐너 프로필이 .gitlab-ci.yml 또는 온디맨드 스캔에서 참조될 때는 이름을 바꿀 수 없습니다.
  • 스캔 모드: 매뉴얼 스캔은 대상으로 보낸 모든 HTTP 메시지(요청 및 응답)를 모니터링합니다. 활성 스캔은 잠재적인 취약점을 찾기 위해 대상을 공격합니다.
  • 크롤 타임아웃: 사이트를 탐색하는 데 허용된 최대 분수입니다.
  • 대상 타임아웃: DAST가 스캔을 시작하기 전에 사이트가 사용 가능한지 대기하는 최대 초수입니다.
  • 디버그 메시지: DAST 콘솔 출력에 디버그 메시지를 포함합니다.

스캐너 프로필 생성

스캐너 프로필을 생성하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. Dynamic Application Security Testing (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 새로 만들기 > 스캐너 프로필을 선택합니다.
  5. 양식을 완성합니다. 각 필드의 자세한 정보는 스캐너 프로필을 참조하세요.
  6. 프로필 저장을 선택합니다.

스캐너 프로필 편집

note
스캐너 프로필이 보안 정책에 연결된 경우 이 페이지에서 프로필을 수정할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요.

스캐너 프로필을 편집하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. Dynamic Application Security Testing (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 스캐너 프로필 탭을 선택합니다.
  5. 스캐너의 행에서 더 많은 작업 () 메뉴를 선택한 다음 편집을 선택합니다.
  6. 양식을 편집합니다.
  7. 프로필 저장을 선택합니다.

스캐너 프로필 삭제

note
스캐너 프로필이 보안 정책에 연결된 경우 사용자는 이 페이지에서 프로필을 삭제할 수 없습니다. 자세한 내용은 스캔 실행 정책을 참조하세요.

스캐너 프로필을 삭제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. Dynamic Application Security Testing (DAST) 섹션에서 프로필 관리를 선택합니다.
  4. 스캐너 프로필 탭을 선택합니다.
  5. 스캐너의 행에서 더 많은 작업 () 메뉴를 선택한 다음 삭제를 선택합니다.
  6. 삭제를 선택합니다.

감사

DAST 프로필, DAST 스캐너 프로필 및 DAST 사이트 프로필의 작성, 업데이트 및 삭제가 감사 로그에 포함됩니다.