问题标签 [semgrep]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Semgrep:寻找错误的导入
如果我的代码库从错误的地方导入函数,我将如何继续让 Semgrep 检查?例如在我的 django 项目中:
from gettext import gettext
但我们真的应该这样做from django.utils.translation import gettext
关于如何使用 semgrep 实现这一目标的任何想法?
python - 非文字导入 importlib.import_module() 中不受信任的用户输入警告
通过 Semgrep(静态代码验证器)运行我的 python 代码时,我收到以下警告。请建议任何实际示例如何使用白名单来防止运行不受信任的代码或任何其他解决方案来避免此警告。我在网上搜索但找不到任何示例..
我在 import_module 的特定行下方收到警告
警告:importlib.import_module() 函数中不受信任的用户输入允许攻击者加载任意代码。避免 importlib.import_module() 中的动态值或使用白名单来防止运行不受信任的代码。
jenkins - script.sh:语法错误:“(”意外脚本返回退出代码 2
尝试在 jenkins 中为 post 方法设置 body 参数,构建失败,因为错误意外“(”脚本返回错误状态 2。
以下是 jenkins 中的附加代码阶段:
它给出的错误为 [2021-09-08T0 2Z] /home/ / ace/pi-changes-for-tools-
integration@tmp/durabl */script.sh: 1: /home/j */***pi- changes-for-tools-integration@tmp/durable-/script.sh
:语法错误:“(”意外脚本返回退出代码
尝试修剪连同 sh 脚本仍然给出相同的错误
任何人都可以告诉什么是错的?
semgrep - 用于验证 Django 的 ForeignKey related_name 字段的 Semgrep 规则
我正在尝试创建一个规则来强制related_name
在 Django 中定义 ForeignKey 字段及其格式时使用。
通过以下规则强制使用该字段:
我现在的目标是修改此规则以也能够验证related_name 的格式,因此它是:(<model>_<field>_set
或者,遵循规则中的变量$M_$F_set
:)
我一直在尝试几种组合,到目前为止还没有走运。这可能吗?
编辑:
例如,看下面的模型:
static-analysis - Semgrep:是否可以根据函数的主体而不是名称来匹配函数?
问题在标题中。
例如,假设我有兴趣捕获使用某个全局变量(foo
此处)的所有函数调用。
我尝试了以下方法:
在以下 JavaScript 文件中:
可悲的是,这不起作用:
我想我“理解”了为什么我的规则不正确:它寻找既是函数定义又是函数调用的模式;而且它不会“关联”两个不同的代码位置。
我开始相信,如果没有join mode ,我想要实现的目标是不可能的,但我是一个初学者,并且很高兴被证明是错误的。semgrep
python - 在 Windows 上运行 Semgrep 并运行 Pygoat
我在 Windows 上安装了 Semgreppip install semgrep
并且它工作正常。现在,我想在 pygoat 上运行整个 semgrep 注册表。我从这里下载了代码并将其放在笔记本电脑的文件夹中。您如何在此文件夹上运行注册表?我尝试了以下方法:
上面的许多其他版本也是如此,但不断收到以下错误。
其他错误包括“没有这样的文件或目录”。
gitlab-ci - 为什么 GitLab CI SAST 不排除我要求它排除的目录?
我在 GitLab CI(GitLab 社区版)14.5.2 中启用了 SAST 扫描。SAST 运行 semgrep 和 ESLint 等工具运行源代码并扫描漏洞。这行得通......除了它没有从我告诉它的结果中排除路径和文件,所以我的报告充满了来自 3rd 方库的垃圾。
由于我不想在报告中包含测试代码或第 3 方的东西,我为此使用 GitLab 提供的变量,称为SAST_EXCLUDED_PATHS
我用来排除一些目录的变量。我的价值是这样的:
所以基本上除了默认路径之外,我已经告诉它不要扫描server/libs
,或.assets
vendor
*.min.js
因此,添加步骤、添加排除项并设置SECURE_LOG_LEVEL
为.gitlab-ci.yml 的简化版"debug"
。后者,所以我可以看到阶段的调试输出,例如 sast-semgrep。
我可以从调试中看到 sast-semgrep 正在接受我的排除并将它们转化为--exclude
参数。但无论如何它只是扫描路径。我什至尝试将 glob 规则附加到路径上,例如“server/libs/**”。我什至尝试过使用绝对路径,例如“$CI_PROJECT_DIR/server/libs”,但这也不起作用。
我启用了调试控制台输出,我什至可以看到像 semgrep 这样的工具正在正确地扩展排除项。但它不起作用!此示例包含一个$CI_PROJECT_DIR
没有任何区别的扩展。
据我所知,我正在使用 GitLab 调用的最新 GitLab 和 docker 映像。有谁知道为什么排除不起作用?我是否遗漏了一些明显的东西。仅供参考,我还在 GitLab Ultimate 评估副本中尝试了相同的 CI/CD 脚本,并且是相同的交易。因此,它与社区版中功能较弱的 SAST 功能无关,它仍应生成 JSON 报告。有任何想法吗?