SAST 규칙

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

GitLab SAST는 분석기 세트를 사용하여 잠재적인 취약점을 탐지합니다. 저장소에서 발견된 프로그래밍 언어에 기반하여 실행할 분석기를 자동으로 선택합니다.

각 분석기는 코드를 처리한 다음 소스 코드의 가능한 취약성을 찾기 위해 규칙을 사용합니다. 분석기의 규칙은 보고할 취약성의 유형을 결정합니다.

규칙의 출처

고급 SAST

Tier: Ultimate

GitLab은 고급 SAST의 규칙을 만들고 유지하며 지원합니다. 이 규칙은 고급 SAST 스캔 엔진의 파일 간, 함수 간 분석 기능을 활용하기 위해 사용자 정의로 만들어졌습니다. 고급 SAST 규칙 세트는 오픈 소스가 아니며, 다른 분석기의 규칙 세트와 동일하지 않습니다.

Semgrep 기반 분석기

GitLab은 Semgrep 기반 GitLab SAST 분석기에서 사용되는 규칙을 만들고 유지하며 지원합니다. 이 분석기는 다양한 언어를 단일 CI/CD 파이프라인 작업에서 스캔합니다. 이는 다음을 결합합니다:

  • Semgrep 오픈 소스 엔진.
  • GitLab 관리 대상 탐지 규칙 세트 (GitLab-managed open source sast-rules 프로젝트에서 관리됨).
  • 취약점 추적을 위한 GitLab의 프로프리어터리 기술(index.md#advanced-vulnerability-tracking).

다른 분석기

GitLab SAST는 나머지 지원되는 언어들을 스캔하기 위해 다른 분석기를 사용합니다. 이러한 스캔의 규칙은 각 스캐너의 상류 프로젝트에서 정의됩니다.

규칙 업데이트 과정

GitLab은 고객 피드백 및 내부 연구에 기반하여 규칙을 정기적으로 업데이트합니다. 규칙은 각 분석기의 컨테이너 이미지의 일부로 릴리스됩니다. 규칙이 업데이트되면 업데이트된 분석기 및 규칙을 자동으로 받게 됩니다. 특정 버전으로 분석기 고정하지 않는 한 자동적으로 받게됩니다.

규칙은 관련 업데이터르 사용할 수 있을 때 최소 월간로 업데이트됩니다.

규칙 업데이트 정책

SAST 규칙의 업데이트는 팽창되는 변경이 아닙니다. 이는 규칙이 사전 통보 없이 추가, 제거 또는 업데이트될 수 있음을 의미합니다.

하지만, 규칙 변경을 더 편리하고 이해하기 쉽게 하기 위해 GitLab은 다음을 실행합니다:

프로젝트에서 규칙 구성

구체적인 이유가 없는 한 기본 SAST 규칙을 사용해야 합니다. 기본 규칙 세트는 대부분의 프로젝트에 관련이 있도록 설계되었습니다.

그러나 필요한 경우 사용되는 규칙을 사용자 정의하거나 규칙 변경을 조절할 수 있습니다.

로컬 규칙 우선 순위 적용

조직에서 특정 취약성 클래스에 우선 순위를 할당하거나, 다른 취약성 클래스보다 먼저 Cross-Site Scripting (XSS) 또는 SQL Injection 등을 처리하는 등의 이유로 SAST 스캔에 사용되는 규칙을 사용자 정의할 수 있습니다. 사용자의 사용자 정의가 다른 사용자들에게 이점을 제공할 경우, GitLab에 문제 보고 고려하십시오.

규칙 롤아웃 조정

규칙 변경의 롤아웃을 제어하기 위해 SAST 분석기를 특정 버전으로 고정할 수 있습니다.

여러 프로젝트에 한꺼번에 변경을 적용하려면:

GitLab SAST 규칙에 대한 문제 보고하기

GitLab은 SAST에서 사용되는 규칙 세트에 대한 기여를 환영합니다. 기여는 다음을 다룰 수 있습니다:

  • 잠재적인 취약성이 잘못된 경우의 false positive 결과.
  • SAST가 실제로 존재하는 잠재적 취약성을 보고하지 않을 경우의 false negative 결과.
  • 규칙에 대한 이름, 심각도 등의 설명, 지침 또는 기타 설명 콘텐츠.

모든 사용자를 위해 검출 규칙이 개선될 수 있다고 생각된다면, 다음을 고려해보세요:

중요한 규칙 변경

GitLab은 정기적으로 SAST 규칙을 업데이트합니다. 이 섹션에서는 가장 중요한 변경 사항을 강조합니다. 추가 정보는 릴리스 공지와 제공된 CHANGELOG 링크에서 확인할 수 있습니다.

Semgrep 기반 분석기의 규칙 변경

Semgrep 기반 스캔에 사용되는 GitLab 관리 규칙 세트에 대한 주요 변화 사항은 다음과 같습니다:

  • GitLab 16.3에서 GitLab 정적 분석 및 취약성 리서치 팀은 너무 많은 false positive 결과를 생성하거나 충분한 actionable true positive 결과를 생성하지 못하는 규칙을 제거하기 위해 작업합니다. 이러한 제거된 규칙에서 기존의 발견들은 자동으로 해결됩니다. 이는 더 이상 보안 대시보드취약점 보고서의 기본 뷰에 나타나지 않습니다. 이 작업은 epic 10907에서 추적됩니다.
  • GitLab 16.0부터 16.2까지 GitLab 취약성 리서치 팀은 각 결과에 포함된 지침을 업데이트했습니다.
  • GitLab 15.10에서 detect-object-injection 규칙이 기본적으로 제거되었고 그 결과들이 자동적으로 해결되었습니다.

더 자세한 내용은 sast-rules CHANGELOG를 참조하십시오.

다른 분석기의 규칙 변경 사항

분석기의 CHANGELOG 파일을 참조하여 각 버전에 포함된 새로운 또는 업데이트된 규칙을 포함한 변경 사항에 대한 자세한 내용을 확인하세요.