DAST 프록시 기반 분석기 (폐기됨)

Tier: Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated
caution
DAST 프록시 기반 분석기는 GitLab 16.9에서 폐기되었으며 GitLab 17.0에서 DAST 버전 5로 대체되었습니다. 이 변경은 파손 변경입니다. DAST 버전 5로 마이그레이션하는 방법에 대한 지침은 마이그레이션 가이드를 참조하세요.

DAST 프록시 기반 분석기는 GitLab CI/CD 파이프라인에 추가할 수 있습니다. 이를 통해 JavaScript를 심하게 사용하지 않는 웹 애플리케이션의 취약점을 발견할 수 있습니다. 이에 사용하는 애플리케이션의 경우 DAST 브라우저 기반 분석기를 참조하세요.

비디오 방문을 통해 GitLab과 함께 동적 응용 프로그램 보안 테스트(DAST) 설정하는 방법을 확인하세요.

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

분석기는 Software Security Project Zed Attack Proxy (ZAP)를 두 가지 다른 방식으로 스캔합니다:

  • 매뉴얼 스캔만(기본값). DAST는 ZAP의 베이스라인 스캔을 실행하고 애플리케이션을 미적대적으로 공격하지는 않습니다.
  • 매뉴얼 및 미대적(또는 전체) 스캔. DAST는 구성하여 애플리케이션을 공격하고 보다 체계적인 보안 보고서를 생성할 수 있습니다. 리뷰 앱과 결합했을 때 매우 유용할 수 있습니다.

템플릿

GitLab DAST 구성은 CI/CD 템플릿에서 정의됩니다. 템플릿의 업데이트는 GitLab 업그레이드로 제공되어 개선 사항 및 추가 기능을 활용할 수 있습니다.

이용 가능한 템플릿:

caution
최신 버전의 템플릿에는 파손 변경이 포함될 수 있습니다. 최신 템플릿에서만 제공되는 기능이 필요하지 않은 경우 안정 버전 템플릿을 사용하십시오.

템플릿 버전에 대한 자세한 내용은 CI/CD 문서를 참조하세요.

DAST 버전

기본적으로 DAST 템플릿은 DAST Docker 이미지의 최신 주 버전을 사용합니다. DAST_VERSION 변수를 사용하여 DAST가 어떻게 업데이트되는지 선택할 수 있습니다:

  • 주 버전(예: 1)을 고정하여 새 기능 및 수정 사항과 자동으로 DAST를 업데이트합니다.
  • 부 버전(예: 1.6)을 고정하여 수정 사항만 업데이트합니다.
  • 특정 버전(예: 1.6.4)을 고정하여 모든 업데이트를 방지합니다.

최신 DAST 버전은 DAST 릴리스 페이지에서 찾을 수 있습니다.

DAST 실행 옵션

DAST로 웹 애플리케이션을 검사하는 데 사용할 수 있습니다:

  • 자동으로, 합병 요청을 통해 시작됨.
  • 매뉴얼으로, 필요에 따라 시작됨.

이러한 실행 옵션 간의 차이점 중 일부:

자동 스캔 매뉴얼 스캔
DAST 스캔은 합병 요청에 의해 시작됨. DAST 스캔은 매뉴얼으로 시작되며, DevOps 수명주기 외부에서 실행됨.
CI/CD 변수는 .gitlab-ci.yml에서 제공됨. CI/CD 변수는 UI에서 제공됨.
모든 DAST CI/CD 변수가 이용 가능함. 일부 DAST CI/CD 변수가 이용 가능함.
DAST.gitlab-ci.yml 템플릿. DAST-On-Demand-Scan.gitlab-ci.yml 템플릿.

자동 DAST 실행 활성화

DAST를 자동으로 실행하려면 다음 중 하나를 활성화합니다:

.gitlab-ci.yml 파일 매뉴얼으로 편집

이 방법은 GitLab CI/CD 구성 파일이 복잡한 경우에 사용합니다.

