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

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
caution
이 기능은 GitLab 16.9에서 폐기 예정되었으며 17.0에서 제거될 예정입니다. 대신 브라우저 기반 DAST를 사용하십시오. 이 변경 사항은 대규모 변경 사항입니다.

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

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

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

분석기는 소프트웨어 보안 프로젝트 Zed Attack Proxy (ZAP)를 통해 두 가지 방법으로 스캔합니다:

  • 패시브 스캔만 (기본). DAST는 ZAP의 베이스 라인 스캔을 실행하며 응용 프로그램을 능동적으로 공격하지 않습니다.
  • 패시브 및 능동 (또는 전체) 스캔. DAST는 응용 프로그램을 공격하고 보다 포괄적인 보안 보고서를 생성하기 위해 추가로 능동 스캔을 수행하도록 구성 될 수 있습니다. Review Apps와 결합하여 매우 유용할 수 있습니다.

템플릿

GitLab DAST 구성은 CI/CD 템플릿에서 정의됩니다. 템플릿의 업데이트는 GitLab 업그레이드와 함께 제공되어 출시된 향상 및 추가 기능을 활용할 수 있습니다.

사용 가능한 템플릿:

caution
템플릿의 최신 버전에는 대규모 변경 사항이 포함될 수 있습니다. 최신 템플릿에서 제공되는 기능이 필요한 경우에만 안전한 템플릿을 사용하십시오.

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

DAST 버전

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

  • 새로운 기능 및 수정 사항을 자동으로 업데이트하도록 DAST를 고정하여 사용 (예: 1).
  • 마이너 버전을 고정하여 수정 사항만 업데이트하도록 사용 (예: 1.6).
  • 특정 버전을 고정하여 모든 업데이트를 방지 (예: 1.6.4).

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

DAST 실행 옵션

DAST를 사용하여 웹 애플리케이션을 확인할 수 있습니다:

  • Merge Request에 의해 자동으로 시작됨.
  • 매뉴얼으로 요청에 의해 매뉴얼으로 시작됨.

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

자동 스캔 매뉴얼 스캔
Merge Request에 의해 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. 빌드 > 파이프라인 편집기를 선택합니다.
  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 보고서 artifact 로 저장되어 나중에 다운로드하여 분석할 수 있습니다. 구현 제한 사항으로 인해 항상 사용 가능한 최신 DAST artifact를 사용합니다. 내부적으로 GitLab DAST Docker 이미지 가 지정된 URL에서 테스트를 실행하고 가능한 취약점에 대해 스캔합니다.

