DAST 프록시 기반 분석기에서 DAST 버전 5로의 마이그레이션

DAST 버전 5은 프록시 기반 분석기를 브라우저 기반 분석기로 대체합니다. 이 문서는 프록시 기반 분석기에서 DAST 버전 5로 마이그레이션하는 가이드 역할을 합니다.

다음 조건이 모두 해당되면 이 마이그레이션 가이드를 따르세요.

  1. GitLab DAST를 사용하여 CI/CD 파이프라인에서 DAST 스캔을 실행합니다.
  2. DAST CI/CD 작업은 DAST.gitlab-ci.yml 또는 DAST.latest.gitlab-ci.yml 템플릿 중 하나를 포함하여 구성됩니다.
  3. CI/CD 변수 DAST_VERSION이 설정되지 않았거나 4 이하로 설정되어 있습니다.
  4. CI/CD 변수 DAST_BROWSER_SCAN이 설정되지 않았거나 false로 설정되어 있습니다.

권장 사항을 따라 DAST 버전 5로 마이그레이션하세요.

DAST 분석기 버전

DAST는 4 및 5 두 가지의 주요 버전으로 나뉩니다. 세 번째 GitLab 17.0 breaking change 윈도우인 2024년 5월 6일 09:00 UTC부터 2024년 5월 8일 22:00 UTC까지, DAST.gitlab-ci.ymlDAST.latest.gitlab-ci.yml 템플릿은 기본적으로 DAST 버전 5를 사용합니다.

DAST 버전 4를 계속 사용할 수 있지만, DAST 버전 5로의 마이그레이션 중에만 그렇게 해야 합니다. 자세한 내용은 프록시 기반 분석기 계속 사용를 참조하세요.

각 DAST 주요 버전은 기본적으로 다른 분석기를 사용합니다.

  • DAST 버전 4는 프록시 기반 분석기를 사용합니다.
  • DAST 버전 5는 브라우저 기반 분석기를 사용합니다.

DAST 버전 5는 새로운 CI/CD 변수 집합을 사용합니다. DAST 버전 4 변수 이름에 대한 별칭이 만들어졌습니다.

수정해야 할 사항:

  • GitLab 16.11 및 이전 버전에서 DAST 버전 5를 사용하여 DAST 스캔을 테스트하려면, CI/CD 변수 DAST_VERSION5로 설정하세요.

프록시 기반 분석기 계속 사용

GitLab 18.0까지 프록시 기반 DAST를 계속 사용할 수 있습니다. 이 레거시 분석기의 버그 및 취약점은 수정되지 않을 것입니다.

수정해야 할 사항:

  • 프록시 기반 분석기를 계속 사용하려면, CI/CD 변수 DAST_VERSION4로 설정하세요.

아티팩트

GitLab 17.0은 자동으로 DAST 버전 5에서 생성된 아티팩트를 DAST CI 작업에 공개합니다.

수정해야 할 사항:

  • 파일 로그, 크롤 그래프 또는 인증 보고서를 노출하기 위해 artifacts을 CI 작업 정의에서 제거하세요.
  • CI/CD 변수 DAST_BROWSER_FILE_LOG_PATHDAST_FILE_LOG_PATH는 더 이상 필요하지 않습니다.

인증

프록시 기반 분석기와 DAST 버전 5는 둘 다 브라우저 기반 분석기를 사용하여 인증합니다. DAST 버전 5로 업그레이드하더라도 인증 방법은 변경되지 않습니다.

수정해야 할 사항:

  • DAST_AUTH 접두사를 가진 인증 CI/CD 변수의 이름을 변경하세요.
  • 이미 수행하지 않았다면 DAST_SCOPE_EXCLUDE_URLS를 사용하여 스캔에서 로그아웃 URL을 제외하세요.

크롤링

DAST 버전 5는 브라우저에서 대상 응용 프로그램을 크롤링하여 더 나은 크롤링 범위를 제공합니다. 이는 동등한 프록시 기반 분석기 크롤링보다 더 많은 리소스를 필요로 할 수 있습니다.

수정해야 할 사항:

  • DAST_WEBSITE 대신 DAST_TARGET_URL을 사용하세요.
  • DAST_SPIDER_MINS 대신 기간을 사용하는 DAST_CRAWL_TIMEOUT을 사용하세요. 예를 들어, 5 대신 5m을 사용하세요.
  • CI/CD 변수 DAST_USE_AJAX_SPIDER, DAST_SPIDER_START_AT_HOST, DAST_ZAP_CLI_OPTIONSDAST_ZAP_LOG_CONFIGURATION은 더 이상 지원되지 않습니다.
  • DAST가 10MB보다 큰 응답 본문을 처리해야 하는 경우 DAST_PAGE_MAX_RESPONSE_SIZE_MB를 구성하세요.
  • DAST 작업을 실행하는 GitLab Runner에 더 많은 CPU 리소스를 제공하는 것을 고려하세요.

범위

DAST 버전 5는 프록시 기반 분석기보다 범위를 더 잘 제어합니다.

수정해야 할 사항:

  • DAST_ALLOWED_HOSTS 대신 DAST_SCOPE_ALLOW_HOSTS를 사용하세요.
  • DAST_TARGET_URL의 도메인은 자동으로 DAST_SCOPE_ALLOW_HOSTS에 추가됩니다. 대상 응용 프로그램 API 및 자산 엔드포인트의 도메인을 추가하는 것을 고려해보세요.
  • (인증 중에만) DAST_SCOPE_EXCLUDE_HOSTS에 도메인을 추가하여 스캔에서 도메인을 제거하세요.

취약점 확인

필요한 변경 사항