DAST 템플릿을 포함하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Build > 파이프라인 편집기를 선택합니다.
  3. .gitlab-ci.yml 파일의 맨 아래에 다음을 복사하여 붙여넣습니다. 이미 include 줄이 있는 경우 template 줄만 추가하십시오.

    안정 버전의 DAST 템플릿을 사용하려면:

    include:
      - template: DAST.gitlab-ci.yml
    

    최신 DAST 템플릿을 사용하려면:

    include:
      - template: DAST.latest.gitlab-ci.yml
    
  4. 다음 중 하나의 방법으로 DAST를 통해 스캔할 URL을 정의합니다:

    • DAST_WEBSITE CI/CD 변수를 설정합니다. 설정된 경우 이 값이 우선합니다.

    • 프로젝트의 루트에 있는 environment_url.txt 파일에 URL을 추가합니다. 동적 환경에서 테스트하는 데 유용합니다. GitLab CI/CD 파이프라인 중에 동적으로 생성된 애플리케이션을 대상으로 DAST를 실행하려면, DAST 이전에 실행되는 작업에서 애플리케이션의 도메인을 environment_url.txt 파일에 유지하도록 합니다. DAST는 자동으로 environment_url.txt 파일을 구문 분석하여 스캔 대상을 찾습니다.

      예를 들어, DAST 이전에 실행되는 작업에서 다음과 유사한 코드를 포함할 수 있습니다:

      script:
        - echo http://${CI_PROJECT_ID}-${CI_ENVIRONMENT_SLUG}.domain.com > environment_url.txt
      artifacts:
        paths: [environment_url.txt]
        when: always
      

      이에 대한 예제는 Auto DevOps CI YAML 파일에서 확인할 수 있습니다.

  5. 유효성 검사 탭을 선택한 다음 파이프라인 유효성 검사를 선택합니다. 메시지 시뮬레이션이 성공적으로 완료됨은 파일이 유효하다는 것을 의미합니다.
  6. 편집 탭을 선택합니다.
  7. 선택 사항. 커밋 메시지에서 커밋 메시지를 사용자 정의합니다.
  8. 변경 사항 커밋을 선택합니다.

이제 파이프라인에 DAST 작업이 포함됩니다.

결과는 DAST 보고서 아티팩트로 저장될 수 있으며 나중에 다운로드하여 분석할 수 있습니다. 구현 제한으로 인해 항상 사용 가능한 최신 DAST 아티팩트를 사용합니다. 뒷단에서는 지정된 URL에서 테스트를 실행하고 가능한 취약점을 스캔하기 위해 GitLab DAST Docker 이미지가 사용됩니다.

UI를 사용하여 DAST 구성

이 방법을 사용하면 UI에서 옵션을 선택합니다. 선택 사항에 따라 코드 스니펫이 생성되어 .gitlab-ci.yml 파일에 붙여넣습니다.

UI를 사용하여 DAST를 구성하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. Dynamic Application Security Testing (DAST) 섹션에서 DAST 활성화 또는 DAST 구성을 선택합니다.
  4. 원하는 Scanner 프로필을 선택하거나 Scanner 프로필 만들기를 선택하고 Scanner 프로필을 저장합니다. 자세한 내용은 scanner profiles을 참조하십시오.
  5. 원하는 Site 프로필을 선택하거나 Site 프로필 만들기를 선택하고 Site 프로필을 저장합니다. 자세한 내용은 site profiles을 참조하십시오.
  6. 코드 스니펫 생성을 선택합니다. 선택한 옵션에 해당하는 YAML 스니펫이 포함된 모달이 열립니다.
  7. 다음 중 하나를 수행합니다:
    1. 스니펫을 클립보드에 복사하려면 코드만 복사를 선택합니다.
    2. 프로젝트의 .gitlab-ci.yml 파일에 스니펫을 추가하려면 코드 복사 및 .gitlab-ci.yml 파일 열기를 선택합니다. Pipeline Editor가 엽니다.
      1. 스니펫을 .gitlab-ci.yml 파일에 붙여넣습니다.
      2. 유효성 검사 탭을 선택한 다음 파이프라인 유효성 검사를 선택합니다. 메시지 시뮬레이션이 성공적으로 완료되었습니다는 파일이 유효함을 나타냅니다.
      3. 편집 탭을 선택합니다.
      4. 선택 사항. 커밋 메시지에서 커밋 메시지를 사용자화합니다.
      5. 변경 사항 커밋을 선택합니다.

