SAST 규칙
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab SAST(정적 애플리케이션 보안 테스팅)는 잠재적인 취약점을 위해 코드를 스캔하는 일련의 분석기를 사용합니다. 각 분석기는 코드를 처리한 다음 규칙을 사용하여 소스 코드의 가능한 약점을 찾습니다. SAST는 보안 약점 및 취약점에 초점을 맞춥니다.
GitLab SAST(정적 애플리케이션 보안 테스팅)는 잠재적인 취약점을 위해 코드를 스캔하는 일련의 분석기를 사용합니다. 리포지터리에 있는 프로그래밍 언어를 기반으로 실행할 분석기를 자동으로 선택합니다.
각 분석기는 코드를 처리한 다음 규칙을 사용하여 소스 코드의 가능한 약점을 찾습니다. 분석기의 규칙은 보고하는 약점의 유형을 결정합니다.
규칙 범위#
SAST는 보안 약점 및 취약점에 초점을 맞춥니다. 일반적인 버그를 찾거나 전반적인 코드 품질 또는 유지 관리성을 평가하는 것을 목표로 하지 않습니다.
GitLab은 실행 가능한 보안 약점과 취약점을 파악하는 데 중점을 두고 탐지 규칙 세트를 관리합니다. 규칙 세트는 가장 영향력 있는 취약점에 대한 광범위한 커버리지를 제공하면서 오탐지(취약점이 존재하지 않는 경우 보고되는 취약점)를 최소화하도록 설계되었습니다.
SAST는 기본 구성으로 사용하도록 설계되었지만 필요한 경우 탐지 규칙을 구성할 수 있습니다.
규칙 소스#
SAST에서 사용하는 취약점 탐지 규칙은 GitLab Advanced SAST 또는 Semgrep 기반 분석기 중 어떤 것을 사용하느냐에 따라 달라집니다.
GitLab Advanced SAST#
GitLab은 GitLab Advanced SAST의 규칙을 만들고, 유지 관리하고, 지원합니다. 해당 규칙은 GitLab Advanced SAST 스캐닝 엔진의 교차 파일, 교차 기능 분석 기능을 활용하도록 맞춤 제작되었습니다. GitLab Advanced SAST 규칙 세트는 오픈 소스가 아니며 다른 분석기의 규칙 세트와 동일하지 않습니다.
GitLab Advanced SAST가 감지하는 취약점 유형에 대한 자세한 내용은 취약점 탐지 기준을 참조하세요.
GitLab Advanced SAST에서 사용하는 모든 규칙 목록은 GitLab Advanced SAST 규칙을 참조하세요.
Semgrep 기반 분석기#
GitLab은 Semgrep 기반 GitLab SAST 분석기에서 사용하는 규칙을 만들고, 유지 관리하고, 지원합니다. 이 분석기는 단일 CI/CD 파이프라인 job에서 다양한 언어를 스캔합니다. 다음을 결합합니다:
- Semgrep 오픈 소스 엔진.
- GitLab 관리형 오픈 소스
sast-rules프로젝트에서 관리되는 GitLab 관리형 탐지 규칙 세트. - 취약점 추적을 위한 GitLab 독점 기술.
기타 분석기#
GitLab SAST는 나머지 지원되는 언어를 스캔하기 위해 다른 분석기를 사용합니다. 이 스캔에 대한 규칙은 각 스캐너의 업스트림 프로젝트에 정의되어 있습니다.
규칙 업데이트가 릴리스되는 방법#
GitLab은 고객 피드백과 내부 연구를 기반으로 정기적으로 규칙을 업데이트합니다. 규칙은 각 분석기의 컨테이너 이미지의 일부로 릴리스됩니다. 분석기를 특정 버전에 수동으로 고정하지 않는 한 업데이트된 분석기 및 규칙을 자동으로 받습니다.
분석기 및 규칙은 관련 업데이트가 있는 경우 최소 월 1회 업데이트됩니다.
규칙 업데이트 정책#
SAST 규칙에 대한 업데이트는 주요 변경 사항이 아닙니다. 즉, 사전 통보 없이 규칙이 추가, 제거 또는 업데이트될 수 있습니다.
그러나 규칙 변경 사항을 더 편리하고 이해하기 쉽게 만들기 위해 GitLab은 다음을 수행합니다:
- 계획되거나 완료된 규칙 변경 사항을 문서화합니다.
- Semgrep 기반 분석기의 규칙이 제거된 후 해당 규칙의 발견 사항을 자동으로 해결합니다.
- "더 이상 감지되지 않음" 활동의 취약점 상태를 일괄 변경할 수 있도록 합니다.
- 기존 취약점 레코드에 미치는 영향에 대해 제안된 규칙 변경 사항을 평가합니다.
프로젝트에서 규칙 구성#
특별한 이유가 없다면 기본 SAST 규칙을 사용해야 합니다. 기본 규칙 세트는 대부분의 프로젝트에 관련이 있도록 설계되었습니다.
그러나 필요한 경우 사용할 규칙을 사용자 정의하거나 규칙 변경 사항의 롤아웃을 제어할 수 있습니다.
로컬 규칙 기본 설정 적용#
SAST 스캔에서 사용하는 규칙을 사용자 정의할 수 있습니다:
- 조직이 Cross-Site Scripting(XSS) 또는 SQL 인젝션을 다른 취약점 클래스보다 먼저 처리하도록 선택하는 것처럼 특정 취약점 클래스에 우선순위를 할당한 경우.
- 특정 규칙이 오탐지 결과이거나 코드베이스 컨텍스트에서 관련이 없다고 생각하는 경우.
프로젝트를 스캔하는 데 사용하는 규칙을 변경하거나 심각도를 조정하거나 다른 기본 설정을 적용하려면 규칙 세트 사용자 정의를 참조하세요. 사용자 정의가 다른 사용자에게 도움이 될 것 같으면 GitLab에 문제 보고를 고려하세요.
규칙 롤아웃 조정#
규칙 변경 사항의 롤아웃을 제어하려면 SAST 분석기를 특정 버전에 고정할 수 있습니다.
여러 프로젝트에서 동시에 이러한 변경 사항을 수행하려면 다음에서 변수를 설정하는 것을 고려하세요:
- 그룹 수준 CI/CD 변수.
- 스캔 실행 정책의 사용자 정의 CI/CD 변수.
GitLab SAST 규칙의 문제 보고#
GitLab은 SAST에서 사용하는 규칙 세트에 대한 기여를 환영합니다. 기여에는 다음이 포함될 수 있습니다:
- 잠재적 취약점이 잘못된 오탐지 결과.
- SAST가 실제로 존재하는 잠재적 취약점을 보고하지 않은 오음성 결과.
- 규칙의 이름, 심각도 등급, 설명, 안내 또는 기타 설명 콘텐츠.
탐지 규칙이 모든 사용자에게 개선될 수 있다고 생각하면 다음을 고려하세요:
sast-rules리포지터리에 머지 리퀘스트를 제출합니다. 자세한 내용은 기여 지침을 참조하세요.gitlab-org/gitlab이슈 트래커에 이슈를 제출합니다.- 이슈가 올바른 분류 워크플로우에 도달하도록
@gitlab-bot label ~"group::static analysis" ~"Category:SAST"라고 주석을 달아주세요.
- 이슈가 올바른 분류 워크플로우에 도달하도록
중요한 규칙 변경 사항#
GitLab은 정기적으로 SAST 규칙을 업데이트합니다. 이 섹션에서는 가장 중요한 변경 사항을 강조합니다. 더 자세한 내용은 릴리스 발표와 제공된 CHANGELOG 링크에서 확인할 수 있습니다.
Semgrep 기반 분석기의 규칙 변경 사항#
Semgrep 기반 스캐닝에 대한 GitLab 관리형 규칙 세트의 주요 변경 사항:
- GitLab 16.3부터 GitLab Static Analysis 및 Vulnerability Research 팀은 오탐지 결과를 너무 많이 생성하거나 충분한 실행 가능한 실제 양성 결과를 생성하지 않는 규칙을 제거하는 작업을 진행하고 있습니다. 이 제거된 규칙의 기존 발견 사항은 자동으로 해결됩니다. 해당 발견 사항은 보안 대시보드나 취약점 보고서의 기본 보기에 더 이상 나타나지 않습니다. 이 작업은 에픽 10907에서 추적됩니다.
- GitLab 16.0에서 16.2까지 GitLab Vulnerability Research 팀은 각 결과에 포함된 안내를 업데이트했습니다.
- GitLab 15.10에서
detect-object-injection규칙이 기본적으로 제거되었고 발견 사항이 자동으로 해결되었습니다.
자세한 내용은 sast-rules의 CHANGELOG를 참조하세요.
기타 분석기의 규칙 변경 사항#
각 분석기의 CHANGELOG 파일에서 각 버전에 포함된 새 규칙 또는 업데이트된 규칙을 포함한 변경 사항에 대한 자세한 내용을 참조하세요.