DAST 버전 5는 GitLab에서 작성한 취약점 정의를 사용하며, 이는 프록시 기반 분석기 정의와 직접 매핑되지 않습니다.

수정해야 할 사항:

  • DAST_ONLY_INCLUDE_RULES 대신 DAST_CHECKS_TO_RUN을 사용하세요. GitLab DAST 취약점 확인 ID를 사용한 변경 사항입니다.
  • DAST_EXCLUDE_RULES 대신 DAST_CHECKS_TO_EXCLUDE을 사용하세요. GitLab DAST 취약점 확인 ID를 사용한 변경 사항입니다.
  • GitLab DAST 취약점 확인 ID의 설명 및 ID에 대한 취약점 확인 문서를 참조하세요.
  • CI/CD 변수 DAST_AGGREGATE_VULNERABILITIESDAST_MAX_URLS_PER_VULNERABILITY은 더 이상 지원되지 않습니다.

마이그레이션으로 인한 다른 취약점 생성 이유

프록시 기반 스캔과 브라우저 기반 DAST 버전 5 스캔은 서로 다른 취약점 검사 집합을 사용하기 때문에 동일한 결과를 출력하지 않습니다.

DAST 버전 5에는 너무 많은 잘못된 양성이 생성되지 않거나 현대 브라우저에서 해당 취약점이 악용될 수 없기 때문에 실행할 가치가 없는 프록시 기반 체크의 해당 항목에 대한 동등한 항목이 없습니다. 또한 더 이상 관련성이 없는 항목도 포함되어 있습니다. DAST 버전 5 스캔은 응용 프로그램의 더 많은 부분을 스캔하기 때문에 더 많은 취약점을 식별할 수 있습니다.

커버리지

브라우저 기반 DAST 버전 5가 다루지 않는 프록시 기반 능동적인 검사가 세 가지 있습니다. 완전한 커버리지를 제공하기 위해 더 많은 검사를 추가하는 작업이 진행 중이며 이전 DAST_VERSION: 4로 유지할 수 있습니다. 프록시 기반 분석기 계속 사용를 참조하세요.

남아 있는 검사:

  • CWE-79: Cross-site Scripting (XSS)
  • CWE-384: Session Fixation
  • CWE-16: TRACE HTTP

남아 있는 검사의 진행 상황은 에픽 남아 있는 BBD용 능동적 검사를 확인하세요.

온디맨드 스캔

온디맨드 스캔은 DAST 버전 5을 사용하여 브라우저 기반 스캔을 GitLab 17.0에서 실행합니다.

문제 해결

DAST 버전 5 문제 해결 문서를 참조하세요.

CI/CD 변수 변경 사항

다음 표는 각 프록시 기반 분석기 CI/CD 변수에 대한 마이그레이션 조치를 요약한 것입니다. 자세한 정보는 구성을 참조하세요.

프록시 기반 분석기 CI/CD 변수 필요한 작업 비고
DAST_ADVERTISE_SCAN 이름 변경 DAST_REQUEST_ADVERTISE_SCAN로 변경
DAST_ALLOWED_HOSTS 이름 변경 DAST_SCOPE_ALLOW_HOSTS로 변경
DAST_API_HOST_OVERRIDE 제거 미지원
DAST_API_SPECIFICATION 제거 미지원
DAST_AUTH_EXCLUDE_URLS 이름 변경 DAST_SCOPE_EXCLUDE_URLS로 변경
DAST_AUTO_UPDATE_ADDONS 제거 미지원
DAST_BROWSER_FILE_LOG_PATH 제거 더 이상 필요하지 않음
DAST_DEBUG 제거 미지원
DAST_EXCLUDE_RULES 이름 변경, ID 업데이트 DAST_CHECKS_TO_EXCLUDE로 변경
DAST_EXCLUDE_URLS 이름 변경 DAST_SCOPE_EXCLUDE_URLS로 변경
DAST_FILE_LOG_PATH 제거 더 이상 필요하지 않음
DAST_FULL_SCAN_ENABLED 이름 변경 DAST_FULL_SCAN로 변경
DAST_HTML_REPORT 제거 미지원
DAST_INCLUDE_ALPHA_VULNERABILITIES 제거 미지원
DAST_MARKDOWN_REPORT 제거 미지원
DAST_MASK_HTTP_HEADERS 제거 미지원
DAST_MAX_URLS_PER_VULNERABILITY 제거 미지원
DAST_ONLY_INCLUDE_RULES 이름 변경, ID 업데이트 DAST_CHECKS_TO_RUN로 변경
DAST_PATHS 없음 지원됨
DAST_PATHS_FILE 없음 지원됨
DAST_PKCS12_CERTIFICATE_BASE64 없음 지원됨
DAST_PKCS12_PASSWORD 없음 지원됨
DAST_SKIP_TARGET_CHECK 없음 지원됨
DAST_SPIDER_MINS 변경 5 대신 기간을 사용하는 DAST_CRAWL_TIMEOUT을 사용하세요. 예를 들어, 5 대신 5m을 사용하세요
DAST_SPIDER_START_AT_HOST 제거 미지원
DAST_TARGET_AVAILABILITY_TIMEOUT 변경 60 대신 기간을 사용하는 DAST_TARGET_CHECK_TIMEOUT을 사용하세요. 예를 들어, 60 대신 60s를 사용하세요
DAST_USE_AJAX_SPIDER 제거 미지원
DAST_XML_REPORT 제거 미지원
DAST_WEBSITE 이름 변경 DAST_TARGET_URL로 변경
DAST_ZAP_CLI_OPTIONS 제거 미지원
DAST_ZAP_LOG_CONFIGURATION 제거 미지원
SECURE_ANALYZERS_PREFIX 없음 지원됨