이제 파이프라인에 DAST 작업이 포함됩니다.

API 스캔

  • DAST API analyzer는 웹 API를 스캔하는 데 사용됩니다. GraphQL, REST 및 SOAP과 같은 웹 API 기술을 지원합니다.

URL 스캔

URL 스캔을 사용하여 DAST가 웹 사이트의 어느 부분을 스캔할지 지정할 수 있습니다.

스캔할 URL 정의

스캔할 URL은 다음 두 가지 방법 중 하나로 지정할 수 있습니다:

  • DAST_PATHS_FILE CI/CD 변수를 사용하여 경로가 포함된 파일의 이름을 지정합니다.
  • DAST_PATHS 변수를 사용하여 경로의 디렉터리을 나열합니다.
DAST_PATHS_FILE CI/CD 변수 사용

파일에 스캔할 URL을 정의하려면 각 줄에 하나의 경로가 포함된 일반 텍스트 파일을 작성하십시오.

page1.html
/page2.html
category/shoes/page1.html

해당 파일의 URL을 스캔하려면 CI/CD 변수 DAST_PATHS_FILE을 해당 파일의 경로로 설정하십시오. 파일은 프로젝트 리포지터리에 체크인하거나 DAST를 실행하는 작업에서 artifact로 생성할 수 있습니다.

기본적으로 DAST 스캔은 프로젝트 리포지터리를 복제하지 않습니다. 프로젝트의 경로에 상대적인 파일 경로를 DAST_PATHS_FILE에 지정하여 DAST 작업이 프로젝트를 복제하도록 지시하십시오.

include:
  - template: DAST.gitlab-ci.yml

variables:
  GIT_STRATEGY: fetch
  DAST_PATHS_FILE: url_file.txt  # url_file.txt는 프로젝트의 루트 디렉터리에 있습니다
  DAST_BROWSER_SCAN: "true" # 브라우저 기반 GitLab DAST 크롤러 사용
DAST_PATHS CI/CD 변수 사용

CI/CD 변수에 스캔할 경로를 지정하려면 DAST_PATHS 변수에 경로의 쉼표로 구분된 디렉터리을 추가하십시오. 단일 호스트의 경로만 스캔할 수 있습니다.

include:
  - template: DAST.gitlab-ci.yml

variables:
  DAST_PATHS: "/page1.html,/category1/page1.html,/page3.html"
  DAST_BROWSER_SCAN: "true" # 브라우저 기반 GitLab DAST 크롤러 사용

DAST_PATHSDAST_PATHS_FILE을 사용할 때 다음 사항을 참고하십시오:

  • DAST_PATHS_FILE 또는 DAST_PATHS를 사용할 때는 DAST_WEBSITE을 정의해야 합니다. 두 경우 모두 지정된 경로는 스캔할 URL을 작성하는 데 DAST_WEBSITE을 사용합니다.
  • DAST_PATHS 또는 DAST_PATHS_FILE을 정의하는 경우 스파이더링이 비활성화됩니다.
  • DAST_PATHS_FILEDAST_PATHS를 함께 사용할 수 없습니다.
  • DAST_PATHS 변수는 약 130 kb에 제한됩니다. 이를 초과하는 경로 디렉터리이 있는 경우 DAST_PATHS_FILE을 사용하십시오.

전체 스캔

나열된 경로에 대한 전체 스캔을 수행하려면 DAST_FULL_SCAN_ENABLED CI/CD 변수를 사용하십시오.

인증

