웹 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을 이용한 인증 토큰
지원 받기 또는 개선 요청하기
특정 문제에 대한 지원을 받으려면 지원 채널을 사용하세요.
GitLab.com의 GitLab 이슈 트래커는 API 보안 및 API 퍼징에 대한
버그 및 기능 제안에 적합한 장소입니다. API 퍼징과 관련하여 새로운 이슈를 열 때는
~"Category:API Security"
라벨을 사용하여
적절한 사람들이 신속하게 검토하도록 하세요. 우리의 리뷰 응답 SLO를 참조하여
응답을 받을 시기를 이해하세요.
이전 이슈와 유사한 항목을 제출하기 전에 이슈 트래커를 검색하세요,
누군가가 동일한 문제나 기능 제안이 있을 가능성이 높습니다. 이모지 반응으로 당신의 지지를 보여주거나
토론에 참여하세요.
예상치 못한 동작이 발생할 경우, 맥락 정보를 제공하는 것을 고려하세요:
- 자가 관리 인스턴스를 사용하는 경우 GitLab 버전.
-
.gitlab-ci.yml
작업 정의. - 전체 작업 콘솔 출력.
-
gl-api-security-scanner.log
라는 이름의 작업 아티팩트로 제공되는 스캐너 로그 파일.
용어집
-
Assert: Assertions는 결함을 유발하기 위해 체크에서 사용되는 감지 모듈입니다. 많은 Assertions는 구성 설정을 가지고 있습니다. 하나의 체크는 여러 Assertions를 사용할 수 있습니다. 예를 들어, 로그 분석, 응답 분석 및 상태 코드는 체크에서 일반적으로 함께 사용되는 Assertions입니다. 여러 Assertions를 가진 체크는 켜고 끌 수 있습니다.
-
Check: 특정 유형의 테스트를 수행하거나 취약성 유형에 대한 체크를 수행합니다. 예를 들어, JSON Fuzzing Check는 JSON 페이로드에 대한 퍼즈 테스트를 수행합니다. API 퍼저는 여러 체크로 구성되어 있습니다. 체크는 프로파일에서 켜고 끌 수 있습니다.
-
Fault: 퍼징 중에 Assert에 의해 식별된 실패를 Fault라고 합니다. Fault는 보안 취약점인지, 비보안 문제인지, 또는 오탐인지 확인하기 위해 조사됩니다. Fault는 조사될 때까지 알려진 취약점 유형이 없습니다. 예시 취약점 유형으로는 SQL 인젝션 및 서비스 거부(DoS)가 있습니다.
-
Profile: 구성 파일은 하나 이상의 테스트 프로파일 또는 하위 구성을 가지고 있습니다. 기능 브랜치에 대한 프로파일과 주요 브랜치에 대한 추가 테스트가 포함된 다른 프로파일이 있을 수 있습니다.