DAST 프록시 기반 분석기 (사용 중단됨)
경고: 이 기능은 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와 결합할 때 매우 유용할 수 있습니다.
템플릿
GitLab DAST 구성은 CI/CD 템플릿에 정의되어 있습니다. 템플릿의 업데이트는 GitLab 업그레이드와 함께 제공되어, 개선 사항 및 추가 기능을 활용할 수 있습니다.
사용 가능한 템플릿:
-
DAST.gitlab-ci.yml
: DAST CI/CD 템플릿의 안정 버전 -
DAST.latest.gitlab-ci.yml
: DAST 템플릿의 최신 버전
경고: 템플릿의 최신 버전에는 중요 변경 사항이 포함될 수 있습니다. 최신 템플릿에서만 제공되는 기능이 필요하지 않은 경우 안정 버전 템플릿을 사용하십시오.
템플릿 버전 정보 자세히 알아보려면 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를 실행하려면 다음 중 하나를 수행하십시오.
- Auto DevOps에서 제공하는 Auto DAST를 활성화합니다.
-
수동으로
.gitlab-ci.yml
파일을 편집합니다. - UI를 사용하여 DAST를 구성합니다.
수동으로 .gitlab-ci.yml
파일 편집
이 방법은 기존 .gitlab-ci.yml
파일을 수동으로 편집하는 것입니다. GitLab CI/CD 구성 파일이 복잡한 경우에는 이 방법을 사용하십시오.
DAST 템플릿을 포함하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인 편집기를 선택합니다.
-
다음을
.gitlab-ci.yml
파일의 맨 아래에 복사해 넣습니다. 이미include
행이 있는 경우에는template
행만 추가하십시오.DAST 안정적인 템플릿을 사용하려면:
include: - template: DAST.gitlab-ci.yml
DAST 최신 템플릿을 사용하려면:
include: - template: DAST.latest.gitlab-ci.yml
-
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에서 이에 대한 예시를 확인할 수 있습니다.
-
- 유효성 검사 탭을 선택한 다음 파이프라인 유효성 검사를 선택합니다. 메시지 시뮬레이션이 성공적으로 완료됨은 파일이 유효하다는 것을 나타냅니다.
- 편집 탭을 선택합니다.
- 선택 사항. 커밋 메시지에서 커밋 메시지를 사용자 정의합니다.
- 변경 사항 커밋을 선택합니다.
이제 파이프라인에 DAST 작업이 포함됩니다.
결과는 나중에 다운로드하여 분석할 수 있는 DAST 보고서 아티팩트로 저장됩니다. 구현 제한으로 인해 항상 사용 가능한 최신 DAST 아티팩트를 가져옵니다. 내부적으로 GitLab DAST Docker 이미지가 지정된 URL에서 테스트를 실행하고 가능한 취약점을 스캔하는 데 사용됩니다.
UI를 사용하여 DAST 구성
이 방법은 UI에서 옵션을 선택하는 것입니다. 선택 사항에 따라 .gitlab-ci.yml
파일에 붙여넣을 코드 스니펫이 생성됩니다.
UI를 사용하여 DAST를 구성하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 보안 > 보안 구성을 선택합니다.
- Dynamic Application Security Testing (DAST) 섹션에서 DAST 활성화 또는 DAST 구성을 선택합니다.
- 원하는 스캐너 프로필을 선택하거나 스캐너 프로필 생성을 선택하고 스캐너 프로필을 저장합니다. 자세한 내용은 스캐너 프로필을 참조하십시오.
- 원하는 사이트 프로필을 선택하거나 사이트 프로필 생성을 선택하고 사이트 프로필을 저장합니다. 자세한 내용은 사이트 프로필을 참조하십시오.
- 코드 스니펫 생성을 선택합니다. 선택한 옵션에 해당하는 YAML 스니펫이 포함된 모달이 열립니다.
- 다음 중 하나를 수행하십시오:
- 스니펫을 클립보드에 복사하려면 코드만 복사를 선택합니다.
- 프로젝트의
.gitlab-ci.yml
파일에 스니펫을 추가하려면 코드 복사 및.gitlab-ci.yml
파일 열기를 선택합니다. 파이프라인 편집기가 엽니다.- 스니펫을
.gitlab-ci.yml
파일에 붙여넣습니다. - 유효성 검사 탭을 선택한 다음 파이프라인 유효성 검사를 선택합니다. 메시지 시뮬레이션이 성공적으로 완료됨은 파일이 유효하다는 것을 나타냅니다.
- 편집 탭을 선택합니다.
- 선택 사항. 커밋 메시지에서 커밋 메시지를 사용자 정의합니다.
- 변경 사항 커밋을 선택합니다.
- 스니펫을
이제 파이프라인에 DAST 작업이 포함됩니다.
API 스캔
- DAST API analyzer는 웹 API를 스캔하는 데 사용됩니다. GraphQL, REST, SOAP과 같은 웹 API 기술을 지원합니다.
URL 스캔
- GitLab 13.4에서 도입되었습니다.
- GitLab 13.11에서 개선되었습니다.
URL 스캔은 DAST에 의해 웹 사이트의 특정 부분을 스캔할 수 있게 합니다.
스캔할 URL 정의하기
다음 중 하나의 방법으로 스캔할 URL을 지정할 수 있습니다:
-
DAST_PATHS_FILE
CI/CD 변수를 사용하여 경로가 포함된 파일의 이름을 지정합니다. - 경로를 나열하기 위해
DAST_PATHS
변수를 사용합니다.
DAST_PATHS_FILE
CI/CD 변수 사용
- GitLab 13.6에서 도입되었습니다.
파일에 스캔할 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 변수 사용
- GitLab 13.4에서 도입되었습니다.
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_PATHS
와 DAST_PATHS_FILE
을 사용할 때 다음 사항을 참고하세요:
-
DAST_PATHS_FILE
또는DAST_PATHS
를 사용할 때,DAST_WEBSITE
가 정의되어 있어야 합니다. 둘 중 하나에 나열된 경로는DAST_WEBSITE
를 사용하여 스캔할 URL을 빌드합니다. -
DAST_PATHS
또는DAST_PATHS_FILE
이 정의되었을 때, 스파이더링은 비활성화됩니다. -
DAST_PATHS_FILE
과DAST_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부터 only
및 except
의 사용이 더 이상 지원되지 않습니다. 대신, rules
을 사용해야 합니다.
DAST 설정을 CI/CD 변수를 통해 변경하려면, .gitlab-ci.yml
의 variables
매개변수를 사용합니다. 모든 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_RULES
및 DAST_ONLY_INCLUDE_RULES
는 서로 배타적이며 둘 다 구성된 DAST 스캔은 오류로 종료됩니다.
기본적으로 일부 규칙은 실행하는 데 오랜 시간이 걸리거나 자주 가짜 양성 결과를 생성하기 때문에 비활성화됩니다. 비활성화된 규칙의 전체 목록은 exclude_rules.yml
에서 찾을 수 있습니다.
DAST_EXCLUDE_RULES
및 DAST_ONLY_INCLUDE_RULES
목록은 반드시 이중 인용부호("
)로 묶여 있어야 하며, 그렇지 않으면 숫자 값으로 해석됩니다.
민감한 정보 숨기기
- 소개됨 GitLab 13.1에서.
HTTP 요청 및 응답 헤더에는 쿠키 및 인가 자격 증명을 포함한 민감한 정보가 포함될 수 있습니다. 기본적으로 다음 헤더가 마스킹됩니다:
-
Authorization
. -
Proxy-Authorization
. -
Set-Cookie
(값만). -
Cookie
(값만).
DAST_MASK_HTTP_HEADERS
를 사용하여 값을 마스킹하려는 헤더를 나열할 수 있습니다. 헤더 마스킹 방법에 대한 자세한 내용은 DAST 설정 사용자 정의를 참조하십시오.
상호 TLS 사용
상호 TLS를 사용하여 대상 응용 프로그램 서버가 요청이 알려진 출처에서 온 것임을 확인할 수 있습니다. 브라우저 기반 스캔은 상호 TLS를 지원하지 않습니다.
요구 사항
- Base64로 인코딩된 PKCS12 인증서
- Base64로 인코딩된 PKCS12 인증서의 암호
상호 TLS를 활성화하려면:
-
PKCS12 인증서가 이미 Base64로 인코딩되어 있지 않은 경우 인코딩을 수행합니다. 보안상의 이유로, 인증서를 로컬에서 인코딩하며, 웹 호스팅된 변환 서비스를 사용하지 않습니다. 예를 들어 macOS 또는 Linux에서 인증서를 인코딩하려면:
base64 <path-to-pkcs12-certificate-file>
-
DAST_PKCS12_CERTIFICATE_BASE64
라는 마스킹된 변수를 생성하고 해당 변수에 기본 인코딩된 PKCS12 인증서의 값을 저장합니다. - 마스킹된 변수
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 레지스트리 기본 주소를 설정합니다. |
- 요청 시 사용 가능한 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_STRATEGY
은 none
으로 설정됩니다.
보고서
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을 참조하세요.