프록시 기반 분석기는 스캔 전에 사용자의 인증을 위해 브라우저 기반 분석기를 사용합니다. 구성 지침은 Authentication를 참조하십시오.

DAST 설정 사용자화

DAST의 동작을 CI/CD 변수 및 명령줄 옵션을 사용하여 사용자화할 수 있습니다. CI/CD 변수 사용은 DAST 템플릿에 포함된 값보다 우선합니다.

CI/CD 변수 사용하여 DAST 사용자화

DAST 설정은 .gitlab-ci.ymlvariables 파라미터에서 CI/CD 변수를 사용하여 변경할 수 있습니다. 모든 DAST CI/CD 변수의 세부 정보는 사용 가능한 CI/CD 변수를 참조하십시오.

예:

include:
  - template: DAST.gitlab-ci.yml

variables:
  DAST_WEBSITE: https://example.com
  DAST_SPIDER_MINS: 120
  DAST_BROWSER_SCAN: "true" # 브라우저 기반 GitLab DAST 크롤러 사용

템플릿은 파이프라인 구성 전에 평가되므로 변수의 마지막 언급이 우선합니다.

규칙 활성화 또는 비활성화

DAST가 취약점을 스캔하는 데 사용하는 규칙의 전체 디렉터리은 ZAP 문서에서 찾을 수 있습니다.

DAST_EXCLUDE_RULES는 지정된 ID의 규칙을 비활성화합니다.

DAST_ONLY_INCLUDE_RULES는 스캔에 사용할 규칙 세트를 지정된 ID로 제한합니다.

DAST_EXCLUDE_RULESDAST_ONLY_INCLUDE_RULES는 상호 배타적이며 두 가지 모두 구성한 DAST 스캔은 오류로 종료됩니다.

기본적으로 긴 시간이 걸리거나 빈번히 거짓 긍정 결과를 생성하는 규칙이기 때문에 여러 규칙이 기본적으로 비활성화되어 있습니다. 비활성화된 규칙의 전체 디렉터리은 exclude_rules.yml에서 찾을 수 있습니다.

