jacopotediosi/octoscanner

GitHub: jacopotediosi/octoscanner

针对 OctoPrint 插件的静态分析工具,自动检测版本间弃用与移除功能的使用、安全问题及常见编码坏习惯。

Stars: 1 | Forks: 0

# Octoscanner 一款用于 OctoPrint 插件的静态分析工具。可检测不同 OctoPrint 版本之间已弃用或移除的功能的使用情况、安全问题以及常见的编码坏习惯。 ## 功能 - **自动规则生成** - 分析多个 OctoPrint 版本,生成用于检测弃用和移除功能的 [Semgrep](https://semgrep.dev) 规则 - **手写规则** - 包含用于解决插件中常见的安全问题和代码质量问题的额外规则 - **内置下载器** - 使用单条命令即可获取最相关的 OctoPrint 版本(以及插件 - TODO) - **集成扫描器** - 一次扫描一个或多个插件,并输出清晰、具有可操作性的结果 ## 生成器 Octoscanner 的核心是 `generator` 模块,它分析 OctoPrint 源代码并自动生成 Semgrep 规则。 生成器运行一个两阶段的 pipeline: 1. **分析器** (`generator/analyzers/`) - 解析 OctoPrint 源代码以提取有用的信息(例如,类层次结构和弃用标记)。 2. **处理器** (`generator/processors/`) - 消费分析器结果以构建 Semgrep 规则(例如,弃用和移除规则)。 ## 安装 ``` git clone https://github.com/jacopotediosi/octoscanner.git cd octoscanner python -m venv venv source ./venv/bin/activate pip install . ``` ## 用法 以下是最常见的用法。有关命令和选项的完整列表,请参阅 `octoscanner --help`。 ### 扫描插件 ``` # 扫描插件 octoscanner scan /path/to/my_plugin # 扫描多个插件 octoscanner scan /path/to/plugin1 /path/to/plugin2 # 按规则类别或特定规则文件过滤 octoscanner scan /path/to/my_plugin -r deprecation -r removal/python_removal.yaml ``` #### 忽略误报 在您的插件代码中添加[标记](https://semgrep.dev/docs/ignoring-files-folders-code#ignore-code-through-nosemgrep)(例如,`# nosemgrep: REM-0001`、`// nosemgrep`)以跳过特定行或代码块。 您还可以在扫描期间使用 `--exclude-rule` 排除特定规则(例如,`octoscanner scan /path/to/my_plugin --exclude-rule REM-0001 --exclude-rule DEP-0002`)。 #### CI 集成 如果任何被扫描的插件存在问题,Octoscanner 会返回退出代码 `1`,这使得 CI 集成变得非常直观。请在您的 workflow 中使用 `octoscanner scan`,可选择搭配 `--no-color` 或 `--format json`。 或者,使用 Octoscanner 生成的规则直接将 [Semgrep 集成到您的 CI 中](https://semgrep.dev/docs/semgrep-ci/sample-ci-configs)。 可以考虑将 [Opengrep](https://www.opengrep.dev/) 作为替代方案——在我的测试中,与 Semgrep 相比,它将扫描时间缩短了一半,从而节省了 CI 分钟数。 ### 生成规则 规则通常由 Octoscanner 维护者生成,以便进行手动审查和改进。如果您只是想扫描插件,请使用随附的预先生成的规则。 相反,如果您想尝试探索一番... ``` # 步骤 1. 下载最相关版本的 OctoPrint 源码 octoscanner download octoprint all # 步骤 2. 试运行:分析所有已下载的版本,打印将要生成的内容 octoscanner generate all # 步骤 3. 生成规则并保存到磁盘 octoscanner generate all --save ``` 您也可以仅分析两个 OctoPrint 版本之间的差异,并为此生成规则: ``` octoscanner generate 1.10.0 1.11.0 ``` ## 演示 为从 1.4.0 到 2.0.0 的所有 OctoPrint 版本生成规则只需不到 10 秒钟: [![规则生成演示](https://asciinema.org/a/D92aTuEyok1VJIl5.svg)](https://asciinema.org/a/D92aTuEyok1VJIl5) 扫描包含 400 多个 OctoPrint 插件的整个仓库只需不到一分钟: [![扫描演示](https://asciinema.org/a/I7ZLwptHA3FHjyr5.svg)](https://asciinema.org/a/I7ZLwptHA3FHjyr5)
标签:3D打印, OctoPrint, Python, SDLC, Semgrep, WordPress安全扫描, 中间件漏洞, 云安全监控, 代码安全审计, 坏味道检测, 安全专业人员, 开源安全工具, 弃用特征检测, 插件开发, 无后门, 自动化规则生成, 逆向工具, 逆向工程平台, 静态分析