MauroEldritch/commissar
GitHub: MauroEldritch/commissar
一款用于在安装前静态扫描 RubyGems 的供应链安全检测工具,通过识别恶意指标和风险评分帮助防御供应链攻击。
Stars: 0 | Forks: 0
# Commissar
用于检测 RubyGems 中潜在供应链攻击的静态分析工具。
在您安装 gem 之前扫描其是否存在恶意指标:可疑的网络调用、凭证访问、文件读取、混淆的 payload、危险的 gemspec 模式等。
## 安装
```
gem install commissar
```
## 使用方法
```
commissar [version] [options]
commissar --local PATH [options]
```
示例:
```
#Normal use
commissar rails
#Scan a specific version
commissar nokogiri 1.16.0
#Scan a local gem
commissar --local /tmp/my-gemfile.gem
#JSON output to screen or to file
commissar rails --format json > commissar.json
commissar rails --format json | jq
#Table format
commissar rails --format table
#CSV (format is assumed from the output file extension)
commissar rails --output results.csv
#No colour, please
commissar rails --no-color
#I just want the score for my automation tool/pipeline
commissar rails --score-only
```
输出按类别、严重性(`CRIT`、`HIGH`、`MED`、`LOW`、`INFO`)、文件和行号对发现进行分组。最后会打印风险评分(0-100)和最终建议。
您可以使用 `--score-only` 将 Commissar 快速集成到您的 CI/CD 流水线中。您将获得一个代表风险评分的纯整数,不包含横幅或任何其他信息。
## 配置
模式列表位于仓库的 `conf/` 目录中(或安装后 gem 自带的 `conf/` 目录)。直接编辑这些文件即可添加或移除模式。
文件:
| 文件 | 用途 |
|---|---|
| `suspicious_urls.txt` | 与数据渗漏或暂存相关的域名 |
| `suspicious_functions.txt` | 危险的 Ruby 方法和类 |
| `suspicious_shell.txt` | 用于数据渗漏或暂存的 Shell 命令 |
| `credential_paths.txt` | 包含密钥和敏感信息的文件系统路径及环境变量 |
| `clipboard_patterns.txt` | 用于剪贴板访问的系统调用和 API |
| `known_bad_wallets.txt` | 受 OFAC 制裁和 DOJ 记录的钱包地址 |
| `complex_gems.txt` | 已知的复杂 gem,当评分升高时会收到上下文提示 |
| `severity.txt` | 每个严重性级别的数值权重 |
| `post_install_patterns.txt` | 安装后消息中的可疑模式 |
每个文件均为纯文本,每行一个条目。以 `#` 开头的行将被忽略。
### 模式格式
```
SEVERITY:PATTERN
```
示例:
```
HIGH:eval
CRIT:api.telegram.org
MED:pastebin.com
```
### 反模式
第一对字段之后的任何字段都被视为反模式:如果该行与模式匹配,但也包含任何反模式,则该发现将被抑制。有助于减少合法元编程产生的误报。
```
SEVERITY:PATTERN:ANTIPATTERN:ANTIPATTERN:...
```
示例:
```
HIGH:eval:&:binding
HIGH:instance_eval:&
HIGH:class_eval:&:__FILE__
```
Ruby 命名空间表示法中的 `::` 绝不会被视作分隔符,因此 `MED:Net::HTTP` 可以按预期工作。
## 检测内容
- 在过去 72 小时内发布的版本
- 近期的所有者变更或新的维护者账号
- 缺失或损坏的主页/源码 URI
- Gemspec 的 `extensions` 指向 `extconf.rb` 或 `Rakefile`(在 `gem install` 时运行)
- gemspec 中的顶级代码
- `eval`、`system`、反引号以及其他危险的函数调用
- 出站网络调用(Telegram 机器人、Discord webhooks、粘贴站点、webhook 服务)
- `curl`/`wget` POST 命令及等效的 Ruby HTTP POST 操作
- Base64 编码或 zlib 压缩的 payload
- 高 Shannon 熵字符串(>5.5 bits/char)
- 超过 500 个字符的行(常见于填充和隐藏方案中)
- 通过 `ENV` 或文件系统路径访问凭证
- 剪贴板劫持(Web3)
- 硬编码的钱包地址:已知受 OFAC/DOJ 制裁的地址标记为 `CRIT`,未知地址标记为 `HIGH`
## 开发
```
bundle install
rake test
```
## 许可证
MIT - 请参阅 [LICENSE](LICENSE)。
标签:DevSecOps, DNS 反向解析, GraphQL安全矩阵, HTTP工具, IP 地址批量处理, Linux安全, RubyGems, Ruby安全, 上游代理, 云安全监控, 凭证访问, 前端框架, 后门检测, 安全专业人员, 安全扫描器, 混淆载荷检测, 网络请求审计, 静态分析