DAST 프록시 기반 분석기 (사용 중단됨)

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

경고: 이 기능은 GitLab 16.9에서 사용 중단되었으며 17.0에서 제거될 예정입니다. 대신 브라우저 기반 DAST를 사용하십시오. 이 변경은 중요 변경 사항입니다.

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

비디오 안내를 보려면 GitLab과 함께 동적 애플리케이션 보안 테스트(DAST) 설정하는 방법을(를) 확인하세요.

경고: DAST 스캔을 프로덕션 서버에 실행하지 마십시오. 사용자가 수행할 수 있는 모든 기능을 실행할 뿐만 아니라 버튼 클릭이나 양식 제출과 같은 버그를 트리거하고, 이로 인해 프로덕션 데이터의 수정 또는 손실을 유발할 수 있습니다. DAST 스캔은 테스트 서버에 대해서만 실행하십시오.

분석기는 소프트웨어 보안 프로젝트 Zed Attack Proxy(ZAP)를 사용하여 두 가지 다른 방식으로 스캔합니다:

  • 수동 스캔만(기본값). DAST는 ZAP의 베이스라인 스캔을 실행하고, 애플리케이션을 적극적으로 공격하지는 않습니다.
  • 수동 및 능동(또는 전체) 스캔. DAST는 더 포괄적인 보안 보고서를 생성하기 위해 애플리케이션을 공격하도록 구성할 수도 있습니다. 이는 Review Apps와 결합할 때 매우 유용할 수 있습니다.

템플릿

  • 최신 DAST 템플릿은 GitLab 13.8에서 도입되었습니다.
  • 모든 DAST 템플릿은 GitLab 14.0에서 DAST_VERSION: 2로 업데이트되었습니다.
  • 모든 DAST 템플릿은 GitLab 15.0에서 DAST_VERSION: 3로 업데이트되었습니다.

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

사용 가능한 템플릿:

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

템플릿 버전 정보 자세히 알아보려면 CI/CD 문서를 참조하세요.

DAST 버전

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

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

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

DAST 실행 옵션

DAST를 사용하여 웹 애플리케이션을 다음과 같이 조사할 수 있습니다:

  • 자동으로, 합병 요청으로 시작
  • 수동으로, 요청에 따라 시작

이 두 실행 옵션의 차이점 중 일부는 다음과 같습니다:

자동 스캔 수동 스캔
DAST 스캔은 합병 요청에 의해 시작됩니다. DAST 스캔은 수동으로 시작됩니다.
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.yml 파일을 수동으로 편집하는 것입니다. GitLab CI/CD 구성 파일이 복잡한 경우에는 이 방법을 사용하십시오.

DAST 템플릿을 포함하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 빌드 > 파이프라인 편집기를 선택합니다.
  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 아티팩트를 가져옵니다. 내부적으로 GitLab DAST Docker 이미지가 지정된 URL에서 테스트를 실행하고 가능한 취약점을 스캔하는 데 사용됩니다.

UI를 사용하여 DAST 구성

이 방법은 UI에서 옵션을 선택하는 것입니다. 선택 사항에 따라 .gitlab-ci.yml 파일에 붙여넣을 코드 스니펫이 생성됩니다.

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

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. Dynamic Application Security Testing (DAST) 섹션에서 DAST 활성화 또는 DAST 구성을 선택합니다.
  4. 원하는 스캐너 프로필을 선택하거나 스캐너 프로필 생성을 선택하고 스캐너 프로필을 저장합니다. 자세한 내용은 스캐너 프로필을 참조하십시오.
  5. 원하는 사이트 프로필을 선택하거나 사이트 프로필 생성을 선택하고 사이트 프로필을 저장합니다. 자세한 내용은 사이트 프로필을 참조하십시오.
  6. 코드 스니펫 생성을 선택합니다. 선택한 옵션에 해당하는 YAML 스니펫이 포함된 모달이 열립니다.
  7. 다음 중 하나를 수행하십시오:
    1. 스니펫을 클립보드에 복사하려면 코드만 복사를 선택합니다.
    2. 프로젝트의 .gitlab-ci.yml 파일에 스니펫을 추가하려면 코드 복사 및 .gitlab-ci.yml 파일 열기를 선택합니다. 파이프라인 편집기가 엽니다.
      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 작업에게 명령하려면 GIT_STRATEGY를 fetch로 설정합니다. DAST_PATHS_FILE에 대한 상대적인 파일 경로를 CI_PROJECT_DIR로 지정합니다.

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가 정의되어 있어야 합니다. 둘 중 하나에 나열된 경로는 DAST_WEBSITE를 사용하여 스캔할 URL을 빌드합니다.
  • DAST_PATHS 또는 DAST_PATHS_FILE이 정의되었을 때, 스파이더링은 비활성화됩니다.
  • DAST_PATHS_FILEDAST_PATHS은 함께 사용할 수 없습니다.
  • DAST_PATHS 변수는 약 130kb가 한도입니다. 이보다 크다면, DAST_PATHS_FILE을 사용하세요.

