웹 API 퍼즈 테스팅
웹 API 퍼즈 테스팅은 API 작업 매개변수의 퍼즈 테스팅을 수행합니다. 퍼즈 테스팅은 API 백엔드에서 예기치 않은 동작과 오류를 유발하기 위해 작업 매개변수를 예상치 못한 값으로 설정합니다. 이를 통해 QA 프로세스에서 놓칠 수 있는 버그 및 잠재적 보안 문제를 발견할 수 있습니다.
GitLab Secure의 다른 보안 스캐너 및 자체 테스트 프로세스와 함께 퍼즈 테스팅을 사용하는 것을 권장합니다. GitLab CI/CD를 사용 중이라면 퍼즈 테스트를 CI/CD 워크플로우의 일부로 실행할 수 있습니다.
개요는 웹 API 퍼즈 테스팅을 참조하세요.
웹 API 퍼즈 테스팅 실행 시기
웹 API 퍼즈 테스팅은 CI/CD 파이프라인의 fuzz
단계에서 실행됩니다. API 퍼즈 테스팅이 최신 코드를 스캔하도록 하려면 CI/CD 파이프라인은 fuzz
단계 이전의 단계 중 하나에서 변경 사항을 테스트 환경에 배포해야 합니다.
파이프라인이 각 실행마다 동일한 웹 서버로 배포하도록 구성되어 있으면, 다른 파이프라인이 실행 중일 때 파이프라인을 실행하면 다른 파이프라인의 코드를 덮어쓸 수 있는 경합 조건이 발생할 수 있습니다. 퍼즈 테스팅 스캔 기간 동안에는 스캔할 API가 변경되지 않아야 합니다. API에 대한 변경 사항은 퍼즈 테스터가 동안에만 허용되어야 합니다. 스캔 중에 API에 대한 변경(예: 사용자, 예약된 작업, 데이터베이스 변경, 코드 변경, 기타 파이프라인 또는 다른 스캐너)이 발생하면 부정확한 결과를 초래할 수 있습니다.
다음 방법으로 웹 API 퍼즈 테스팅 스캔을 실행할 수 있습니다:
- OpenAPI Specification - 버전 2 및 3.
- GraphQL Schema
- HTTP Archive (HAR)
- Postman Collection - 버전 2.0 또는 2.1
이러한 방법을 사용한 예제 프로젝트를 확인할 수 있습니다:
- 예제 OpenAPI v2 Specification 프로젝트
- 예제 HTTP Archive (HAR) 프로젝트
- 예제 Postman Collection 프로젝트
- 예제 GraphQL 프로젝트
- 예제 SOAP 프로젝트
- Selenium을 사용한 인증 토큰
지원 받거나 개선 사항 요청
특정 문제에 대한 지원을 받으려면 도움 채널을 사용하세요.
API 보안 및 API 퍼즈 테스팅에 대한 버그 및 기능 제안은 GitLab.com의 GitLab 이슈 트래커가 올바른 위치입니다. API 퍼즈 테스팅에 관한 새로운 이슈를 오픈할 때 ~"Category:API Security"
label을 사용하여 해당 사람들이 빠르게 검토할 수 있도록 하세요. 응답을 받아야 하는 기한에 대한 자세한 내용은 리뷰 응답 SLO을 참조하세요.
자신의 문제 또는 기능 제안을 제출하기 전에 유사한 항목을 찾아보세요. 다른 사람이 동일한 문제나 기능 제안을 할 가능성이 높습니다. 이에 동의 표시를 하거나 토론에 참여하세요.
예상한 대로 작동하지 않는 동작을 경험할 때에는 관련 정보를 제공하는 것을 고려하세요:
- Self-Managed형 인스턴스를 사용하는 경우 GitLab 버전.
-
.gitlab-ci.yml
작업 정의. - 전체 작업 콘솔 출력.
- 작업 artifact로 제공되는 스캐너 로그 파일인
gl-api-security-scanner.log
.
용어집
- Assert: 확인은 체크에서 트리거하는 결함용 탐지 모듈입니다. 많은 확인에는 구성이 있습니다. 여러 확인을 사용할 수 있습니다. 예를 들어, 로그 분석, 응답 분석 및 상태 코드는 일반적으로 함께 사용되는 확인입니다. 여러 결과를 사용하는 확인을 켜거나 끌 수 있습니다.
- Check: 특정 유형의 테스트를 수행하거나 특정 취약성 유형에 대한 확인을 수행합니다. 예를 들어, JSON 퍼즈 테스트 확인은 JSON 페이로드의 퍼즈 테스팅을 수행합니다. API 퍼저는 여러 확인으로 구성됩니다. 프로필에서 확인을 켜거나 끌 수 있습니다.
- Fault: 퍼증 중에 확인에서 식별된 실패를 결함이라고 합니다. 결함은 보안 취약점, 비 보안 문제 또는 잘못된 양성 여부를 확인하기 위해 조사됩니다. 결함은 조사되기 전까지 알려진 취약점 유형을 가지고 있지 않습니다. 예시 취약점 유형으로는 SQL Injection 및 서비스 거부가 있습니다.
- Profile: 구성 파일에 하나 이상의 테스트 프로필 또는 하위 구성이 있습니다. 기능 브랜치를 위한 프로필과 별도의 검사를 위한 추가 프로필이 있을 수 있습니다.