웹 API Fuzz 테스팅

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

웹 API 퍼징은 API 작업 매개변수의 퍼징 테스트를 수행합니다. 퍼징 테스트는 API 백엔드에서 예상치 못한 동작과 오류를 발생시키기 위해 작업 매개변수를 예상치 못한 값으로 설정합니다. 이를 통해 QA 프로세스에서 누락될 수 있는 버그와 잠재적 보안 문제를 발견할 수 있습니다.

GitLab Secure의 다른 보안 스캐너 및 귀사의 자체 테스트 프로세스와 함께 퍼징 테스트를 사용하는 것을 권장합니다. GitLab CI/CD를 사용 중이라면 CI/CD 워크플로우의 일부로 퍼징 테스트를 실행할 수 있습니다.

개요는 웹 API Fuzzing을 참조하세요.

웹 API 퍼징을 실행하는 경우

웹 API 퍼징은 CI/CD 파이프라인의 fuzz 단계에서 실행됩니다. API 퍼징이 최신 코드를 스캔하려면 CI/CD 파이프라인은 fuzz 단계 이전의 하나의 단계에서 테스트 환경으로 변경 사항을 배포해야 합니다.

파이프라인이 각 실행마다 동일한 웹 서버로 배포되도록 구성된 경우, 다른 파이프라인이 실행 중일 때 파이프라인을 실행하면 다른 파이프라인에서 코드를 덮어쓰는 경합 조건을 발생시킬 수 있습니다. 퍼징 스캔 중에는 API가 변경되지 않아야 합니다. API에 대한 변경은 퍼징 스캐너에서만 이루어져야 합니다. 스캔 중에 API에 대한 변경(예: 사용자, 예약된 작업, 데이터베이스 변경, 코드 변경, 다른 파이프라인 또는 다른 스캐너)이 발생하면 정확하지 않은 결과를 유발할 수 있습니다.

다음 방법으로 웹 API 퍼징 스캔을 실행할 수 있습니다:

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

지원 받거나 개선사항 요청하기

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

API 보안 및 API 퍼징에 관한 버그 및 기능 제안을 위한 올바른 위치는 GitLab.com의 GitLab 이슈 트래커입니다. API 퍼징에 관한 새 이슈를 열 때 ~"Category:API Security" label을 사용하여 올바른 담당자가 신속하게 검토할 수 있도록 해야 합니다. 응답 시간 SLO에 대한 자세한 내용은 리뷰 응답 SLO을 참조하세요.

이슈를 제출하기 전에 유사한 항목을 검색하여 제출하기 전에 다른 사람이 동일한 이슈 또는 기능 제안을 한 경우가 있는지 확인하세요. 이슈에 대한 지원을 표시하거나 토론에 참여하세요.

예상치 못한 동작이 발생할 경우 관련 정보를 제공하는 것을 고려하세요:

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

경고: 지원 이슈에 첨부된 데이터는 살균 처리하세요. 자격증명, 암호, 토큰, 키 및 비밀 정보를 포함한 민감한 정보를 제거하세요.

용어 사전

  • Assert: 검사에서 사용되는 감지 모듈로 결함을 발생시키기 위해 사용됩니다. 많은 Assert에는 구성이 있습니다. 검사는 여러 Assert를 사용할 수 있습니다. 예를 들어, 로그 분석, 응답 분석 및 상태 코드는 검사에서 함께 사용되는 일반적인 Assert입니다. 다중 Assert를 사용하는 검사는 켜고 끌 수 있습니다.
  • Check: 특정 유형의 테스트를 수행하거나 특정 취약점 유형에 대해 검사를 수행합니다. 예를 들어, JSON 퍼징 검사는 JSON 페이로드의 퍼징 테스트를 수행합니다. API 퍼저는 여러 검사로 구성되어 있습니다. 프로파일에서 검사를 켜거나 끌 수 있습니다.
  • Fault: 퍼징 중에 Assert에 의해 식별된 실패를 Fault라고 합니다. Fault는 보안 취약점, 비 보안 문제 또는 잘못된 양성 여부를 판별하기 위해 조사됩니다. Fault에는 조사될 때까지 알려진 취약점 유형이 없습니다. 예시 취약점 유형은 SQL Injection 및 서비스 거부입니다.
  • Profile: 구성 파일에 하나 이상의 테스트 프로세스 또는 하위 구성이 있습니다. 기능 브랜치를 위한 프로파일과 별도의 테스트가 포함된 프로파일이 있을 수 있습니다.