- DAST 작업 디버깅
- 메모리 부족 문제
- 작업 시간 초과 문제
- 경고 메시지
gl-dast-report.json: no matching files
이 표시되는 경우 - DAST CI 템플릿을 포함할 때
dast job: chosen stage does not exist
오류가 발생하는 경우 - DAST CI/CD 템플릿을 사용할 때
shell not found
오류가 발생하는 경우 - IPv6 지원 부족
- DAST 스캔 활동의 추가 정보
DAST 프록시 기반 분석기 문제 해결
다음은 고객 지원 사례에서 수집된 문제 해결 시나리오입니다. 여기에 언급되지 않은 문제가 발생하거나 여기의 정보로 문제를 해결할 수 없는 경우 도움을 받는 방법은 GitLab 고객 지원 페이지를 확인하세요.
DAST 작업 디버깅
DAST 작업에는 두 개의 실행 프로세스가 있습니다:
- ZAP 서버.
- ZAP 서버를 시작, 제어 및 중지하는 일련의 스크립트.
DAST_DEBUG
CI/CD 변수를 사용하여 스크립트를 디버깅할 수 있습니다. 이는 작업을 해결하는 데 도움이 되며 스캔이 완료된 백분율을 나타내는 문장을 출력합니다.
변수 사용에 대한 자세한 내용은 DAST 템플릿 재정의을 참조하세요.
ZAP 서버의 디버그 모드는 DAST_ZAP_LOG_CONFIGURATION
변수를 사용하여 활성화할 수 있습니다.
다음 표에는 설정할 수 있는 값의 예와 출력에 미치는 영향에 대한 내용이 나와 있습니다.
세미콜론으로 구분하여 여러 값을 지정할 수 있습니다.
예를 들어, log4j.logger.org.parosproxy.paros.network.HttpSender=DEBUG;log4j.logger.com.crawljax=DEBUG
입니다.
로그 구성 값 | 영향 |
---|---|
log4j.rootLogger=DEBUG
| 모든 디버그 로깅 문장을 활성화합니다. |
log4j.logger.org.apache.commons.httpclient=DEBUG
| ZAP 서버에서 수행된 모든 HTTP 요청 및 응답을 기록합니다. |
log4j.logger.org.zaproxy.zap.spider.SpiderController=DEBUG
| 대상의 스파이더 스캔에서 찾은 URL을 기록합니다. |
log4j.logger.com.crawljax=DEBUG
| Ajax Crawler 디버그 로깅 문장을 활성화합니다. |
log4j.logger.org.parosproxy.paros=DEBUG
| ZAP 서버 프록시의 디버그 로깅 문장을 활성화합니다. |
log4j.logger.org.zaproxy.zap=DEBUG
| 일반 ZAP 서버 코드의 디버그 로깅 문장을 활성화합니다. |
메모리 부족 문제
기본적으로 DAST가 의존하는 ZAProxy에는 호스트의 총 메모리의 25%에 해당하는 메모리가 할당됩니다. 스캔 중에 대부분의 정보를 메모리에 유지하므로 대규모 애플리케이션을 스캔하는 동안 DAST 메모리가 부족해질 수 있습니다. 이로 인해 다음과 같은 오류가 발생합니다:
[zap.out] java.lang.OutOfMemoryError: Java heap space
다행히도, DAST_ZAP_CLI_OPTIONS
CI/CD 변수를 사용하여 DAST에 사용 가능한 메모리량을 쉽게 늘릴 수 있습니다.
include:
- template: DAST.gitlab-ci.yml
variables:
DAST_ZAP_CLI_OPTIONS: "-Xmx3072m"
이 예제는 DAST에 3072 MB를 할당합니다. 필요한 메모리 양에 따라 -Xmx
뒤의 숫자를 변경하세요.
작업 시간 초과 문제
DAST 작업이 작업 시간을 초과하는 경우 스캔 기간을 줄이고 싶으면 블로그 글에서 DAST 스캔을 최적화하는 팁을 확인하세요.
경고 메시지 gl-dast-report.json: no matching files
이 표시되는 경우
이에 대한 정보는 일반 애플리케이션 보안 문제 해결 섹션을 참조하세요.
DAST CI 템플릿을 포함할 때 dast job: chosen stage does not exist
오류가 발생하는 경우
타 CI 파일에서 스테이지를 덮어쓰지 않도록 하기 위해, 최신 버전의 DAST CI 템플릿에서는 스테이지를 정의하지 않습니다. 최신 버전의 DAST.latest.gitlab-ci.yml
을 최근에 사용하기 시작했거나 새로운 GitLab 주요 릴리스로 업그레이드한 경우 이 오류를 받게 됩니다.
다른 스테이지와 함께 dast
스테이지를 정의해야 합니다. DAST 스캔을 실행할 수 있도록 파이프라인에 애플리케이션이 설정되어 있다면, 해당 애플리케이션을 dast
스테이지 전에 배포해야 합니다.
stages:
- deploy # DAST가 스캔할 실행 중인 애플리케이션이 필요합니다
- dast
include:
- template: DAST.latest.gitlab-ci.yml
DAST CI/CD 템플릿을 사용할 때 shell not found
오류가 발생하는 경우
문서에서 설명한대로 DAST CI/CD 템플릿을 포함하는 경우 작업이 실패할 수 있으며, 작업 로그에 다음과 같은 오류가 기록될 수 있습니다.
shell not found
이 오류를 피하려면 최신 안정 버전의 Docker를 사용하는지 확인하세요. 자세한 내용은 issue 358847를 참조하세요.
IPv6 지원 부족
기반이 되는 ZAProxy 엔진이 IPv6을 지원하지 않기 때문에 DAST는 IPv6 기반 애플리케이션을 스캔하거나 크롤할 수 없습니다.
DAST 스캔 활동의 추가 정보
특정 시점에서 DAST 스캔이 수행 중인 작업에 대한 추가 정보를 얻으려면 DAST 대상 엔드포인트의 웹 서버 액세스 로그를 검토하는 것이 도움이 될 수 있습니다.