UI를 사용하여 DAST 구성하기

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

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

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 보안 구성을 선택합니다.
  3. 동적 애플리케이션 보안 테스트 (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 분석기는 웹 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 스캔은 프로젝트 리포지터리를 복제하지 않습니다. 프로젝트를 복제하도록 DAST 작업에게 지시하려면 GIT_STRATEGY를 fetch로 설정하고 DAST_PATHS_FILECI_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를 정의해야 합니다. 둘 중에 있는 경로는 스캔할 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 변수를 사용합니다.

인증

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

DAST 설정 사용자 정의

CI/CD 변수 및 명령줄 옵션을 사용하여 DAST의 동작을 사용자 정의할 수 있습니다. CI/CD 변수의 사용은 DAST 템플릿에 포함된 값으로 대체됩니다.

CI/CD 변수 사용하여 DAST 사용자 정의

caution
GitLab 13.0에서 onlyexcept 사용이 더 이상 지원되지 않습니다. 대신 rules를 사용해야 합니다.

.gitlab-ci.ymlvariables 매개변수를 사용하여 CI/CD 변수를 통해 DAST 설정을 변경할 수 있습니다. 모든 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 documentation에서 찾을 수 있습니다.

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 <path-to-pkcs12-certificate-file>
    
  2. DAST_PKCS12_CERTIFICATE_BASE64라는 마스킹된 변수를 만들고 해당 변수에 Base64로 인코딩된 PKCS12 인증서의 값을 저장하세요.
  3. DAST_PKCS12_PASSWORD라는 마스킹된 변수를 만들고 해당 변수에 PKCS12 인증서의 암호를 저장하세요.

사용 가능한 CI/CD 변수

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

caution
GitLab 보안 스캔 도구의 모든 사용자 정의는 기본 브랜치로 Merge하기 전에 Merge Request에서 테스트되어야 합니다. 그렇지 않으면 예상치 못한 결과가 발생할 수 있으며, 거짓 긍정이 많이 발생할 수 있습니다.
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 string GitLab 16.0에서 삭제되었습니다. DAST API scan로 대체되었습니다.
DAST_API_SPECIFICATION 1 URL 또는 문자열 GitLab 16.0에서 삭제되었습니다. DAST API scan로 대체되었습니다.
DAST_AUTH_EXCLUDE_URLS URL GitLab 14.0에서 삭제되었습니다. DAST_EXCLUDE_URLS로 대체되었습니다. 인증된 스캔 중 건너뛸 URL의 디렉터리으로, 쉼표로 구분됩니다. 정규 표현식 구문을 사용하여 여러 URL을 일치시킬 수 있습니다. 예: .*는 임의의 문자 시퀀스와 일치합니다.
DAST_AUTO_UPDATE_ADDONS boolean ZAP 애드온은 DAST Docker 이미지에서 특정 버전에 고정됩니다. 스캔이 시작될 때 최신 버전을 다운로드하려면 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 전체 스캔을 실행하려면 true로 설정하세요. 기본값: false
DAST_HTML_REPORT string GitLab 15.7에서 폐기예정되었습니다. 스캔 종료 시 작성된 HTML 보고서의 파일 이름입니다.
DAST_INCLUDE_ALPHA_VULNERABILITIES boolean 알파 패시브 및 액티브 스캔 규칙을 포함하려면 true로 설정하세요. 기본값: false.
DAST_MARKDOWN_REPORT string GitLab 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으로 설정하세요. 기본값: 일 분 또는 전체 스캔일 때 제한이 없습니다.
DAST_SPIDER_START_AT_HOST boolean DAST가 스캔 전에 대상을 해당 호스트로 재설정하는 것을 방지하려면 false로 설정하세요. true로 설정되면 호스트가 아닌 대상 http://test.site/some_path이 스캔 전에 http://test.site로 재설정됩니다. 기본값: false.
DAST_TARGET_AVAILABILITY_TIMEOUT 1 number 대상의 사용 가능성을 확인하는 데 대기할 최대 시간 제한입니다.
DAST_USE_AJAX_SPIDER 1 boolean JavaScript가 필요한 사이트 크롤링에 유용한 전통적인 스파이더에 추가로 AJAX 스파이더를 사용하려면 true로 설정하세요. 기본값: false.
DAST_XML_REPORT string GitLab 15.7에서 폐기예정되었습니다. 스캔 종료 시 작성된 XML 보고서의 파일 이름입니다.
DAST_WEBSITE 1 URL 스캔할 웹사이트의 URL입니다.
DAST_ZAP_CLI_OPTIONS string GitLab 15.7에서 폐기예정되었습니다. ZAP 서버 명령줄 옵션입니다. 예: -Xmx3072m은 Java 최대 메모리 할당 풀 크기를 설정합니다.
DAST_ZAP_LOG_CONFIGURATION string GitLab 15.7에서 폐기예정되었습니다. ZAP 서버를 위한 추가적인 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 레지스트리 기본 주소를 설정하세요.

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

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

include:
  template: DAST.gitlab-ci.yml

dast:
  script:
    - /analyze --help

그런 다음 script 명령을 덮어쓰고 적절한 매개변수를 전달해야 합니다. 예를 들어, ‘alpha’에서 취약점 정의를 포함하려면 -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 리포지터리에서 찾을 수 있습니다.

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

문제 해결

unable to get local issuer certificate 사이트 프로필을 유효성 검사하려는 경우

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