loc*_*cka 8 gitlab-ci sast semgrep
我已在 GitLab CI(GitLab 社区版)14.5.2 中启用了 SAST 扫描。SAST 运行 semgrep 和 ESLint 等工具,在源代码上运行并扫描漏洞。这是有效的......除了它没有从我告诉它的结果中排除路径和文件,所以我的报告充满了来自第 3 方库的垃圾。
\n由于我不想在报告中包含测试代码或第 3 方内容,因此我使用 GitLab 提供的变量来实现此目的,称为SAST_EXCLUDED_PATHS我用来排除某些目录的变量。我的价值观是这样的:
variables:\n SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js\nRun Code Online (Sandbox Code Playgroud)\n所以基本上除了默认路径之外,我还告诉它不要扫描server/libs、assets或vendor。*.min.js
因此,简化的 .gitlab-ci.yml 添加了该步骤,添加了排除项并设置SECURE_LOG_LEVEL为"debug"。后者让我可以看到 sast-semgrep 等阶段的调试输出。
include:\n - template: Security/SAST.gitlab-ci.yml\n\nstages:\n - test\n\n# Run a SAST scan & report on the sources\nsast:\n stage: test\n variables:\n SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js\n SECURE_LOG_LEVEL: "debug"\nRun Code Online (Sandbox Code Playgroud)\n我可以从调试中看到 sast-semgrep 正在将我的排除项转换为--exclude参数。但无论如何它只是扫描路径。我什至尝试将全局规则附加到路径上,例如“server/libs/**”。我什至尝试使用绝对路径,例如“$CI_PROJECT_DIR/server/libs”,但这也不起作用。
我已启用调试控制台输出,我什至可以看到 semgrep 等工具正在正确扩展排除项。但这不起作用!此示例包含一个$CI_PROJECT_DIR没有任何区别的扩展。
[DEBU] [Semgrep] [2022-01-26T20:59:40Z] \xe2\x96\xb6 /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\n[DEBU] [Semgrep] [2022-01-26T21:01:34Z] \xe2\x96\xb6 METRICS: Using configs from the Registry (like --config=p/ci) reports pseudonymous rule metrics to semgrep.dev.\nTo disable Registry rule metrics, use "--metrics=off".\nUsing configs only from local files (like --config=xyz.yml) does not enable metrics.\nMore information: https://semgrep.dev/docs/metrics\nexcluding files:\n- spec\n- test\n- tests\n- tmp\n- "/builds/myprj/myprj/server/libs"\n- assets\n- vendor\n- *.min.js\nRun Code Online (Sandbox Code Playgroud)\n据我所知,我正在使用最新的 GitLab 和 Gitlab 调用的 docker 镜像。有谁知道为什么排除不起作用?我是否遗漏了一些明显的东西?仅供参考,我还在 GitLab Ultimate 评估副本中尝试了相同的 CI/CD 脚本,并且是相同的交易。因此,这与社区版中功能较弱的 SAST 功能无关,社区版仍应生成 JSON 报告。有任何想法吗?
\n小智 10
希望我还不算太晚。我遇到了同样的问题,解决方法是删除排除路径之间的空格。你的SAST_EXCLUDED_PATHS变量应该是这样的:
variables:
SAST_EXCLUDED_PATHS: spec,test,tests,tmp,server/libs,assets,vendor,*.min.js
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5045 次 |
| 最近记录: |