Web API Fuzz Testing

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

웹 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 퍼즈 테스트 스캔을 실행할 수 있습니다:

이러한 방법을 사용하는 예제 프로젝트는 다음과 같습니다:

지원 및 개선 요청

특정 문제에 대한 지원을 받으려면 도움을 받을 채널을 이용하세요.

GitLab.com의 GitLab 이슈 트래커는 API 보안 및 API 퍼즈 테스팅에 관한 버그 및 기능 제안을 위한 올바른 위치입니다. API 퍼즈 테스팅과 관련된 새 이슈를 오픈할 때 ~"Category:API Security" 레이블을 사용하여 적절한 담당자에게 신속하게 검토받을 수 있도록 하세요. 적절한 회신 시간에 대한 자세한 내용은 리뷰 응답 SLO을 참조하세요.

새로운 이슈를 제출하기 전에 유사한 항목을 찾아보세요. 다른 누군가가 동일한 이슈 또는 기능 제안을 가졌을 수 있습니다. 이를 표현하기 위해 이모지 반응을 남기거나 토론에 참여하세요.

원하는 동작이 작동하지 않을 때, 상황에 맞는 정보를 제공하는 것을 고려하세요:

  • 자체 관리 인스턴스를 사용하는 경우 GitLab 버전
  • .gitlab-ci.yml 작업 정의
  • 전체 작업 콘솔 출력
  • gl-api-security-scanner.log이라는 작업 아티팩트로 제공되는 스캐너 로그 파일

경고:
지원 이슈에 첨부된 데이터를 살균화하십시오. 자격증명, 비밀번호, 토큰, 키 및 비밀은 민감한 정보로 제거하십시오.

용어집

  • Assert: 어설션은 체크에서 오류를 트리거하는 감지 모듈입니다. 많은 어설션에는 구성이 있습니다. 여러 어설션이 있는 체크를 사용할 수 있습니다. 예를 들어, 로그 분석, 응답 분석 및 상태 코드는 체크에서 함께 사용되는 일반적인 어설션입니다. 여러 어설션을 가진 체크를 통해 이를 켜거나 끌 수 있습니다.
  • Check: 특정 유형의 테스트를 수행하거나 취약점 유형을 검사하는 특정 체크를 수행합니다. 예를 들어, JSON Fuzzing Check는 JSON 페이로드의 퍼즈 테스트를 수행합니다. API 퍼저는 여러 체크로 구성됩니다. 프로필에서 체크를 켜거나 끌 수 있습니다.
  • Fault: 퍼즈 테스팅 중에 어설션에 의해 식별된 오류를 결함이라고 합니다. 결함은 보안 취약점, 비보안 문제 또는 잘못된 양성 여부를 결정하기 위해 조사됩니다. 결함에는 조사될 때까지 알려진 취약점 유형이 없습니다. 예시 취약점 유형으로는 SQL Injection 및 Denial of Service가 있습니다.
  • Profile: 구성 파일에는 하나 이상의 테스트 프로필 또는 하위 구성이 있습니다. 기능 브랜치 및 본 브랜치에 대해 추가 테스트를 수행하는 프로필이 있을 수 있습니다.