DAST_EXCLUDE_RULESDAST_ONLY_INCLUDE_RULES 디렉터리은 둘 다 값이 숫자로 해석되지 않도록 반드시 쌍따옴표(")로 둘러싸야 합니다.

민감한 정보 숨기기

HTTP 요청 및 응답 헤더에는 쿠키 및 인증 자격 증명을 포함하여 민감한 정보가 포함될 수 있습니다. 기본적으로 다음 헤더가 마스킹됩니다.

  • Authorization.
  • Proxy-Authorization.
  • Set-Cookie (값만).
  • Cookie (값만).

DAST_MASK_HTTP_HEADERS CI/CD 변수를 사용하여 마스킹할 헤더를 나열할 수 있습니다. 헤더를 마스킹하는 방법에 대한 자세한 내용은 DAST 설정 사용자화를 참조하십시오.

상호 TLS 사용

상호 TLS를 사용하면 대상 애플리케이션 서버가 요청이 알려진 출처에서 오는지 확인할 수 있습니다. 브라우저 기반 스캔은 상호 TLS를 지원하지 않습니다.

요구 사항

  • Base64로 인코딩된 PKCS12 인증서
  • Base64로 인코딩된 PKCS12 인증서의 암호

상호 TLS를 활성화하려면:

  1. PKCS12 인증서가 이미 Base64로 인코딩되지 않은 경우 로컬에서 인코딩하는 것을 권장합니다. 예를 들어 macOS 또는 Linux에서 인증서를 인코딩하려면:

    base64 <경로-대-인증서-파일>
    
  2. DAST_PKCS12_CERTIFICATE_BASE64라는 마스킹된 변수를 만들고 PKCS12 인증서의 Base64로 인코딩된 값을 해당 변수에 저장하십시오.
  3. DAST_PKCS12_PASSWORD라는 마스킹된 변수를 만들어 PKCS12 인증서의 암호를 해당 변수에 저장하십시오.

사용 가능한 CI/CD 변수

이러한 CI/CD 변수는 DAST에 특화되어 있습니다. 이를 사용하여 DAST의 동작을 귀하의 요구 사항에 맞게 사용자 정의할 수 있습니다. 인증 CI/CD 변수에 대해서는 인증을 참조하십시오.

caution
GitLab 보안 스캔 도구의 모든 사용자 정의 사항은 기본 브랜치에 변경 사항을 Merge하기 전에 Merge Request에서 테스트되어야 합니다. 그렇지 않으면 예기치 않은 결과가 발생할 수 있으며, 거짓 긍정이 많아질 수 있습니다.
CI/CD 변수 유형 설명
DAST_ADVERTISE_SCAN boolean true로 설정하여 DAST 검사의 일부로 보내진 모든 요청에 Via 헤더가 추가되어 보고됩니다.
DAST_AGGREGATE_VULNERABILITIES boolean 취약점 집계는 기본적으로 true로 설정됩니다. 이 기능을 비활성화하고 각 취약점을 개별적으로 보려면 false로 설정하십시오.
DAST_ALLOWED_HOSTS 콤마로 구분된 문자열 디렉터리 이 변수에 포함된 호스트명은 크롤링될 때 유효범위에 있는 것으로 간주됩니다. 기본적으로 DAST_WEBSITE 호스트명이 허용된 호스트 디렉터리에 포함됩니다. DAST_REQUEST_HEADERS를 사용하여 이러한 호스트명에 대한 모든 요청에 헤더를 추가합니다. 예시: site.com,another.com
DAST_API_HOST_OVERRIDE 1 string cautionGitLab 16.0에서 제거됨. DAST API scan으로 대체되었습니다.
DAST_API_SPECIFICATION 1 URL 또는 문자열 cautionGitLab 16.0에서 제거됨. DAST API scan으로 대체되었습니다.
DAST_AUTO_UPDATE_ADDONS boolean ZAP 애드온은 DAST 도커 이미지에서 특정 버전에 고정됩니다. 스캔 시작 시 최신 버전을 다운로드하려면 true로 설정하십시오. 기본값: false.
DAST_DEBUG 1 boolean 디버그 메시지 출력을 활성화합니다. 기본값: false.
DAST_EXCLUDE_RULES string 스캔 중에 실행하지 않을 취약점 규칙 ID의 콤마로 구분된 디렉터리을 설정하십시오. 규칙 ID는 숫자이며 DAST 로그나 ZAP 프로젝트에서 찾을 수 있습니다. 예시: HTTP Parameter Override의 규칙 ID는 10026입니다. DAST_ONLY_INCLUDE_RULES가 설정된 경우 사용할 수 없습니다. 참고: 이전 버전의 GitLab에서는 제외된 규칙이 실행되었지만 생성된 취약점은 억제되었습니다.
DAST_EXCLUDE_URLS 1 URLs 인증된 스캔 중에 건너뛸 URL들입니다. 콤마로 구분됩니다. 정규 표현식 구문을 사용하여 여러 URL을 일치시킬 수 있습니다. 예시: .*는 임의의 문자 시퀀스와 일치합니다. 예시: http://example.com/sign-out.
DAST_FULL_SCAN_ENABLED 1 boolean ZAP Full Scan 대신 ZAP Baseline Scan을 실행하려면 true로 설정하십시오. 기본값: false.
DAST_HTML_REPORT string cautionGitLab 15.7에서 폐기됨. 스캔 완료 후 작성된 HTML 보고서의 파일 이름입니다.
DAST_INCLUDE_ALPHA_VULNERABILITIES boolean 알파 패시브 및 액티브 스캔 규칙을 포함하려면 true로 설정하십시오. 기본값: false.
DAST_MARKDOWN_REPORT string cautionGitLab 15.7에서 폐기됨. 스캔 완료 후 작성된 Markdown 보고서의 파일 이름입니다.
DAST_MASK_HTTP_HEADERS string 마스킹할 요청 및 응답 헤더의 콤마로 구분된 디렉터리입니다. 모든 마스킹할 헤더를 포함해야 합니다. 기본적으로 마스킹되는 헤더 디렉터리을 참조하십시오.
DAST_MAX_URLS_PER_VULNERABILITY number 단일 취약점에 대해 보고되는 URL의 최대 수입니다. DAST_MAX_URLS_PER_VULNERABILITY의 기본값은 50입니다. 모든 URL을 나열하려면 0으로 설정하십시오.
DAST_ONLY_INCLUDE_RULES string 스캔을 구성하여 실행할 취약점 규칙 ID의 콤마로 구분된 디렉터리을 설정하십시오. 규칙 ID는 숫자이며 DAST 로그나 ZAP 프로젝트에서 찾을 수 있습니다. DAST_EXCLUDE_RULES가 설정된 경우 사용할 수 없습니다.
DAST_PATHS string DAST가 스캔할 URL의 콤마로 구분된 디렉터리을 설정하십시오. 예시: /page1.html,/category1/page3.html,/page2.html.
DAST_PATHS_FILE string DAST_WEBSITE의 내부에서 스캔할 경로가 포함된 파일 경로입니다. 파일은 한 줄에 하나의 경로가 있는 일반 텍스트여야 합니다.
DAST_PKCS12_CERTIFICATE_BASE64 string 상호 TLS를 요구하는 사이트에 사용되는 PKCS12 인증서입니다. Base64 텍스트로 인코딩되어 있어야 합니다.
DAST_PKCS12_PASSWORD string DAST_PKCS12_CERTIFICATE_BASE64에서 사용된 인증서의 암호입니다.
DAST_REQUEST_HEADERS 1 string 요청 헤더 이름과 값을 콤마로 구분된 디렉터리으로 설정하십시오. DAST에 의해 실행되는 각 요청에 헤더가 추가됩니다. 예시: Cache-control: no-cache,User-Agent: DAST/1.0
DAST_SKIP_TARGET_CHECK boolean 스캔하기 전에 대상이 사용 가능한지 DAST에서 확인하는 것을 방지하려면 true로 설정하십시오. 기본값: false.
DAST_SPIDER_MINS 1 number 스파이더 스캔의 최대 기간(분)입니다. 무제한으로 설정하려면 0으로 설정하십시오. 기본값: 1분 또는 스캔이 전체 스캔인 경우 무제한입니다.
DAST_SPIDER_START_AT_HOST boolean 스캔 전에 대상을 해당 호스트로 재설정하는 것을 방지하려면 false로 설정하십시오. true로 설정하면 비호스트 대상 http://test.site/some_path이 스캔 전에 http://test.site로 재설정됩니다. 기본값: false.
DAST_TARGET_AVAILABILITY_TIMEOUT 1 number 대상 사용 가능 여부를 기다릴 최대 시간(초)입니다.
DAST_USE_AJAX_SPIDER 1 boolean 자바스크립트를 필요로 하는 사이트를 탐색하기 위해 전통적인 스파이더 외에 AJAX 스파이더를 사용하려면 true로 설정하십시오. 기본값: false.
DAST_XML_REPORT string cautionGitLab 15.7에서 폐기됨. 스캔 완료 후 작성된 XML 보고서의 파일 이름입니다.
DAST_WEBSITE 1 URL 스캔할 웹사이트의 URL입니다.
DAST_ZAP_CLI_OPTIONS string cautionGitLab 15.7에서 폐기됨. ZAP 서버 명령줄 옵션입니다. 예시: -Xmx3072m은 Java 최대 메모리 할당 풀 크기를 설정합니다.
DAST_ZAP_LOG_CONFIGURATION string cautionGitLab 15.7에서 폐기됨. 추가 log4j 속성의 세미콜론으로 구분된 디렉터리으로 설정하십시오. 예시: logger.httpsender.name=org.parosproxy.paros.network.HttpSender;logger.httpsender.level=debug;logger.sitemap.name=org.parosproxy.paros.model.SiteMap;logger.sitemap.level=debug;
SECURE_ANALYZERS_PREFIX URL 분석 도구를 다운로드할 Docker 레지스트리의 기본 주소를 설정합니다.
  1. 온디맨드 DAST 스캔에서 사용 가능합니다.

명령줄 옵션을 사용하여 DAST 사용자 정의

모든 DAST 구성이 CI/CD 변수를 통해 사용할 수 있는 것은 아닙니다. 모든 가능한 옵션을 확인하려면 다음 구성을 실행하세요. 해당 명령줄 옵션은 작업 로그에 출력됩니다:

include:
  template: DAST.gitlab-ci.yml

dast:
  script:
    - /analyze --help

그런 다음 script 명령을 덮어쓰고 적절한 인수를 전달해야 합니다. 예를 들어, 알파의 취약점 정의는 -a로 포함할 수 있습니다. 다음 구성은 해당 정의를 포함합니다:

include:
  template: DAST.gitlab-ci.yml

dast:
  script:
    - export DAST_WEBSITE=${DAST_WEBSITE:-$(cat environment_url.txt)}
    - /analyze -a -t $DAST_WEBSITE

사용자 정의 ZAProxy 구성

ZAProxy 서버에는 유용한 구성 가능한 값이 많이 있습니다. -config에 대한 많은 key/values는 문서화되어 있지 않지만, 테스트되지 않은 가능한 키 디렉터리이 있습니다. 이러한 옵션은 DAST에서 지원되지 않을 수 있으며 사용할 때 DAST 스캔을 중단시킬 수 있습니다. TOKEN으로 Authorization 헤더 값을 다시 작성하는 예제는 다음과 같습니다:

include:
  template: DAST.gitlab-ci.yml

variables:
  DAST_ZAP_CLI_OPTIONS: "-config replacer.full_list(0).description=auth -config replacer.full_list(0).enabled=true -config replacer.full_list(0).matchtype=REQ_HEADER -config replacer.full_list(0).matchstr=Authorization -config replacer.full_list(0).regex=false -config replacer.full_list(0).replacement=TOKEN"

Bleeding-edge 취약점 정의

ZAP은 먼저 alpha 클래스에서 규칙을 생성합니다. 커뮤니티와의 테스트 기간 후, 그것들은 beta로 승격됩니다. DAST는 기본적으로 beta 정의를 사용합니다. alpha 정의를 요청하려면 다음 구성에서 보여지는 DAST_INCLUDE_ALPHA_VULNERABILITIES CI/CD 변수를 사용하세요:

include:
  template: DAST.gitlab-ci.yml

variables:
  DAST_INCLUDE_ALPHA_VULNERABILITIES: "true"

프로젝트 리포지터리 복제

DAST 작업이 실행될 때 프로젝트 리포지터리가 필요로 하지 않으므로, 기본적으로 GIT_STRATEGYnone으로 설정됩니다.

보고서

DAST 도구는 스캔 및 결과에 대한 세부 정보를 포함하는 gl-dast-report.json 보고서 파일을 출력합니다. 이 파일은 작업의 artefacts에 포함됩니다. JSON이 기본 형식이지만 보고서를 Markdown, HTML 및 XML 형식으로 출력할 수 있습니다. 대체 형식을 지정하려면 CI/CD 변수를 사용하세요.

보고서 스키마에 대한 자세한 내용은 DAST 보고서 스키마를 참조하세요. 예제 보고서는 DAST 리포지터리에서 찾을 수 있습니다.

caution
JSON 보고서 artefacts은 DAST의 공개 API가 아니며, 형식이 향후 변경될 것으로 예상됩니다.

문제 해결

사이트 프로필을 유효성 검사하려고 할 때 unable to get local issuer certificate 오류

자체 서명된 인증서의 사용은 지원되지 않을 수 있으며 오류 메시지 unable to get local issuer certificate와 함께 작업이 실패할 수 있습니다. 자세한 내용은 issue 416670을 참조하세요.