웹 API Fuzz 테스팅
웹 API 퍼징은 API 작업 매개변수의 퍼징 테스트를 수행합니다. 퍼징 테스트는 예상치 못한 동작 및 API 백엔드에서의 오류를 일으키기 위해 작업 매개변수를 예기치 않는 값으로 설정합니다. 이를 통해 다른 QA 프로세스에서 놓칠 수 있는 버그 및 잠재적 보안 문제를 발견할 수 있습니다.
우리는 GitLab Secure의 다른 보안 스캐너 및 귀하의 테스트 프로세스와 함께 퍼징 테스트를 사용하기를 권장합니다. 만약 GitLab CI/CD를 사용 중이라면, 퍼징 테스트를 CI/CD 워크플로우의 일부로 실행할 수 있습니다.
개요를 보려면 Web 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"
레이블을 사용하여 빠르게 적절한 사람들에 의해 검토되도록 확인하세요. 적절한 응답을 받아야 하는 시점은 검토 응답 SLO을 참조하세요.
새로운 이슈를 제출하기 전에 유사한 항목을 검색하여 제출하시기 전에 다른 누군가가 동일한 문제 또는 기능 제안을 한 경우가 있을 수 있습니다. 반응 이모티콘을 표시하거나 토론에 참여하여 지지를 표현하세요.
예상대로 작동하지 않는 동작을 경험했을 때, 문맥 정보를 제공하는 것을 고려하세요:
- Self-managed 인스턴스를 사용하는 경우 GitLab 버전입니다.
-
.gitlab-ci.yml
작업 정의. - 전체 작업 콘솔 출력.
-
gl-api-security-scanner.log
이라는 작업 아티팩트로 제공되는 스캐너 로그 파일.
용어집
- Assert: 단언은 결함을 트리거하는 체크에서 사용되는 감지 모듈입니다. 많은 단언은 구성을 갖고 있습니다. 체크는 여러 단언을 사용할 수 있습니다. 예를 들어, 로그 분석, 응답 분석 및 상태 코드는 체크에 의해 함께 사용되는 일반적인 단언입니다. 여러 단언을 가진 체크는 켜고 끌 수 있습니다.
- Check: 특정 유형의 테스트를 수행하거나 취약점 유형에 대한 체크를 수행합니다. 예를 들어, JSON 퍼징 체크는 JSON 페이로드의 퍼징 테스트를 수행합니다. API 퍼저는 여러 체크로 구성됩니다. 프로파일에서 체크를 켜거나 끌 수 있습니다.
- Fault: 퍼징 중에 단언에 의해 식별된 실패를 결함이라고 합니다. 결함은 해당하는 보안 취약점, 비보안 문제 또는 거짓 긍정인지를 확인하기 위해 조사됩니다. 결함에는 알려진 취약점 유형이 없으며, 조사할 때까지 알려진 취약점 유형이 없습니다. 예제 취약점 유형은 SQL Injection 및 서비스 거부 등이 있습니다.
- Profile: 구성 파일에 하나 이상의 테스트용 프로필 또는 하위 구성이 있습니다. 기능 브랜치에 대한 프로필을 하나 갖고, 본 브랜치에 대해 추가적인 테스트용 프로필을 하나 더 갖을 수 있습니다.