전체 스캔

나열된 경로에 대해 전체 스캔을 수행하려면 DAST_FULL_SCAN_ENABLED CI/CD 변수를 사용하세요.

인증

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

DAST 설정 사용자 정의

DAST의 동작을 CI/CD 변수와 명령행 옵션을 사용하여 사용자 정의할 수 있습니다. CI/CD 변수의 사용은 DAST 템플릿에 포함된 값들을 덮어씁니다.

CI/CD 변수를 사용한 DAST 사용자 정의

경고: GitLab 13.0부터 onlyexcept의 사용이 더 이상 지원되지 않습니다. 대신, rules을 사용해야 합니다.

DAST 설정을 CI/CD 변수를 통해 변경하려면, .gitlab-ci.ymlvariables 매개변수를 사용합니다. 모든 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를 사용하여 값을 마스킹하려는 헤더를 나열할 수 있습니다. 헤더 마스킹 방법에 대한 자세한 내용은 DAST 설정 사용자 정의를 참조하십시오.

상호 TLS 사용

상호 TLS를 사용하여 대상 응용 프로그램 서버가 요청이 알려진 출처에서 온 것임을 확인할 수 있습니다. 브라우저 기반 스캔은 상호 TLS를 지원하지 않습니다.

요구 사항

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

상호 TLS를 활성화하려면:

  1. PKCS12 인증서가 이미 Base64로 인코딩되어 있지 않은 경우 인코딩을 수행합니다. 보안상의 이유로, 인증서를 로컬에서 인코딩하며, 웹 호스팅된 변환 서비스를 사용하지 않습니다. 예를 들어 macOS 또는 Linux에서 인증서를 인코딩하려면:

    base64 <path-to-pkcs12-certificate-file>
    
  2. DAST_PKCS12_CERTIFICATE_BASE64라는 마스킹된 변수를 생성하고 해당 변수에 기본 인코딩된 PKCS12 인증서의 값을 저장합니다.
  3. 마스킹된 변수 DAST_PKCS12_PASSWORD를 생성하고 해당 변수에 PKCS12 인증서의 암호를 저장합니다.

사용 가능한 CI/CD 변수

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

경고: GitLab 보안 스캔 도구의 모든 사용자 정의는 기본 브랜치로 병합하기 전에 병합 요청에서 테스트되어야 합니다. 그렇지 않으면 예기치 않은 결과가 발생할 수 있으며, 이는 많은 가짜 양성 결과를 포함하여 예기치 않은 결과를 초래할 수 있습니다.

