leonardo-matheus/vulnscan
GitHub: leonardo-matheus/vulnscan
VulnGate 是一个整合 Trivy 和 OpenGrep/Semgrep 的 CLI 工具,在统一命令下同时完成依赖项漏洞扫描与源码静态安全分析。
Stars: 0 | Forks: 0
# VulnGate
由 [Trivy](https://aquasecurity.github.io/trivy/) + [OpenGrep](https://opengrep.dev) / [Semgrep](https://semgrep.dev) 提供支持的漏洞扫描 CLI。
## 简介
**VulnGate** 将两个扫描器整合到一个 CLI 中:
- **Trivy** — 检测依赖项、secrets 和 misconfigurations 中的漏洞
- **OpenGrep/Semgrep** — 直接检测源代码中的不安全模式 (SAST)
```
Trivy: dependências com CVEs conhecidas
SAST: SQL injection, XSS, eval, weak crypto, etc.
```
## 前置条件
- **Go 1.22+**(用于编译)
- **Trivy** — 通过 `vg install` 自动安装
- **OpenGrep** — 通过 `vg install` 自动安装
## 快速安装
```
# 编译
go build -o vulngate .
# 安装全部 (Trivy + OpenGrep + aliases)
vg install
# 或者使用 force (重新安装)
vg install --force
# 验证安装
vg install --check
```
### `vg install` 的作用
1. 将 `vulngate` 复制到 `~/.vulngate/bin/`
2. 创建别名 `vg.bat` (CMD) 和 `vg.ps1` (PowerShell)
3. 在 PowerShell profile 中添加 `function vg`
4. 下载并安装 **Trivy**
5. 下载并安装 **OpenGrep**
6. 将 `~/.vulngate/bin/` 添加到用户的 PATH 中
## 命令
### Scan (Trivy)
```
vg scan fs . # Scan filesystem
vg scan fs ./my-project # Scan projeto específico
vg scan repo https://github.com/org/repo # Scan repositório Git
vg scan fs . --severity HIGH,CRITICAL # Filtrar severidade
vg scan fs . --format sarif --output report.sarif # Export SARIF
```
### SAST (OpenGrep/Semgrep)
```
vg sast fs . # Scan com OpenGrep (padrão)
vg sast fs . --engine semgrep # Scan com Semgrep
vg sast fs . --rules rules/sast # Regras customizadas
vg sast fs . --fail-on ERROR # Falhar em ERROR
vg sast fs . --format json --output sast.json
```
### Full Scan (Trivy + SAST)
```
vg full # Scan completo no diretório atual
vg full . # Idem
vg full ./my-project # Scan completo em projeto
vg full fs ./my-project # Subcomando explícito
vg full --engine semgrep # Usar Semgrep
```
### 其他
```
vg version # Versão do VulnGate e Trivy
vg install # Instalar dependências
vg install --check # Verificar instalação
```
## 包含的 SAST 规则
### Java
- 通过字符串拼接导致的 SQL Injection
- 不安全的 TLS (HostnameVerifier)
- 弱加密算法 (MD5, SHA1, DES, RC4)
### JavaScript/TypeScript
- `eval()`, `new Function()`, 使用字符串的 `setTimeout`
- Node.js 查询中的 SQL Injection
### React
- `dangerouslySetInnerHTML`
### Vue.js
- `v-html`
### 自定义规则
将您的规则放在 `rules/sast/custom/` 中:
```
rules:
- id: hardcoded-api-key
pattern: |
$VAR = "sk-..."
message: Hardcoded API key detected
languages: [java, javascript]
severity: ERROR
```
## GitHub Actions
```
- name: VulnGate Scan
run: |
go build -o vulngate .
./vulngate install --check
./vulngate full fs . --format sarif --output results.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
```
## Exit Codes
| Code | 含义 |
|------|-------------|
| `0` | 未发现漏洞 |
| `1` | 发现漏洞(根据 `--fail-on` 设置) |
| `2` | 执行或验证错误 |
## Roadmap
- [ ] Docker image 扫描
- [ ] 配置文件 `.vulngate.yaml`
- [ ] 基于严重程度的漏洞策略
- [ ] 带有理由和过期时间的忽略列表
- [ ] Markdown 报告生成
- [ ] Slack/Teams 集成
- [ ] HTTP API
- [ ] Web 仪表板
- [ ] 扫描历史记录
- [ ] Dependency-Track 集成
- [ ] 使用 Syft 生成 SBOM
- [ ] OSV-Scanner 集成
## 许可证
MIT License。
标签:EVTX分析, Go, LNA, Ruby工具, 日志审计, 错误基检测, 静态代码分析