MakFly/vx
GitHub: MakFly/vx
一款基于 Go 的高效 Web 安全扫描器,集成远程漏洞扫描与本地多语言代码审计,支持 CI/CD 集成与安全评分,帮助团队在开发和运维流程中快速发现并修复安全风险。
Stars: 0 | Forks: 0
# VX Security Scanner
**快速、开源的 Web 应用程序安全扫描器和漏洞评估工具**
在几秒钟内检测 XSS、SQL 注入、CORS 错误配置、TLS 问题、开放重定向、路径遍历、暴露的敏感信息等。
```
██╗ ██╗██╗ ██╗
██║ ██║╚██╗██╔╝
██║ ██║ ╚███╔╝ Security Scanner
╚██╗ ██╔╝ ██╔██╗
╚████╔╝ ██╔╝ ██╗
╚═══╝ ╚═╝ ╚═╝
```
[](https://go.dev)
[](LICENSE)
[](https://github.com/MakFly/vx/actions)
[](https://github.com/MakFly/vx/releases)
[](https://goreportcard.com/report/github.com/MakFly/vx)
[快速开始](#quick-start) | [模块](#remote-scan----16-modules) | [CI/CD](#cicd-integration) | [安装](#quick-start)
## 为什么选择 VX?
大多数 Web 安全扫描器速度慢(基于 Puppeteer)、体积臃肿(庞大的运行时),或仅限于单一语言。**VX** 是一个现代化的替代方案:
- **极速** -- 在 **~7 秒**内完成包含 16 个模块的完整扫描(并行 goroutine)
- **单一二进制文件** -- 一次 `go build`,随处部署,零运行时依赖
- **双模式** -- 黑盒渗透测试(远程)+ 白盒代码审计(本地)
- **多语言 SAST** -- 审计 PHP、TypeScript、JavaScript、Go、Python、Java、Rust
- **CI/CD 原生支持** -- GitHub Action、用于 Code Scanning 的 SARIF、PR 评论、评分徽章
- **低误报率** -- 针对 Next.js、React、Vue、Angular、Nuxt 的智能 SPA 全局捕获检测
- **OWASP 覆盖** -- 针对 Top 10 漏洞的测试:注入、XSS、身份验证失效、错误配置等
## 快速开始
```
# 一键安装
curl -fsSL https://raw.githubusercontent.com/MakFly/vx/main/install.sh | bash
# 或通过 Go
go install github.com/MakFly/vx@latest
# 或从源码构建
git clone https://github.com/MakFly/vx.git
cd vx && go build -o vx ./main.go
# 远程扫描
./vx scan https://example.com
# 本地审计
./vx audit ./my-project
# 同时执行
./vx full ./my-project --url https://example.com
# 交互模式
./vx
```
## 远程扫描 -- 16 个模块
| 模块 | 检查内容 |
|--------|---------------|
| `headers` | CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy |
| `cookies` | 所有 cookies 的 HttpOnly, Secure, SameSite 标志 |
| `tls` | TLS 1.0/1.1 已弃用版本、证书过期、自签名、密码套件 |
| `cors` | Origin 反射、通配符 + 凭证、null origin、危险方法 |
| `xss` | 反射型 XSS(5 种 payload 类型)、dataLayer 注入、DOM sinks |
| `sqli` | 基于错误(MySQL/PgSQL/MSSQL/SQLite/Oracle)+ 基于时间的盲注 |
| `redirect` | 通过 14 个常见参数、meta refresh、协议相对 URL 进行开放重定向 |
| `traversal` | 路径遍历 / LFI,包含 6 种编码变体(Linux + Windows) |
| `webservice` | API 发现、默认密钥、资源枚举、PrestaShop/WordPress/REST |
| `discovery` | 技术指纹(20+)、27 个敏感路径、SPF/DMARC/DKIM、悬空 CNAME |
| `info` | 令牌、敏感信息、调试信息、HTML 注释、电子邮件、追踪 ID |
| `portscan` | 20 个常见 TCP 端口及服务识别 |
| `subdomain` | 80+ 子域名枚举及 HTTP/HTTPS 探测 |
| `login` | 表单发现、CSRF 令牌、速率限制、自动完成、HTTPS |
| `httpmethods` | OPTIONS, PUT, DELETE, TRACE (XST) 及 SPA 全局捕获检测 |
| `jsdiscovery` | 从 JavaScript bundles 提取 API endpoint、未经身份验证的访问测试 |
## 本地审计 -- 5 个模块
| 模块 | 语言 | 检查内容 |
|--------|-----------|---------------|
| `secrets` | 所有 | 12 种模式(AWS, Stripe, GitHub, JWT, 私钥...)+ Shannon 熵检测 |
| `env-files` | 所有 | .env 在 .gitignore 中、.env.example 中的敏感信息、被 Git 追踪的 env 文件 |
| `dependencies` | npm, Composer, Go, pip, Cargo, Maven | 通过 [OSV.dev](https://osv.dev) API 查询 CVE |
| `code-vulns` | PHP, JS/TS, Go, Python, Java | SQLi, XSS, eval, 命令注入,弱加密模式 |
| `auth-config` | Next.js, Express, Symfony, Laravel | CORS 通配符、调试模式、会话配置、特定框架检查 |
## 输出格式
| 格式 | 标志 | 用例 |
|--------|------|----------|
| 终端 | *(默认)* | 具有颜色和严重性分组的人类可读格式 |
| JSON | `--json` | 机器可读,通过管道传递给 `jq` |
| HTML | `--html report.html` | 带有评分仪表盘的独立暗色主题报告 |
| SARIF | `--sarif results.sarif` | GitHub Code Scanning / GitLab SAST |
| Markdown | `--markdown report.md` | 带有评分差异的 PR 评论 |
| 徽章 | `--badge badge.json` | 用于 README 徽章的 shields.io endpoint |
## 评分
每项发现都有一个影响评分的严重级别:
| 严重性 | 扣分 | 示例 |
|----------|----------------|---------|
| Critical | -15 | 暴露的 .env、未经身份验证的 API、已确认的 LFI |
| High | -8 | 缺少 CSP、已弃用的 TLS、反射型 XSS |
| Medium | -3 | 缺少 X-Frame-Options、CORS 错误配置 |
| Low | -1 | Server 头信息泄露、SPF softfail |
| Info | 0 | 技术指纹、开放端口 |
**评级**: A (90-100) -- B (75-89) -- C (60-74) -- D (40-59) -- F (0-39)
## CI/CD 集成
### GitHub Action
```
name: Security
on: [push, pull_request]
permissions:
contents: write
pull-requests: write
security-events: write
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: MakFly/vx@v1
with:
url: 'https://your-app.com'
min-score: 70
```
该 action 会自动:
- 发布/更新包含评分、严重性计数和主要发现的 PR 评论
- 将 SARIF 上传到 GitHub Code Scanning(Security 标签页)
- 推送到默认分支时提交一个 badge JSON
- 如果评分低于阈值,则使工作流失败
### CI 中的 CLI
```
# 安装
go install github.com/MakFly/vx@latest
# 使用 threshold 运行
vx scan https://your-app.com --ci --min-score 75 --sarif results.sarif
# 如果 score < min-score 则 Exit code 1
```
## 扫描历史
```
# 列出所有已保存的扫描
vx history list
# 显示已保存扫描的详情
vx history show 2026-04-11_02-24-22_www-iautos-fr.json
# 比较两次扫描(score 差值,新增/修复的 findings)
vx history compare scan-before.json scan-after.json
# 导出为 HTML 报告
vx history export scan.json --html report.html
```
所有扫描会自动保存到 `~/.vx/scans/`。
## 配置
在您的项目根目录中创建 `vx.yaml`:
```
target: https://your-app.com
threads: 10
timeout: 15
modules: [] # empty = all
ci:
min-score: 70
fail-on-score: true
output:
sarif: vx-results.sarif
badge: .github/vx-badge.json
ignore:
- "Firebase API Key"
- "Supabase Anon Key"
```
使用 `.vxignore`(gitignore 语法)从本地审计中排除文件。
## SPA 误报检测
VX 会自动检测 SPA 框架的全局捕获页面(Next.js、React、Vue、Angular、Nuxt),这些页面会对任何路由返回 HTTP 200。这可以防止困扰其他扫描器的误报:
- 在全局捕获页面中反射的 XSS payload 不会被报告为漏洞
- 在全局捕获页面中返回 200 的 PUT/DELETE 会被降级为 INFO
- API endpoint 探测会忽略 HTML 全局捕获响应
## 构建
```
# 开发
go build -o vx ./main.go
# 生产
go build -ldflags "-s -w" -o vx ./main.go
# Cross-compile
GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o vx-linux-amd64 ./main.go
GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w" -o vx-darwin-arm64 ./main.go
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o vx.exe ./main.go
```
```
# 运行测试
make test
# Lint
make lint
# Build + test + lint
make all
```
## 项目结构
```
vx/
├── cmd/ # CLI commands (cobra)
│ ├── scan.go # vx scan
**如果 VX 对您有帮助,请考虑给它一个 star** -- 这有助于其他人发现这个项目。
标签:Angular, CI/CD安全, CISA项目, CMS安全, CORS跨域漏洞, DAST, DOE合作, EVTX分析, GitHub Action, Go语言, GraphQL安全矩阵, Grype, JavaScript, Llama, Nuxt, OpenCanary, OpenVAS, OWASP Top 10, PHP, Python, React, Rust, SARIF, SAST, SPA, Syscalls, TLS安全, TypeScript, Vue, Web安全, XSS, 动态应用安全测试, 单一二进制文件, 多模块扫描, 子域名枚举, 安全扫描器, 安全插件, 开放重定向, 开源安全工具, 恶意软件分析, 数据统计, 文件系统扫描, 无后门, 日志审计, 漏洞情报, 白盒测试, 盲注攻击, 程序破解, 端口扫描, 系统安全, 网络安全, 网络流量审计, 蓝队分析, 跨站脚本攻击, 路径遍历, 逆向工程平台, 隐私保护, 静态应用安全测试, 黑盒测试