我在GitLab CI (GitLab Community ) 14.5.2中启用了SAST扫描。SAST运行了一些工具,如semgrep和ESLint,运行在源代码上,并扫描漏洞。这很管用..。除了它不排除路径和文件的结果,我告诉它,所以我的报告充满了垃圾来自第三方库。
由于我不想在报告中使用测试代码或第三方内容,所以我使用GitLab提供的变量来实现这个目的,称为SAST_EXCLUDED_PATHS,用于排除一些dirs。我的价值是这样的:
variables:
SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js因此,除了默认路径之外,我还告诉它不要扫描server/libs、assets、vendor或*.min.js。
因此,添加步骤的简化的..gitlab ci.yml添加了排除项,并将SECURE_LOG_LEVEL设置为"debug"。后者,因此我可以看到像sast-semgrep这样的阶段的调试输出。
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扩展。
[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报告。有什么想法吗?
发布于 2022-02-14 12:17:09
希望我不会太晚。我遇到了同样的问题,而解决它的办法是删除排除路径之间的空间。您的SAST_EXCLUDED_PATHS变量应该如下所示:
variables:
SAST_EXCLUDED_PATHS: spec,test,tests,tmp,server/libs,assets,vendor,*.min.js发布于 2022-09-04 13:23:28
https://stackoverflow.com/questions/70887133
复制相似问题