标签: semgrep

为什么 GitLab CI SAST 不排除我要求其排除的目录?

我已在 GitLab CI(GitLab 社区版)14.5.2 中启用了 SAST 扫描。SAST 运行 semgrep 和 ESLint 等工具,在源代码上运行并扫描漏洞。这是有效的......除了它没有从我告诉它的结果中排除路径和文件,所以我的报告充满了来自第 3 方库的垃圾。

\n

由于我不想在报告中包含测试代码或第 3 方内容,因此我使用 GitLab 提供的变量来实现此目的,称为SAST_EXCLUDED_PATHS我用来排除某些目录的变量。我的价值观是这样的:

\n
    variables:\n        SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js\n
Run Code Online (Sandbox Code Playgroud)\n

所以基本上除了默认路径之外,我还告诉它不要扫描server/libs、assets或vendor。*.min.js

\n

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

\n
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 …
Run Code Online (Sandbox Code Playgroud)

gitlab-ci sast semgrep

8
推荐指数
1
解决办法
5045
查看次数

如何从 Semgrep 保存或导出报告/调查结果/结果?

当我运行扫描时,结果会打印在 CLI 上。我如何查看或存储这些结果?我可以使用管道 (|) 或输出重定向 (>) - 但是是否有 semgrep-y 或格式化方法来保存这些结果?

language-agnostic command-line-interface semgrep

6
推荐指数
1
解决办法
5568
查看次数

在预提交挂钩参数中使用环境变量

我正在努力将环境变量使用到预提交挂钩配置的参数部分

以下是一个示例 spinet 来展示我正在尝试做的事情

 - repo: https://github.com/returntocorp/semgrep
   rev: "v0.1.2"
   hooks:
     - id: semgrep
       name: semgrep my_custom_rule
       args:
         [
           "--config",
           "https://PRIVATE-TOKEN:{$TOKEN}@gitlab.com/api/proj/packages/test-rule.yml",
           "--error",
         ]
Run Code Online (Sandbox Code Playgroud)

我已经将 TOKEN 的值设置到环境变量中。但仍在处理中,URL 被视为 https://PRIVATE-TOKEN:{$TOKEN}@gitlab.com/api/proj/packages/test-rule.yml 而不是实际的令牌值。出于安全原因,我想避免将实际令牌放入配置中。

pre-commit pre-commit-hook pre-commit.com semgrep

4
推荐指数
1
解决办法
2629
查看次数

Semgrep:寻找错误的导入

我将如何继续让 Semgrep 检查我的代码库是否从错误的位置导入函数?例如在我的 django 项目中:

from gettext import gettext但我们确实应该这样做from django.utils.translation import gettext

关于如何使用 semgrep 实现这一目标有什么想法吗?

python django gettext python-3.x semgrep

3
推荐指数
1
解决办法
406
查看次数