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 运行:
# For macOS
$ brew install semgrep
# For Ubuntu/WSL/Linux/macOS
$ python3 -m pip install semgrep
# To try Semgrep without installation run via Docker
$ docker run --rm -v "${PWD}:/src" returntocorp/semgrep --help
安装后,Semgrep 可以单个规则或整个规则集运行。访问运行规则以了解更多信息或尝试以下信息:
# Check for Python == where the left and right hand sides are the same (often a bug)
$ semgrep -e '$X == $X' --lang=py path/to/src
# Run the r2c-ci ruleset (with rules for many languages) on your own code!
$ semgrep --config=p/r2c-ci path/to/src
访问 开始了解更多信息。
规则示例
用例 | 森格雷普规则 |
---|---|
禁止危险的 API | 防止使用执行官 |
搜索路线和身份验证 | 提取弹簧路线 |
强制执行使用安全默认值 | 安全设置烧瓶饼干 |
执行项目最佳实践 | 使用断言等于==检查,始终检查子处理呼叫 |
编纂项目特定知识 | 在进行交易之前验证交易 |
审核安全热点 | 在阿帕奇气流中查找 XSS,硬编码凭据 |
审核配置文件 | 查找S3 ARN使用 |
从废弃的 API 迁移 | Des 被弃用,弃用烧瓶 Apis,弃用博克 Apis |
应用自动修复 | 使用倾听和服务 |
集成
访问集成,了解森格雷普编辑器、提交和 CI 集成。当集成到 CI 并配置为扫描拉取请求时,Semgrep 只会报告该拉取请求引入的问题:这可以让你开始使用Semgrep而不修复或忽略预先存在的问题!
文档
浏览网站上完整的森格雷普文档。如果您是新到森格雷普,请查看“开始“或“交互式教程“。
更多
升级
要升级,运行下面与安装森格雷普方式相关的命令:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull returntocorp/semgrep:latest