2

我正在尝试将安全代码扫描与 Gitlab CI 集成。我阅读了文档,但仍然无法理解如何在 yml 文件中为 SCS 编写命令(源文件:警告 SCS [规则 ID]:[警告描述] [项目文件])。我的 Gitlab 托管在没有容器的 Windows 10 机器上。该项目是 .NET Framework 4.6.2,我使用 Visual Studio 2019。我已经从 NuGet 获得了一个 SCS 包。此外,我已经阅读了有关 Fortify 的信息,但我遇到了同样的问题。

4

2 回答 2

1

根据GitLab 文档,您实际上只需将此包含添加到您的主.gitlab-ci.yml文件中。

include:
  - template: Security/SAST.gitlab-ci.yml

该模板定义了一个使用自定义 Docker 映像和围绕安全代码扫描包的Go 包装器的作业。它实际上动态地将 SCS 包添加到发现的项目中,运行构建,并捕获和解析输出以生成安全报告。

它这样做是因为安全代码扫描项目在构建时作为分析器运行......它不是一个普通的 CLI 应用程序,尽管大多数情况下都会被忽略的问题要求这个选项。


更新:您可以安全代码扫描包添加到您的项目中

$ dotnet add package SecurityCodeScan --version 3.5.3

并在您的 GitLab 管道中运行正常构建,阅读管道日志中产生的警告。

build:
  stage: build
  image: mcr.microsoft.com/dotnet/core/sdk:3.1
  script:
    - dotnet build

您也可以启用TreatWarningsAsErrors破坏构建。

dotnet build /p:TreatWarningsAsErrors=true
<PropertyGroup>
  <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<PropertyGroup>

通过这种方式,您不会得到一个很好的 MR 附加报告,只是管道日志。无论如何,除非您有黄金计划,否则不会出现交互式管道报告。

于 2020-12-31T20:43:00.777 回答
0

使用GitLab 13.9(2021 年 2 月),这也适用于多个项目:

.NET SAST 扫描的多项目支持

GitLab安全扫描自动检测代码语言并运行适当的分析器。

借助 monorepos、微服务和多项目存储库,一个 GitLab 存储库中可以存在多个项目。以前我们的 .NET SAST 工具只能检测存储库中的单个项目。

在此版本中,我们的 .NET SAST 分析器现在可以智能地检测 .NET 项目中的多个解决方案文件 (.sln)并报告它们之间的漏洞。
这将使拥有多项目 .NET 存储库的用户更轻松、更精简地利用我们的 SAST 扫描。

请参阅文档问题

而且它更加明显(仍然使用GitLab 13.9,2021年 2 月)

所有用户的安全配置页面

由于所有 GitLab 客户都可以使用 SAST 和秘密检测,我们希望改善开发人员启用可用安全扫描的体验。我们为 Ultimate 用户提供了指导配置体验,现在为所有用户提供了这种体验的简化版本。这种新的配置体验使开发人员更容易了解他们可以使用哪些安全扫描、查找相关文档并提供简单的启用工具。在这个初始版本中,我们支持一个按钮来为 SAST 创建合并请求。在未来的版本中,我们将添加其他按钮以轻松启用其他扫描类型。

https://about.gitlab.com/images/13_9/secure_configuration_page_13.10.png-- 所有用户的安全配置页面

请参阅文档史诗


它确实随着GitLab 13.11(2021 年 4 月)而发展

GitLab + Semgrep:为未来升级 SAST

GitLab SAST 历史上由十几个开源静态分析安全分析器提供支持。这些分析器每月为使用 GitLab 的开发人员主动识别数百万个漏洞。
这些分析器中的每一个都是特定于语言的,并且具有不同的扫描技术方法。这些差异会产生更新、管理和维护我们在这些工具之上构建的附加功能的开销,并且会给任何尝试调试的人造成混乱。

GitLab 静态分析团队正在不断评估新的安全分析器。r2c开发团队的一个相对较新的工具给我们留下了深刻的印象,叫做Semgrep
它是一种快速、开源的静态分析工具,用于查找错误和执行代码标准。
Semgrep 的规则看起来像您正在搜索的代码;这意味着您可以编写自己的规则,而无需了解抽象语法树 (AST) 或与正则表达式搏斗。

Semgrep 灵活的规则语法非常适合简化 GitLab 的自定义规则集功能,以扩展和修改检测规则,这是 GitLab SAST 客户的普遍要求。Semgrep 还拥有一个不断增长的开源注册表,其中包含 1,000 多个社区规则

我们正在将许多基于 lint 的 SAST 分析器转换为 Semgrep。

这一转变将有助于提高稳定性、性能、规则覆盖率,并允许 GitLab 客户访问 Semgrep 的社区规则和我们将在未来添加的其他自定义规则集功能。我们很高兴与 r2c 团队合作,我们迫不及待地将我们的更多分析器迁移到 Semgrep。您可以在我们的过渡史诗中阅读更多内容,或者尝试我们的第一个用于 JavaScript、TypeScript 和 Python 的实验性 Semgrep 分析器。

(所以还不是.Net,但很快)

我们对这种转变对 GitLab SAST 和更大的 Semgrep 社区的未来意味着什么感到兴奋。
GitLab 将为Semgrep 开源项目做出贡献,包括额外的规则以确保覆盖范围匹配或超过我们现有的分析器。

https://about.gitlab.com/images/13_11/gl_semgrep.png -- GitLab + Semgrep:为未来升级 SAST

请参阅文档史诗

同样的 GitLab 13.11 宣布:


GitLab 13.12(2021 年 5 月)

适用于 JavaScript、TypeScript 和 Python 的 Semgrep SAST 分析器

在 GitLab 13.11 中,我们宣布了Semgrep的实验版本,这是一种用于 JavaScript、TypeScript 和 Python 的新 SAST 分析器。这种过渡是与r2c合作开发的,r2c是 Semgrep 背后的团队,他们与我们共同致力于帮助开发人员编写更安全的代码。经过数百名客户试用我们的实验分析仪的广泛测试后,我们已准备好开始向 Semgrep 过渡。

在 13.12 中,我们正在更新我们的托管SAST.gitlab-ci.ymlCI 模板,以便与我们现有的 JavaScript 和 TypeScript 分析器 ESlint 一起自动运行这个新的分析器。在未来的版本中,我们将完全禁用 ESLint,但目前它将与 Semgrep 协同工作。我们已经完成了对结果进行重复数据删除的工作,因此您应该不会注意到结果的任何差异。如果您包含我们的SAST.gitlab-ci.yml,则无需执行任何操作即可开始从 Semgrep 分析器中受益,但是如果您覆盖或管理自己的 SAST CI 配置,则应更新您的 CI 配置

GitLab 和 r2c 都对这种过渡的未来感到兴奋,因为它可以为您带来快速和广泛的静态应用安全测试 (SAST)。我们将继续通过新的安全检测规则扩展 Semgrep 分析器,并将覆盖范围扩展到其他语言。我们创建了一个反馈问题,您可以在其中分享您在此转换方面的经验或提出问题。

请参阅文档史诗

于 2021-02-22T22:37:07.807 回答