GitLab 고급 SAST 분석기

자세한 내용: Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

  • Python에 대한 실험으로 GitLab 17.1에서 소개되었습니다.
  • 17.2에서 Go 및 Java 지원이 추가되었습니다.
  • GitLab 17.2에서 베타로 변경되었습니다.
  • 17.3에서 JavaScript, TypeScript 및 C# 지원이 추가되었습니다.
  • GitLab 17.3에서 GA로 변경되었습니다.
  • Java Server Pages (JSP)가 GitLab 17.4에 추가되었습니다.

GitLab 고급 SAST는 정적 애플리케이션 보안 테스트(SAST) 분석기로, 교차 기능 및 교차 파일 오염 분석을 수행하여 취약점을 발견하는 것을 목표로 합니다.

GitLab 고급 SAST는 선택 사항 기능입니다. 활성화되면 GitLab 고급 SAST 분석기는 지원되는 언어의 모든 파일을 스캔하여 GitLab 고급 SAST 사전 정의 규칙을 사용합니다. Semgrep 분석기는 이러한 파일을 스캔하지 않습니다.

GitLab 고급 SAST 분석기에 의해 식별된 모든 취약점이 신고됩니다. 이는 Semgrep 분석기에 의해 이전에 신고된 취약점도 포함됩니다. 또한, 앞으로 자동 전환 과정을 제안하며, 취약점 관리 시스템이 GitLab 고급 SAST 분석기 및 Semgrep 분석기에 의해 식별된 결함을 자동으로 중복 제거할 것으로 제안됩니다. 이 기능은 고급 추적 알고리즘을 기반으로 하며, 원본 취약점 기록을 유지할 것으로 제안됩니다(최초로 Semgrep에 의해 식별된 경우, Semgrep 결과).

참고: 중복된 취약점이 이미 도입된 경우(중복 제거가 가능해질 때까지의 임시 시간 동안), 중복 제거 기능은 중복 제거하지 않을 것입니다. 이 기능은 이미 중복되지 않은 새로운 취약점을 확인하는 데에만 관련됩니다.

경로 사용자 입력을 따라 분석기는 응용 프로그램이 안전하지 않은 방식으로 실행되는 잠재적인 지점을 식별하며, 교차 기능 및 교차 파일에서 SQL 삽입 및 크로스 사이트 스크립팅(XSS)과 같은 삽입 취약점을 감지합니다.

GitLab 고급 SAST에는 다음과 같은 기능이 포함됩니다:

  • 소스 검출: 일반적으로 악의적인 주체에 의해 조작될 수 있는 사용자 입력입니다.
  • 시크 검출: 사용자에 의해 제어되면 안 되는 민감한 함수 호출입니다.
  • 교차 기능 분석: 여러 기능을 통해 데이터 흐름을 추적하여 여러 기능에 걸친 취약점을 감지합니다.
  • 교차 파일 분석: 서로 다른 파일을 통해 데이터 흐름을 추적하여 보다 심층적으로 취약점을 발견합니다.
  • 살균기 검출: 사용자 입력이 적절하게 살균 처리된 경우 거짓 양성 결과를 방지합니다.

GitLab 고급 SAST 및 작동 방식에 대한 개요는 GitLab 고급 SAST: 취약점 해결 가속화에서 확인하십시오.

제품 투어는 GitLab 고급 SAST 제품 투어를 참조하십시오.

지원되는 언어

GitLab 고급 SAST는 다음 언어를 지원하며 교차 기능 및 교차 파일 오염 분석을 제공합니다:

  • C#
  • Go
  • Java, Java Server Pages(JSP)를 포함한 Java
  • JavaScript, TypeScript
  • Python
  • Ruby

구성

교차 기능 및 교차 파일 오염 분석을 수행하여 응용 프로그램에서 취약점을 발견하기 위해 고급 SAST 분석기를 활성화합니다. 그런 다음 CI/CD 변수를 사용하여 동작을 조정할 수 있습니다.

요구 사항

다른 GitLab SAST 분석기와 마찬가지로 고급 SAST 분석기에는 러너와 CI/CD 파이프라인이 필요합니다. 자세한 내용은 SAST 요구 사항을 참조하십시오.

