SAST 규칙
GitLab SAST는 코드의 잠재적 취약점을 스캔하기 위해 analyzers 세트를 사용합니다.
리포지토리에서 발견된 프로그래밍 언어에 따라 자동으로 실행할 분석기를 선택합니다.
각 분석기는 코드를 처리한 다음 소스 코드의 가능한 약점을 찾기 위해 규칙을 사용합니다.
분석기의 규칙은 보고하는 약점의 유형을 결정합니다.
규칙의 출처
고급 SAST
GitLab은 고급 SAST 규칙을 생성, 유지 관리 및 지원합니다.
이 규칙은 고급 SAST 스캐닝 엔진의 크로스 파일, 크로스 기능 분석 기능을 활용하기 위해 맞춤 제작되었습니다.
고급 SAST 규칙 세트는 오픈 소스가 아니며 다른 분석기의 규칙 세트와는 동일하지 않습니다.
Semgrep 기반 분석기
GitLab은 Semgrep 기반 GitLab SAST 분석기에서 사용되는 규칙을 생성, 유지 관리 및 지원합니다.
이 분석기는 단일 CI/CD 파이프라인 작업에서 많은 언어를 스캔합니다.
다음 요소를 결합합니다:
- Semgrep 오픈 소스 엔진.
-
GitLab에서 관리하는 오픈 소스
sast-rules
프로젝트에서 관리되는 GitLab 관리 탐지 규칙 세트. - 취약점 추적을 위한 GitLab 독점 기술.
기타 분석기
GitLab SAST는 나머지 지원되는 언어를 스캔하기 위해 다른 분석기를 사용합니다.
이 스캔에 대한 규칙은 각 스캐너의 업스트림 프로젝트에 정의되어 있습니다.
규칙 업데이트가 출시되는 방법
GitLab은 고객 피드백 및 내부 연구에 기반하여 규칙을 정기적으로 업데이트합니다.
규칙은 각 분석기의 컨테이너 이미지의 일부로 출시됩니다.
수동으로 분석기를 특정 버전에 고정하지 않는 한 자동으로 업데이트된 분석기와 규칙을 받을 수 있습니다.
분석기와 그들의 규칙은 관련 업데이트가 가능한 경우 최소 월간 업데이트됩니다.
규칙 업데이트 정책
SAST 규칙의 업데이트는 중단 변경 사항이 아닙니다.
즉, 규칙은 사전 통지 없이 추가, 제거 또는 업데이트될 수 있습니다.
그러나 규칙 변경을 더 편리하고 이해하기 쉽게 만들기 위해 GitLab은:
- 계획되거나 완료된 규칙 변경 사항을 문서화합니다.
- Semgrep 기반 분석기의 경우 규칙이 제거된 후 발견된 취약점을 자동으로 해결합니다.
- 활동 = “더 이상 감지되지 않음”인 취약점의 상태를 대량으로 변경할 수 있습니다.
- 기존 취약점 기록에 미칠 영향에 대해 제안된 규칙 변경을 평가합니다.
프로젝트에서 규칙 구성하기
구체적인 이유가 없는 한 기본 SAST 규칙을 사용하는 것이 좋습니다.
기본 규칙 세트는 대부분의 프로젝트와 관련되도록 설계되었습니다.
그러나 필요하다면 사용할 규칙을 사용자 정의하거나 규칙 변경 사항의 롤아웃을 제어할 수 있습니다.
로컬 규칙 기본 설정 적용
SAST 스캔에서 사용되는 규칙을 사용자 정의하고 싶을 수 있습니다.
- 귀하의 조직이 특정 취약점 클래스를 우선시하도록 지정한 경우, 예를 들어 Cross-Site Scripting (XSS) 또는 SQL Injection을 다른 취약점 클래스를 해결하기 전에 다루기로 선택한 경우.
- 특정 규칙이 잘못된 긍정 결과라고 생각하거나 코드베이스의 맥락에서 관련성이 없다고 판단하는 경우.
프로젝트를 스캔하는 데 사용되는 규칙을 변경하거나 심각도를 조정하거나 기타 기본 설정을 적용하려면 규칙 세트를 사용자 정의하세요.
귀하의 사용자 정의가 다른 사용자에게 도움이 될 경우 GitLab에 문제를 보고하는 것을 고려하세요.
규칙 롤아웃 조정
규칙 변경의 롤아웃을 제어하기 위해, 특정 버전으로 SAST 분석기를 고정할 수 있습니다.
여러 프로젝트에서 동시에 이러한 변경을 원하신다면 다음에서 변수를 설정하는 것을 고려하세요:
- 그룹 수준 CI/CD 변수.
- 스캔 실행 정책에서의 사용자 정의 CI/CD 변수.
GitLab SAST 규칙에 대한 문제 보고
GitLab은 SAST에 사용되는 규칙 세트에 대한 기여를 환영합니다.
기여는 다음과 같은 문제를 다룰 수 있습니다:
- 잠재적인 취약점이 잘못된 경우의 허위 긍정 결과.
- SAST가 실제로 존재하는 잠재적 취약점을 보고하지 않은 경우의 허위 부정 결과.
- 규칙의 이름, 심각도 등급, 설명, 지침 또는 기타 설명 내용.
모든 사용자의 탐지 규칙 개선이 가능하다고 생각되신다면, 다음과 같은 방법을 고려해 보세요:
- sast-rules 저장소로 Merge Request 제출. 자세한 내용은 기여 지침을 참조하세요.
-
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 파일에서 각 버전에 포함된 변경 사항, 새로운 규칙 또는 업데이트된 규칙의 세부 정보를 확인하세요.