首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么GitLab CI SAST没有导出我要求它排除的目录?

为什么GitLab CI SAST没有导出我要求它排除的目录?
EN

Stack Overflow用户
提问于 2022-01-27 23:30:16
回答 2查看 1.4K关注 0票数 4

我在GitLab CI (GitLab Community ) 14.5.2中启用了SAST扫描。SAST运行了一些工具,如semgrep和ESLint,运行在源代码上,并扫描漏洞。这很管用..。除了它不排除路径和文件的结果,我告诉它,所以我的报告充满了垃圾来自第三方库。

由于我不想在报告中使用测试代码或第三方内容,所以我使用GitLab提供的变量来实现这个目的,称为SAST_EXCLUDED_PATHS,用于排除一些dirs。我的价值是这样的:

代码语言:javascript
复制
    variables:
        SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js

因此,除了默认路径之外,我还告诉它不要扫描server/libsassetsvendor*.min.js

因此,添加步骤的简化的..gitlab ci.yml添加了排除项,并将SECURE_LOG_LEVEL设置为"debug"。后者,因此我可以看到像sast-semgrep这样的阶段的调试输出。

代码语言:javascript
复制
include:
    - template: Security/SAST.gitlab-ci.yml

stages:
    - test

# Run a SAST scan & report on the sources
sast:
    stage: test
    variables:
        SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js
        SECURE_LOG_LEVEL: "debug"

从调试中可以看出,sast-semgrep正在接受我的排除,并将它们转换为--exclude参数。但它只是扫描路径。我甚至尝试在路径上附加glob规则,例如"server/libs/**“。我甚至尝试使用绝对路径,例如"$CI_PROJECT_DIR/server/libs“,但这也不起作用。

我已经启用了调试控制台输出,甚至可以看到像semgrep这样的工具正确地扩展了排除。但这不管用!这个例子包括一个没有任何区别的$CI_PROJECT_DIR扩展。

代码语言:javascript
复制
[DEBU] [Semgrep] [2022-01-26T20:59:40Z] ▶ /usr/local/bin/semgrep -f /rules -o /builds/myprj/myprj/semgrep.sarif --sarif --no-rewrite-rule-ids --strict --disable-version-check --no-git-ignore --exclude spec --exclude  test --exclude  tests --exclude  tmp --exclude  "/builds/myprj/myprj/server/libs" --exclude  assets --exclude  vendor --exclude  *.min.js --enable-metrics /builds/myprj/myprj
[DEBU] [Semgrep] [2022-01-26T21:01:34Z] ▶ METRICS: Using configs from the Registry (like --config=p/ci) reports pseudonymous rule metrics to semgrep.dev.
To disable Registry rule metrics, use "--metrics=off".
Using configs only from local files (like --config=xyz.yml) does not enable metrics.
More information: https://semgrep.dev/docs/metrics
excluding files:
- spec
-  test
-  tests
-  tmp
-  "/builds/myprj/myprj/server/libs"
-  assets
-  vendor
-  *.min.js

据我所知,我正在使用GitLab调用的最新的Gitlab和docker映像。有人知道为什么排斥不起作用吗?我是不是遗漏了一些明显的东西。我也尝试了相同的CI/CD脚本在GitLab的最终评估副本和它的相同的交易。因此,这与Community中功能较弱的SAST功能无关,它仍然应该生成一个JSON报告。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-14 12:17:09

希望我不会太晚。我遇到了同样的问题,而解决它的办法是删除排除路径之间的空间。您的SAST_EXCLUDED_PATHS变量应该如下所示:

代码语言:javascript
复制
  variables:
        SAST_EXCLUDED_PATHS: spec,test,tests,tmp,server/libs,assets,vendor,*.min.js
票数 4
EN

Stack Overflow用户

发布于 2022-09-04 13:23:28

处置手推车评论中报告的“从排除路径中修剪空白”(评论)已在GitLab 15.2 (2022年7月)中合并。

此外,GitLab 15.3 (2022年8月)还提供:

排除双星球体的安全扫描路径 我们改进了在GitLab安全扫描器中忽略路径的方法。忽略路径可以通过忽略测试文件、示例代码或其他不想扫描的代码来帮助您专注于正确的发现。 现在,您可以使用**/*_test.gotest/**/fixture*等双星glob模式来排除以下内容中的路径:

文档问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70887133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档