GitLab Self-managed에서는 고급 SAST를 지원하는 GitLab 버전을 사용해야 합니다:

  • 가능하면 GitLab 17.4 이상을 사용해야 합니다. GitLab 17.4에는 새로운 코드 플로우 보기, 취약점 중복 방지 및 SAST CI/CD 템플릿에 대한 추가 업데이트가 포함됩니다.
  • SAST CI/CD 템플릿은 다음 릴리스에서 고급 SAST를 포함합니다:
  • 최소한 GitLab 고급 SAST에는 17.1 이상의 버전이 필요합니다.

고급 SAST 스캔 활성화

고급 SAST는 표준 GitLab SAST CI/CD 템플릿에 포함되어 있지만 기본적으로 활성화되어 있지는 않습니다. 활성화하려면 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLEDtrue로 설정하십시오. CI/CD 구성을 어떻게 관리하느냐에 따라 이 변수를 다양한 방법으로 설정할 수 있습니다.

CI/CD 파이프라인 정의 수동 편집

프로젝트에서 이미 GitLab SAST 스캔을 활성화했다면, GitLab SAST를 사용하여 새로운 CI/CD 변수를 추가하여 GitLab SAST를 활성화할 수 있습니다.

다음 YAML 파일은 안정적인 SAST 템플릿을 포함하고 고급 SAST를 활성화하는 데 사용할 수 있습니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: 'true'

스캔 실행 정책에서 강제화

스캔 실행 정책에서 고급 SAST를 활성화하려면 정책의 스캔 작업을 업데이트하여 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLEDtrue로 설정하십시오. 이 변수를 설정하는 방법은 다음과 같습니다:

파이프라인 편집기 사용

파이프라인 편집기를 사용하여 고급 SAST를 활성화하려면:

  1. 프로젝트에서 빌드 > 파이프라인 편집기를 선택합니다.
  2. .gitlab-ci.yml 파일이 없는 경우 파이프라인 구성을 선택한 후 예제 내용을 삭제합니다.
  3. CI/CD 구성을 업데이트하여 다음을 포함하십시오:
    • GitLab에서 관리되는 SAST CI/CD 템플릿 중 하나를 포함하지 않은 경우 SAST 구성을 포함해야 합니다.
    • GitLab 17.3 이상에서는 안정적인 템플릿 Jobs/SAST.gitlab-ci.yml을 사용해야 합니다.
    • GitLab 17.2에서는 고급 SAST가 최신 템플릿 Jobs/SAST.latest.gitlab-ci.yml에서만 사용할 수 있습니다. 단, 최신 및 안정적인 템플릿을 혼용해서는 안 됩니다 한 프로젝트에.
    • GitLab 17.1에서는 고급 SAST 작업 내용을 CI/CD 파이프라인 정의로 수동으로 복사해야 합니다.
    • CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLEDtrue로 설정합니다.

    위의 최소한의 YAML 예제를 참조하십시오.

  4. 유효성 검사 탭을 선택한 후 파이프라인 검증을 선택합니다.

    메시지 시뮬레이션 완료가 파일이 유효하다는 것을 확인합니다.

  5. 편집 탭을 선택합니다.
  6. 필드를 작성합니다. 브랜치 필드에는 기본 브랜치를 사용하지 마십시오.
  7. 이 변경 사항으로 새로운 머지 리퀘스트 시작 확인란을 선택한 후 변경 사항 커밋을 선택합니다.
  8. 표준 워크플로에 따라 필드를 작성하고 머지 리퀘스트 생성을 선택합니다.
  9. 표준 워크플로에 따라 머지 리퀘스트를 검토 및 편집한 후 병합을 선택합니다.

파이프라인에 이제 고급 SAST 작업이 포함됩니다.

취약점 코드 흐름

고급 SAST에서 감지된 일부 취약점에는 취약점 페이지코드 흐름 탭이 있습니다. 취약점의 코드 흐름은 사용자 입력(원천)에서 취약한 코드 줄(싱크)로 데이터가 통과하는 경로로, 모든 할당, 조작 및 살균 작업을 거쳐 이루어집니다. 이 정보는 취약점의 맥락, 영향 및 위험을 이해하고 평가하는 데 도움이 됩니다.

코드 흐름 탭에는 다음이 표시됩니다:

  • 원천에서 싱크까지의 단계.
  • 코드 스니펫을 포함한 관련 파일.

취약점 코드 흐름

문제 해결

GitLab 고급 SAST를 사용하는 동안 문제가 발생하면 문제 해결 가이드를 참조하세요.

피드백

전용 이슈 466322에 피드백을 자유롭게 추가하십시오.