MakFly/vx

GitHub: MakFly/vx

一款基于 Go 的高效 Web 安全扫描器,集成远程漏洞扫描与本地多语言代码审计,支持 CI/CD 集成与安全评分,帮助团队在开发和运维流程中快速发现并修复安全风险。

Stars: 0 | Forks: 0

# VX Security Scanner **快速、开源的 Web 应用程序安全扫描器和漏洞评估工具** 在几秒钟内检测 XSS、SQL 注入、CORS 错误配置、TLS 问题、开放重定向、路径遍历、暴露的敏感信息等。 ``` ██╗ ██╗██╗ ██╗ ██║ ██║╚██╗██╔╝ ██║ ██║ ╚███╔╝ Security Scanner ╚██╗ ██╔╝ ██╔██╗ ╚████╔╝ ██╔╝ ██╗ ╚═══╝ ╚═╝ ╚═╝ ``` [![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?logo=go&logoColor=white)](https://go.dev) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b51a3b72d1204856.svg)](https://github.com/MakFly/vx/actions) [![GitHub release](https://img.shields.io/github/v/release/MakFly/vx?include_prereleases&label=release)](https://github.com/MakFly/vx/releases) [![Go Report Card](https://goreportcard.com/badge/github.com/MakFly/vx)](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 │ ├── audit.go # vx audit │ ├── full.go # vx full --url │ ├── history.go # vx history list|show|compare|export │ └── interactive.go # vx (no args = interactive menu) ├── pkg/ │ ├── engine/ # Core: Module interface, Config, Finding, Score │ ├── modules/ # 16 remote scan modules │ ├── local/ # 5 local audit modules │ ├── report/ # Output: terminal, HTML, SARIF, badge, markdown │ ├── config/ # vx.yaml parser │ └── history/ # Scan history persistence ├── action.yml # GitHub Action definition ├── Makefile # Build, test, lint targets └── .github/workflows/ # CI + security scan + release ``` ## VX 对比 | 特性 | VX | Nuclei | ZAP | Nikto | VICE | |---------|:--:|:------:|:---:|:-----:|:----:| | 单一二进制文件 | 是 | 是 | 否 (Java) | 否 (Perl) | 否 (Node) | | 扫描速度 | ~7秒 | 不定 | 数分钟 | 数分钟 | ~2分钟 | | 本地代码审计 (SAST) | 是 | 否 | 否 | 否 | 仅 JS | | 多语言 SAST | 7 种语言 | 否 | 否 | 否 | 否 | | SPA 误报过滤 | 是 | 否 | 否 | 否 | 否 | | GitHub Action | 是 | 是 | 是 | 否 | 是 | | SARIF 输出 | 是 | 是 | 否 | 否 | 是 | | 依赖项 CVE 检查 | 是 (OSV.dev) | 否 | 否 | 否 | 仅 npm | | SQLi + XSS 测试 | 是 | 是 | 是 | 有限 | 是 | | 评分与评级 | 是 (0-100, A-F) | 否 | 风险等级 | 否 | 是 | | TLS 审计 | 是 | 否 | 是 | 是 | 否 | | 子域名枚举 | 是 | 否 | 否 | 否 | 是 | | 端口扫描 | 是 | 否 | 否 | 否 | 是 | ## 使用案例 - **渗透测试** -- 对预发布/生产目标运行 `vx scan` - **CI/CD 安全门禁** -- 如果安全评分降至阈值以下,则阻止合并 - **代码审查** -- 运行 `vx audit` 以捕获硬编码敏感信息、SQLi 模式、XSS sinks - **合规性** -- 生成用于安全审计和合规性文档的 SARIF 报告 - **漏洞悬赏** -- 快速枚举攻击面(子域名、端口、JS endpoint、API) - **DevSecOps** -- 使用 GitHub Action 将其集成到您的流水线中 ## 法律 VX 在首次运行时会显示法律免责声明。仅扫描您拥有或获得明确书面授权测试的系统。未经授权访问计算机系统是非法的。 ## 许可证 [MIT](LICENSE)
**如果 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, 动态应用安全测试, 单一二进制文件, 多模块扫描, 子域名枚举, 安全扫描器, 安全插件, 开放重定向, 开源安全工具, 恶意软件分析, 数据统计, 文件系统扫描, 无后门, 日志审计, 漏洞情报, 白盒测试, 盲注攻击, 程序破解, 端口扫描, 系统安全, 网络安全, 网络流量审计, 蓝队分析, 跨站脚本攻击, 路径遍历, 逆向工程平台, 隐私保护, 静态应用安全测试, 黑盒测试