SAST 규칙

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

GitLab SAST는 잠재적인 취약점을 스캔하기 위해 분석기 세트를 사용합니다. 각 분석기는 코드를 처리한 다음 소스 코드의 가능한 취약점을 찾기 위해 규칙을 사용합니다. 규칙은 분석기가 보고하는 취약점의 유형을 결정합니다.

규칙의 출처

Semgrep 기반 분석기

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

기타 분석기

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

규칙 업데이트 방법

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

관련 업데이트가 가능한 경우, 분석기 및 규칙은 최소한 매달 업데이트됩니다.

Semgrep 기반 분석기의 GitLab 규칙세트는 GitLab에서 관리되는 오픈 소스 sast-rules 프로젝트에서 관리됩니다. 규칙이 업데이트되면 Semgrep 기반 분석기의 컨테이너 이미지의 일부로 릴리스됩니다.

규칙 업데이트 정책

SAST 규칙의 업데이트는 파기 변경 사항이 아닙니다. 이는 규칙이 사전 통지 없이 추가, 제거 또는 업데이트될 수 있다는 것을 의미합니다.

그러나 규칙 변경을 더 편리하고 이해하기 쉽게 만들기 위해 GitLab은:

프로젝트에서 규칙 구성

특별한 이유가 없는 한 기본 SAST 규칙을 사용해야 합니다. 기본 규칙 세트는 대부분의 프로젝트에 적합하게 설계되었습니다.

그러나 필요한 경우 사용되는 규칙을 사용자 정의하거나 규칙 변경이 어떻게 배포되는지 제어할 수 있습니다.

로컬 규칙 기본값 적용

SAST 스캔에 사용되는 규칙을 사용자가 사용자 정의하려면 다음과 같은 이유가 있을 수 있습니다:

  • 귀하는 기관에서 특정 취약성 클래스에 우선순위를 할당했는데, Cross-Site Scripting (XSS) 또는 SQL Injection과 같은 다른 취약성 클래스보다 먼저 이를 해결하기로 선택했습니다.
  • 특정 규칙이 잘못된 양성 결과인지 또는 코드베이스의 맥락에서 관련이 없는지 믿습니다.

프로젝트를 스캔하는 데 사용되는 규칙을 변경하거나 심각도를 조정하거나 다른 기본값을 적용하려면 규칙 세트 사용자 정의를 참조하십시오. 귀하의 사용자 정의가 다른 사용자에게 이점을 준다고 생각된다면, GitLab에 문제 신고를 고려해보세요.

규칙 롤아웃 조정

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

여러 프로젝트 전체에서 동시에 이러한 변경을 하고 싶다면 다음에서 변수를 설정하는 것을 고려해보세요:

GitLab SAST 규칙에 문제 신고

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

  • 잘못된 양성 결과, 잠재적인 취약점이 잘못된 경우.
  • 잘못된 음성 결과, SAST가 실제로 존재하는 잠재적인 취약점을 보고하지 않은 경우.
  • 규칙의 이름, 심각도 등을 개선하기 위한 설명, 안내 또는 다른 설명 콘텐츠.

특정 규칙이 모든 사용자에게 개선될 수 있다고 믿는다면:

중요한 규칙 변경 사항

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

Semgrep 기반 분석기의 규칙 변경 사항

Semgrep 기반 스캔용 GitLab 관리 규칙 세트의 주요 변경 사항은 다음과 같습니다:

  • GitLab 16.3부터 GitLab 정적 분석 및 취약점 연구 팀은 너무 많은 false positive 결과를 생성하거나 충분히 실행 가능한 true positive 결과를 생성하지 못하는 규칙을 제거하고 있습니다. 이러한 제거된 규칙에서의 결과는 자동으로 해결되어 이제는 보안 대시보드 또는 취약점 보고서의 기본 보기에 나타나지 않습니다. 해당 작업은 에픽 10907에서 추적됩니다.
  • GitLab 16.0부터 16.2까지 GitLab 취약점 연구 팀은 각 결과에 포함된 가이드를 업데이트했습니다.
  • GitLab 15.10에서 detect-object-injection 규칙은 기본적으로 제거되었으며 해당 결과는 자동으로 해결되었습니다.

자세한 내용은 sast-rules의 CHANGELOG를 참조하세요.

기타 분석기의 규칙 변경

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