SAST 规则
- Tier: 免费版, 高级版, 终极版
- Offering: GitLab.com, GitLab 自托管, GitLab 专用
GitLab SAST 使用一组 analyzers 来扫描代码中的潜在漏洞。 它会根据代码库中发现的编程语言自动选择运行哪些分析器。
每个分析器处理代码,然后使用规则来查找源代码中的可能弱点。 分析器的规则决定了它会报告哪些类型的弱点。
规则范围
GitLab SAST 专注于安全弱点和漏洞。它不旨在发现一般性错误或评估整体代码质量或可维护性。
GitLab 管理检测规则集,专注于识别可操作的安全弱点和漏洞。 该规则集旨在为影响最大的漏洞提供广泛覆盖,同时最小化误报(报告了不存在的漏洞)。
GitLab SAST 设计为使用其默认配置,但如果需要,你可以 配置检测规则。
规则来源
GitLab 高级 SAST
- Tier: 终极版
GitLab 创建、维护和支持 GitLab Advanced SAST 的规则。 其规则是专门构建的,以利用 GitLab Advanced SAST 扫描引擎的跨文件、跨函数分析功能。 GitLab Advanced SAST 规则集不是开源的,并且与其他任何分析器的规则集都不同。
有关 GitLab Advanced SAST 检测的漏洞类型的详细信息,请参阅 漏洞报告时。
基于 Semgrep 的分析器
GitLab 创建、维护和支持基于 Semgrep 的 GitLab SAST 分析器中使用的规则。 该分析器在单个 CI/CD 管道作业中扫描 多种语言。 它结合了:
- Semgrep 开源引擎。
- GitLab 管理的检测规则集,在 GitLab 管理的开源
sast-rules项目 中管理。 - GitLab 专有技术,用于 漏洞跟踪。
其他分析器
GitLab SAST 使用其他分析器来扫描剩余的 支持的语言。 这些扫描的规则在每个扫描器的上游项目中定义。
规则更新如何发布
GitLab 根据客户反馈和内部研究定期更新规则。 规则作为每个分析器的容器镜像的一部分发布。 除非你 手动将分析器固定到特定版本,否则你会自动收到更新的分析器和规则。
如果相关更新可用,分析器及其规则会 至少每月更新一次。
规则更新策略
SAST 规则的更新不是 破坏性更改。 这意味着规则可能会被添加、删除或更新,而无需事先通知。
但是,为了使规则变更更加方便和易于理解,GitLab:
- 记录计划中或已完成的 规则变更。
- 对于基于 Semgrep 的分析器,在规则被移除后 自动解决 规则的发现。
- 使你能够 批量更改状态为 “不再检测” 的漏洞。
- 评估拟议的规则变更对现有漏洞记录的影响。
在你的项目中配置规则
除非你有特定的变更理由,否则应该使用默认的 SAST 规则。 默认规则集旨在与大多数项目相关。
但是,如果需要,你可以 自定义使用的规则 或 控制规则变更的发布方式。
应用本地规则偏好
你可能需要自定义 SAST 扫描中使用的规则,因为:
- 你的组织已为特定的漏洞类别分配了优先级,例如选择在其他漏洞类别之前解决跨站脚本(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 静态分析和漏洞研究团队正在努力移除那些倾向于产生过多误报结果或不够可操作的真实阳性结果的规则。这些被移除规则的现有发现 自动解决;它们不再出现在 安全仪表板 或 漏洞报告 的默认视图中。这项工作在 史诗 10907 中跟踪。
- 在 GitLab 16.0 到 16.2 中,GitLab 漏洞研究团队更新了包含在每个结果中的指导。
- 在 GitLab 15.10 中,
detect-object-injection规则 默认移除,其发现 自动解决。
有关更多详细信息,请参阅 sast-rules 的 CHANGELOG。
其他分析器中的规则变更
有关每个版本中包含的变更的详细信息,包括新的或更新的规则,请参阅每个 分析器 的 CHANGELOG 文件。