CI/CD 변수 유형 설명
DAST_ADVERTISE_SCAN boolean 각 요청에 Via 헤더를 추가하여 GitLab DAST 스캔의 일환으로 요청이 전송되었음을 알리려면 true로 설정합니다.
DAST_AGGREGATE_VULNERABILITIES boolean 취약점 집계는 기본적으로 true로 설정됩니다. 이 기능을 비활성화하고 각 취약점을 개별적으로 보려면 false로 설정합니다.
DAST_ALLOWED_HOSTS 문자열의 쉼표로 구분된 목록 이 변수에 포함된 호스트명은 크롤링 시 범위에 포함됩니다. 기본적으로 DAST_WEBSITE 호스트명이 허용된 호스트 목록에 포함됩니다. DAST_REQUEST_HEADERS를 사용하여 설정한 헤더가 이러한 호스트에 대해 수행된 모든 요청에 추가됩니다. 예: site.com,another.com.
DAST_API_HOST_OVERRIDE 1 문자열 {경고} GitLab 16.0에서 제거됨. DAST API 스캔으로 대체됨.
DAST_API_SPECIFICATION 1 URL 또는 문자열 {경고} GitLab 16.0에서 제거됨. DAST API 스캔으로 대체됨.
DAST_AUTH_EXCLUDE_URLS URL {경고} GitLab 14.0에서 제거됨. DAST_EXCLUDE_URLS로 대체됨. 인증된 스캔 중 건너뛸 URL 목록입니다. 쉼표로 구분됩니다. 여러 URL을 일치시키기 위해 정규식 구문을 사용할 수 있습니다. 예를 들어 .*는 임의의 문자 시퀀스와 일치합니다.
DAST_AUTO_UPDATE_ADDONS boolean ZAP add-on은 DAST 도커 이미지에서 특정 버전에 고정됩니다. 스캔 시작 시 최신 버전을 다운로드하려면 true로 설정합니다. 기본값: false.
DAST_DEBUG 1 boolean 디버그 메시지 출력을 활성화합니다. 기본값: false.
DAST_EXCLUDE_RULES 문자열 스캔에서 실행되지 않도록 특정 취약점 규칙 ID의 쉼표로 구분된 목록을 설정합니다. 규칙 ID는 숫자이며 DAST 로그나 ZAP 프로젝트에서 찾을 수 있습니다. 예: HTTP Parameter Override의 규칙 ID는 10026입니다. DAST_ONLY_INCLUDE_RULES가 설정된 경우 사용할 수 없습니다. 참고: GitLab의 이전 버전에서 비활성화된 규칙은 실행되지만 생성된 취약점이 억제되었습니다.
DAST_EXCLUDE_URLS 1 URL 인증된 스캔 중 건너뛸 URL 목록입니다. 쉼표로 구분됩니다. 여러 URL을 일치시키기 위해 정규식 구문을 사용할 수 있습니다. 예: http://example.com/sign-out.
DAST_FULL_SCAN_ENABLED 1 boolean ZAP Full Scan 대신 ZAP Baseline Scan을 실행하려면 true로 설정합니다. 기본값: false
DAST_HTML_REPORT 문자열 {경고} GitLab 15.7에서 폐기됨. 스캔 완료 후 작성된 HTML 보고서의 파일 이름입니다.
DAST_INCLUDE_ALPHA_VULNERABILITIES boolean 알파 패시브 및 액티브 스캔 규칙을 포함하려면 true로 설정합니다. 기본값: false.
DAST_MARKDOWN_REPORT 문자열 {경고} GitLab 15.7에서 폐기됨. 스캔 완료 후 작성된 마크다운 보고서의 파일 이름입니다.
DAST_MASK_HTTP_HEADERS 문자열 마스킹할 요청 및 응답 헤더의 쉼표로 구분된 목록입니다. 모든 마스킹할 헤더를 포함해야 합니다. 기본적으로 마스킹되는 헤더 목록은 여기에서 확인하십시오.
DAST_MAX_URLS_PER_VULNERABILITY 숫자 단일 취약점에 대해 보고된 최대 URL 수입니다. DAST_MAX_URLS_PER_VULNERABILITY는 기본적으로 50으로 설정됩니다. 모든 URL을 나열하려면 0으로 설정합니다.
DAST_ONLY_INCLUDE_RULES 문자열 스캔을 설정하여 지정된 취약점 규칙 ID만 실행하도록 하려면 쉼표로 구분된 규칙 ID 목록을 설정합니다. 규칙 ID는 숫자이며 DAST 로그나 ZAP 프로젝트에서 찾을 수 있습니다. DAST_EXCLUDE_RULES가 설정된 경우 사용할 수 없습니다.
DAST_PATHS 문자열 DAST가 스캔할 URL의 쉼표로 구분된 목록을 설정합니다. 예: /page1.html,/category1/page3.html,/page2.html.
DAST_PATHS_FILE 문자열 스캔할 DAST_WEBSITE 내 경로가 포함된 파일 경로입니다. 파일은 각 행에 하나의 경로가 있는 일반 텍스트여야 합니다.
DAST_PKCS12_CERTIFICATE_BASE64 문자열 상호 TLS를 필요로 하는 사이트에 사용되는 PKCS12 인증서입니다. Base64 텍스트로 인코딩되어 있어야 합니다.
DAST_PKCS12_PASSWORD 문자열 DAST_PKCS12_CERTIFICATE_BASE64에서 사용된 인증서의 암호입니다.
DAST_REQUEST_HEADERS 1 문자열 쉼표로 구분된 요청 헤더 이름과 값의 목록을 설정합니다. 헤더는 DAST에 의해 수행된 모든 요청에 추가됩니다. 예: Cache-control: no-cache,User-Agent: DAST/1.0
DAST_SKIP_TARGET_CHECK boolean 스캔 전에 대상의 가용성을 확인하지 않도록 하려면 true로 설정합니다. 기본값: false.
DAST_SPIDER_MINS 1 숫자 스파이더 스캔의 최대 기간(분)입니다. 무제한으로 설정하려면 0으로 설정합니다. 기본값: 일반 스캔일 때는 1분 또는 풀 스캔일 때는 무제한입니다.
DAST_SPIDER_START_AT_HOST boolean 스캔 전에 대상을 해당 호스트로 재설정하지 않도록 하려면 false로 설정합니다. true로 설정하면 http://test.site/some_path와 같은 호스트 이외의 대상은 스캔 전에 http://test.site로 재설정됩니다. 기본값: false.
DAST_TARGET_AVAILABILITY_TIMEOUT 1 숫자 대상 가용성을 확인하는 데 대기할 시간 제한입니다.
DAST_USE_AJAX_SPIDER 1 boolean JavaScript가 필요한 사이트를 크롤링하는 데 유용한 전통적인 스파이더 외에 AJAX 스파이더를 사용하려면 true로 설정합니다. 기본값: false.
DAST_XML_REPORT 문자열 {경고} GitLab 15.7에서 폐기됨. 스캔 완료 후 작성된 XML 보고서의 파일 이름입니다.
DAST_WEBSITE 1 URL 스캔할 웹 사이트의 URL입니다.
DAST_ZAP_CLI_OPTIONS 문자열 {경고} GitLab 15.7에서 폐기됨. ZAP 서버 명령줄 옵션입니다. 예: -Xmx3072m는 Java 최대 메모리 할당 풀 크기를 설정합니다.
DAST_ZAP_LOG_CONFIGURATION 문자열 {경고} GitLab 15.7에서 폐기됨. ZAP 서버의 추가 로그4j 프로퍼티 목록을 세미콜론으로 구분하여 설정합니다. 예: 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에 대한 많은 키/값이 문서화되어 있지 않지만, 가능한 키 목록이 있습니다. 이러한 옵션들은 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"

최신 취약점 정의

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 보고서 파일을 출력합니다. 이 파일은 작업의 아티팩트에 포함됩니다. JSON이 기본 형식이지만 보고서를 Markdown, HTML 및 XML 형식으로 출력할 수 있습니다. 대체 형식을 지정하려면 CI/CD 변수를 사용하세요.

보고서의 스키마에 대한 자세한 내용은 DAST 보고서의 스키마를 참조하세요. 예제 보고서는 DAST 저장소에서 찾을 수 있습니다.

경고: JSON 보고서 아티팩트는 DAST의 공개 API가 아니며 형식이 향후 변경될 것으로 예상됩니다.

문제 해결

사이트 프로필 검증 시 unable to get local issuer certificate 발생

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