DAST 브라우저 기반 분석기
- 일반 제공 GitLab 15.7에서 (GitLab DAST v3.0.50).
DAST 버전 5로 마이그레이션하는 방법에 대한 지침은 마이그레이션 가이드를 참조하십시오.
브라우저 기반 DAST는 웹 애플리케이션의 보안 취약점(CWEs)을 식별하는 데 도움을 줍니다.
웹 애플리케이션을 배포한 후, 새로운 유형의 공격에 노출되며, 이 중 많은 공격은 배포 전에 감지할 수 없습니다.
예를 들어, 애플리케이션 서버의 잘못된 구성 또는 보안 제어에 대한 잘못된 가정은 소스 코드에서 확인할 수 없지만,
브라우저 기반 DAST를 통해 감지할 수 있습니다.
동적 애플리케이션 보안 테스트(DAST)는 배포된 환경에서 이러한 취약점을 검사합니다.
개요는 동적 애플리케이션 보안 테스트(DAST)를 참조하십시오.
버그를 유발하여 생산 데이터의 수정 또는 손실로 이어질 수 있습니다. DAST 스캔은 테스트 서버에서만 실행하십시오.
DAST 브라우저 기반 분석기는 GitLab에 의해 현대의 웹 애플리케이션에서 취약점을 스캔하기 위해 구축되었습니다.
스캔은 브라우저에서 실행되어 JavaScript에 크게 의존하는 애플리케이션, 예를 들어 단일 페이지 애플리케이션의 테스트를 최적화합니다.
자세한 내용은 DAST가 애플리케이션을 스캔하는 방법을 참조하십시오.
CI/CD 파이프라인에 분석기를 추가하려면 분석기 활성화를 참조하십시오.
DAST가 애플리케이션을 스캔하는 방법
스캔은 다음 단계를 수행합니다:
- 인증합니다. (구성된 경우)
- 크롤링하여 사용자 작업을 수행함으로써 애플리케이션의 표면 영역을 발견합니다.
- 수동 스캔을 통해 크롤링 중 발견된 HTTP 메시지와 페이지에서 취약점을 검색합니다.
- 능동 스캔을 통해 크롤링 단계에서 기록된 HTTP 요청에 페이로드를 주입하여 취약점을 검색합니다.
애플리케이션 크롤링
“내비게이션”은 사용자가 페이지에서 수행할 수 있는 동작이며, 버튼 클릭, 앵커 링크 클릭, 메뉴 항목 열기, 또는 양식 작성 등이 있습니다.
“내비게이션 경로”는 사용자가 애플리케이션을 탐색할 때 수행할 수 있는 내비게이션 동작의 시퀀스를 나타냅니다.
DAST는 페이지와 콘텐츠를 크롤링하고 내비게이션 경로를 식별함으로써 애플리케이션의 표면 영역을 발견합니다.
크롤링은 하나의 내비게이션을 포함하는 내비게이션 경로로 초기화되며, 이 내비게이션은 목표 애플리케이션 URL을 특수 장비가 설치된 크로미움 브라우저에서 로드합니다.
그 후 DAST는 모든 내비게이션 경로가 크롤링될 때까지 크롤링을 진행합니다.
내비게이션 경로를 크롤링하기 위해 DAST는 브라우저 창을 열고 내비게이션 경로에 있는 모든 내비게이션 동작을 수행하도록 지시합니다.
최종 동작의 결과를 로드한 후 브라우저가 완료되면 DAST는 사용자가 수행할 수 있는 동작에 대해 페이지를 검사하고,
각 동작에 대해 새로운 내비게이션을 생성하여 내비게이션 경로에 추가하여 새로운 내비게이션 경로를 형성합니다. 예를 들어:
- DAST는 내비게이션 경로
LoadURL[https://example.com]
를 처리합니다. - DAST는 두 개의 사용자 동작
LeftClick[class=menu]
와LeftClick[id=users]
를 찾습니다. - DAST는 두 개의 새로운 내비게이션 경로
LoadURL[https://example.com] -> LeftClick[class=menu]
와LoadURL[https://example.com] -> LeftClick[id=users]
를 생성합니다. - 두 개의 새로운 내비게이션 경로에 대한 크롤링이 시작됩니다.
HTML 요소는 애플리케이션의 여러 위치에 존재하는 것이 일반적이며, 예를 들어, 모든 페이지에 보이는 메뉴와 같습니다.
중복 요소는 크롤러가 동일한 페이지를 다시 크롤링하거나 루프에 갇힐 수 있습니다.
DAST는 HTML 속성을 기반으로 한 요소 유일성 계산을 사용하여 이전에 크롤링한 새로운 내비게이션 동작을 취소합니다.
패시브 스캔
패시브 스캔은 스캔의 크롤링 단계에서 발견된 페이지에서 취약점을 검사합니다.
패시브 스캔은 기본적으로 활성화되어 있습니다.
검사는 HTTP 메시지, 쿠키, 스토리지 이벤트, 콘솔 이벤트 및 DOM에서 취약점을 검색합니다.
패시브 체크의 예로는 노출된 신용 카드, 노출된 비밀 토큰, 누락된 콘텐츠 보안 정책 및 신뢰할 수 없는 위치로의 리디렉션 확인이 포함됩니다.
개별 체크에 대한 자세한 내용은 체크를 참조하세요.
액티브 스캔
액티브 스캔은 스캔의 크롤링 단계에서 기록된 HTTP 요청에 공격 페이로드를 주입하여 취약점을 검사합니다.
액티브 스캔은 탐색 공격의 성격 때문에 기본적으로 비활성화되어 있습니다.
DAST는 쿼리 값, 헤더 값, 쿠키 값, 폼 포스트 및 JSON 문자열 값과 같은 주입 위치에 대해 각 기록된 HTTP 요청을 분석합니다.
공격 페이로드는 주입 위치에 주입되어 새로운 요청을 형성합니다.
DAST는 요청을 대상 애플리케이션에 전송하고 HTTP 응답을 사용하여 공격 성공 여부를 판단합니다.
액티브 스캔은 두 가지 유형의 액티브 체크를 실행합니다:
- 응답 매치 공격은 응답 내용을 분석하여 공격 성공 여부를 결정합니다. 예를 들어, 공격이 시스템 비밀번호 파일을 읽으려 할 경우, 응답 본문에 비밀번호 파일의 증거가 포함될 때 발견 사항이 생성됩니다.
- 타이밍 공격은 응답 시간을 사용하여 공격 성공 여부를 판단합니다. 예를 들어, 공격이 대상 애플리케이션을 재우려 할 경우, 애플리케이션이 수면 시간보다 더 오랜 시간 동안 응답할 때 발견 사항이 생성됩니다. 타이밍 공격은 잘못된 긍정 반응을 최소화하기 위해 다양한 공격 페이로드로 여러 번 반복됩니다.
단순화된 타이밍 공격은 다음과 같이 작동합니다:
-
크롤링 단계는 HTTP 요청
https://example.com?search=people
를 기록합니다. -
DAST는 URL을 분석하고 URL 매개변수 주입 위치
https://example.com?search=[INJECT]
를 찾습니다. -
액티브 체크는 리눅스 호스트를 재우도록 시도하는 페이로드
sleep 10
을 정의합니다. -
DAST는 주입된 페이로드
https://example.com?search=sleep%2010
로 대상 애플리케이션에 새로운 HTTP 요청을 보냅니다. -
대상 애플리케이션이 쿼리 매개변수 값을 검증 없이 시스템 명령으로 실행하면 취약합니다. 예를 들어,
system(params[:search])
와 같이요. -
응답 시간이 10초 이상 걸리면 DAST는 발견 사항을 생성합니다.