GitLab 고급 SAST 분석기

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • GitLab 17.1에서 Python에 대한 실험으로 도입되었습니다.
  • 17.2에서 Go 및 Java 지원이 추가되었습니다.
  • GitLab 17.2에서 베타로 변경되었습니다.
  • 17.3에서 JavaScript, TypeScript 및 C# 지원이 추가되었습니다.
  • GitLab 17.3에서 GA로 변경되었습니다.
  • GitLab 17.4에서 Java Server Pages (JSP) 지원이 추가되었습니다.

GitLab 고급 SAST는 교차 기능 및 교차 파일 오염 분석을 수행하여 취약점을 발견하도록 설계된 정적 애플리케이션 보안 테스트(SAST) 분석기입니다.

GitLab 고급 SAST는 선택적 기능입니다.
활성화되면 GitLab 고급 SAST 분석기가 지원 언어의 모든 파일을 스캔하고,
GitLab 고급 SAST의 미리 정의된 규칙 세트를 사용합니다.
Semgrep 분석기는 이러한 파일을 스캔하지 않습니다.

GitLab 고급 SAST 분석기에 의해 식별된 모든 취약점은 보고됩니다.
Semgrep 분석기에 의해 이전에 보고된 취약점도 포함됩니다.
미래에는 자동 전환 프로세스가 제안되어,
취약점 관리 시스템이 GitLab 고급 SAST 분석기와 Semgrep 분석기에 의해
식별된 결과를 자동으로 중복 제거합니다.
이 기능은 고급 추적 알고리즘을 기반으로 하며,
취약점의 원래 기록을 유지할 것입니다
(만약 Semgrep에 의해 처음 식별된 경우, Semgrep 발견 결과).

note
중복된 취약점이 이미 도입된 경우(중복 제거가 가능한 시점까지의 임시 기간 동안), 중복 제거 기능은 이를 중복 제거하지 않을 것입니다. 이 기능은 이미 중복되지 않은 새로운 취약점을 검증하는 데만 관련될 것입니다.

사용자의 입력 경로를 따라가면서, 분석기는 신뢰할 수 없는 데이터가
귀하의 애플리케이션 실행에 안전하지 않은 방식으로 영향을 미칠 수 있는 잠재적 지점을 식별합니다.
SQL injection 및 교차 사이트 스크립팅(XSS)과 같은 주입 취약점이
여러 기능 및 파일에 걸쳐 있더라도 탐지된다는 것을 보장합니다.

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

  • 소스 탐지: 일반적으로 악의적인 주체에 의해 조작될 수 있는 사용자 입력.
  • 싱크 탐지: 사용자가 제어해서는 안 되는 인수를 가진 민감한 함수 호출.
  • 교차 기능 분석: 여러 기능에 걸쳐 있는 취약점을 탐지하기 위해 다양한 기능을 통한 데이터 흐름을 추적합니다.
  • 교차 파일 분석: 서로 다른 파일 간의 데이터 흐름을 추적하여 보다 깊은 수준에서 취약점을 발견합니다.
  • 위생 처리 탐지: 사용자의 입력이 적절히 소독된 경우 잘못된 긍정 결과를 피합니다.


GitLab 고급 SAST와 그것이 작동하는 방식에 대한 개요는 GitLab Advanced SAST: Accelerating Vulnerability Resolution을 참조하세요.

제품 투어는 GitLab Advanced SAST 제품 투어를 참조하세요.

지원 언어

GitLab 고급 SAST는 교차 기능 및 교차 파일 오염 분석이 가능한 다음 언어를 지원합니다:

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

구성

고급 SAST 분석기를 활성화하여 귀하의 애플리케이션에서 취약점을 발견하고
교차 기능 및 교차 파일 오염 분석을 수행합니다.
그런 다음 CI/CD 변수를 사용하여 동작을 조정할 수 있습니다.

요구 사항

기타 GitLab SAST 분석기와 마찬가지로, Advanced SAST 분석기는 러너와 CI/CD 파이프라인이 필요합니다. 자세한 내용은 SAST 요구 사항를 참조하세요.

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

  • 가능한 경우 GitLab 17.4 이상을 사용해야 합니다. GitLab 17.4에는 새로운 코드 흐름 보기, 취약점 중복 제거, 그리고 SAST CI/CD 템플릿에 대한 추가 업데이트가 포함되어 있습니다.
  • SAST CI/CD 템플릿은 다음 릴리스에서 Advanced SAST를 포함하도록 업데이트되었습니다:
  • 최소한 GitLab Advanced SAST는 17.1 이상이 필요합니다.

Advanced SAST 스캔 활성화

Advanced SAST는 표준 GitLab SAST CI/CD 템플릿에 포함되어 있지만 기본적으로 활성화되어 있지 않습니다.

활성화하려면 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLEDtrue로 설정하세요.

CI/CD 구성을 관리하는 방법에 따라 이 변수를 설정할 수 있습니다.

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

프로젝트에서 GitLab SAST 스캔을 이미 활성화한 경우, GitLab SAST를 활성화하기 위해 새로운 CI/CD 변수를 추가하세요.

이 최소 YAML 파일은 안정적인 SAST 템플릿을 포함하며 Advanced SAST를 활성화합니다:

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

variables:
  GITLAB_ADVANCED_SAST_ENABLED: 'true'

스캔 실행 정책에서 강제 적용

스캔 실행 정책에서 Advanced SAST를 활성화하려면 정책의 스캔 작업을 업데이트하여 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLEDtrue로 설정합니다.

이 변수를 설정하는 방법:

파이프라인 편집기를 사용하여

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

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

    위의 최소 YAML 예제를 참조하세요.

  4. Validate 탭을 선택한 다음 Validate pipeline를 선택합니다.

    메시지 Simulation completed successfully는 파일이 유효함을 확인합니다.

  5. Edit 탭을 선택합니다.
  6. 필드를 완료합니다. Branch 필드에 기본 브랜치를 사용하지 마세요.
  7. Start a new merge request with these changes 체크박스를 선택한 다음 Commit changes를 선택합니다.
  8. 표준 워크플로에 따라 필드를 완성한 후 Create merge request를 선택합니다.
  9. 표준 워크플로에 따라 병합 요청을 검토하고 편집한 다음 Merge를 선택합니다.

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

취약점 코드 흐름

Advanced SAST에서 감지된 일부 취약점에 대해 취약점 페이지코드 흐름 탭이 제공됩니다.

취약점의 코드 흐름은 사용자 입력(소스)에서 취약한 코드 행(싱크)까지 데이터가 이동하는 경로로, 모든 할당, 조작 및 정제를 포함합니다.

이 정보는 취약점의 맥락, 영향 및 위험을 이해하고 평가하는 데 도움이 됩니다.

코드 흐름 탭은 다음을 보여줍니다:

  • 소스에서 싱크로 가는 단계.
  • 관련 파일 및 코드 조각.

Vulnerability Code Flow

문제 해결

GitLab Advanced SAST를 사용할 때 문제가 발생하면 문제 해결 가이드를 참조하세요.

피드백

전용 이슈 466322에 피드백을 추가해 주세요.