Semgrep 是一种快速、开源、静态分析工具,用于在编辑器、提交或 CI 时间查找错误并执行代码标准。它的规则看起来像你正在搜索的代码:没有更多的穿越抽象语法树或摔跤与雷格克斯。

https://semgrep.dev
https://github.com/returntocorp/semgrep
https://semgrep.dev/docs

许多语言的轻量级静态分析。

查找错误并执行代码标准。

Semgrep 是一种快速、开源、静态分析工具,可在编辑器、提交和 CI 时间查找错误并执行代码标准。精确的规则看起来像您正在搜索的代码;不再穿越抽象语法树,与雷格斯搏斗,或使用痛苦的DSL。代码分析在本地执行(代码未上传),Semgrep 在未编译的代码上运行。

Semgrep 注册处有 1,000 多条由 Semgrep 社区编写的规则,涵盖安全性、正确性和性能错误。没有必要DIY,除非你想。

从一人创业到数十亿美元的公司,Semgrep 在各地的生产中都使用:它的引擎内的工具,如节点扫描。请参阅由森格雷普供电的工具。

森格雷普是由r2c,一家软件安全公司开发和商业支持。r2c 的托管服务Semgrep 应用程序允许组织轻松地在 CI 中部署,管理多个项目的规则,监控代码策略的有效性,并与第三方服务集成。r2c提供免费和付费托管层(参见定价)。

语言支持

一般可用性

去 •爪哇 +爪哇脚本 •杰斯克斯 •杰森 •Python •红宝石 •类型脚本 »茨克斯

测试版和实验

有关完整列表,请参阅支持语言

开始

要安装 Semgrep,请使用自制或点子,或在没有安装的情况下通过 Docker 运行:

  1. # For macOS
  2. $ brew install semgrep
  3. # For Ubuntu/WSL/Linux/macOS
  4. $ python3 -m pip install semgrep
  5. # To try Semgrep without installation run via Docker
  6. $ docker run --rm -v "${PWD}:/src" returntocorp/semgrep --help

安装后,Semgrep 可以单个规则或整个规则集运行。访问运行规则以了解更多信息或尝试以下信息:

  1. # Check for Python == where the left and right hand sides are the same (often a bug)
  2. $ semgrep -e '$X == $X' --lang=py path/to/src
  3. # Run the r2c-ci ruleset (with rules for many languages) on your own code!
  4. $ semgrep --config=p/r2c-ci path/to/src

访问 开始了解更多信息。

规则示例

访问规则示例以查看案例和想法。还有一个优秀的互动教程

用例 森格雷普规则
禁止危险的 API 防止使用执行官
搜索路线和身份验证 提取弹簧路线
强制执行使用安全默认值 安全设置烧瓶饼干
执行项目最佳实践 使用断言等于==检查始终检查子处理呼叫
编纂项目特定知识 在进行交易之前验证交易
审核安全热点 在阿帕奇气流中查找 XSS硬编码凭据
审核配置文件 查找S3 ARN使用
从废弃的 API 迁移 Des 被弃用弃用烧瓶 Apis,弃用博克 Apis
应用自动修复 使用倾听和服务

集成

访问集成,了解森格雷普编辑器、提交和 CI 集成。当集成到 CI 并配置为扫描拉取请求时,Semgrep 只会报告该拉取请求引入的问题:这可以让你开始使用Semgrep而不修复或忽略预先存在的问题!

文档

浏览网站上完整的森格雷普文档。如果您是新到森格雷普,请查看“开始“或“交互式教程“。

更多

升级

要升级,运行下面与安装森格雷普方式相关的命令:

  1. # Using Homebrew
  2. $ brew upgrade semgrep
  3. # Using pip
  4. $ python3 -m pip install --upgrade semgrep
  5. # Using Docker
  6. $ docker pull returntocorp/semgrep:latest