wayalbhushan/warden

GitHub: wayalbhushan/warden

Warden 是一个基于 Go 构建的 API 安全网关,通过实时流量检测注入、SSRF、BOLA/IDOR 等漏洞模式,并提供针对 OpenAPI 文档的主动漏洞扫描能力。

Stars: 0 | Forks: 0

# 🛡️ WARDEN ### 并发 API 安全网关 & 主动式 OpenAPI 漏洞扫描器 **使用 Go 构建。旨在捕捉大多数 API 意外包含的确切漏洞类型。** [![Go Version](https://img.shields.io/badge/Go-1.22+-00ADD8?style=for-the-badge&logo=go&logoColor=white)](https://go.dev/) [![Redis](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge&logo=redis&logoColor=white)](https://redis.io/) [![Prometheus](https://img.shields.io/badge/Prometheus-E6522C?style=for-the-badge&logo=prometheus&logoColor=white)](https://prometheus.io/) [![Next.js](https://img.shields.io/badge/Next.js_16-000000?style=for-the-badge&logo=next.js&logoColor=white)](https://nextjs.org/) [![Tailwind CSS](https://img.shields.io/badge/Tailwind_v4-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white)](https://tailwindcss.com/) [![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE)
[功能](#-what-warden-actually-does) • [架构](#-architecture) • [仪表板展示](#-dashboard-showcase) • [快速开始](#-quickstart) • [主动扫描器](#-active-vulnerability-scanner) • [性能基准测试](#-benchmarks)
## 🧠 为什么会有 Warden 大多数 API 网关负责处理路由、速率限制和身份验证。但几乎没有任何网关会真正**去寻找那些悄然逃过代码审查的漏洞类型** —— 例如失效的对象级别授权 (BOLA/IDOR)、未上锁且无人记得保护的 endpoint 缺乏身份验证、通过用户提供 URL 发起的 SSRF,以及 WAF 本应在到达应用代码之前拦截的注入模式。 我在一次手动安全审计中,在自己的一个项目里发现了一个现存的 IDOR 漏洞 —— 这个 bug 允许已认证的用户仅通过修改请求中的 ID 就能访问另一个用户的私密数据。手动修复它的过程让我彻底看清了这类漏洞在网络传输中的真实面貌。Warden 便是将这一具体经验转化为软件的产物:它会自动、实时地监控每一个通过的请求,时刻防范此类漏洞。 这并不是一个为了赶时髦而强行拼凑安全功能的速率限制教程。其安全引擎 —— 包括 WAF 模式匹配、SSRF 防御、BOLA 检测以及独立的 OpenAPI 漏洞扫描器 —— 才是本项目的核心所在。网关的底层管道只是为该引擎提供了一个运行环境。 ## ⚙️ Warden 实际做了什么 Warden 以两种互补的执行模式运行: ### 1. 内联反向代理网关模式 位于客户端和上游后端服务之间。每一个请求在到达你的应用代码之前,都会经过一个分层防御管道: ``` Client Request │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 1. Metrics Middleware (internal/observability) │ → High-precision timing & Prometheus vectors ├─────────────────────────────────────────────────────────────┤ │ 2. Rate Limiter (Redis sliding-window token bucket) │ → HTTP 429 & Retry-After on burst traffic ├─────────────────────────────────────────────────────────────┤ │ 3. JWT / Auth Middleware (internal/auth) │ → HS256 Bearer signature validation ├─────────────────────────────────────────────────────────────┤ │ 4. Security Engine (internal/security) │ → WAF + SSRF + BOLA inspection ├─────────────────────────────────────────────────────────────┤ │ 5. Reverse Proxy → Upstream Backend Target (:8081) │ → Header sanitization & proxy forwarding └─────────────────────────────────────────────────────────────┘ ```
🔍 深入了解 Warden 的安全引擎检查
- **SQL / NoSQL / 命令注入 WAF**:基于特征的模式匹配,检查 SQLi (`OR 1=1`, `UNION SELECT`)、NoSQLi (`$gt`, `$where`) 以及命令注入 (`; cat /etc/passwd`, `&&`) 的 payload 特征。 - **SSRF (服务器端请求伪造)**:执行有限制的 100ms DNS 解析,并拦截指向 RFC 1918 私有 IP 范围、环回地址 (`::1`) 或云元数据 endpoint (`169.254.169.254`) 的出站目标。 - **BOLA / IDOR 检查器**:在 Redis SET (`user::resources`) 中追踪资源所有权,并拒绝任何已认证用户尝试访问或修改属于其他用户资源的请求。

### 2. 主动式 OpenAPI 漏洞扫描器模式 这是一个独立的 CLI 模式,用于解析 OpenAPI 3.0 规范,动态注入攻击向量,并**审计你的目标 API 中存在的真实漏洞**: ``` warden -scan -spec ./api-spec.json -target http://localhost:8081 ``` - **缺失身份验证引擎**:向受保护的 endpoint 发起未经身份验证的 HTTP 请求(将诸如 `{id}` 之类的路径参数替换为虚拟值),以验证身份验证的执行情况。 - **BOLA / IDOR 跨令牌测试器**:使用用户 A 和用户 B 的凭证,自动测试跨租户对象访问。 - **速率限制执行测试器**:发起并发请求突发,以验证对 HTTP 429 响应的执行情况。 - **结构化 JSON 报告**:将所有发现的结果聚合到一个整洁的 `warden-report.json` 文件中,以便进行 CI/CD 集成。 ## 📸 仪表板展示 Warden 包含一个使用 Tailwind CSS v4 和 TypeScript 构建的 Next.js 16 (App Router) 安全运营中心 (SOC) 仪表板。
### 🖥️ 视图 1:实时遥测与 SOC 事件流 Live Telemetry Dashboard
*Real-time request throughput, latency monitoring, 10s Attack Surge simulation, and authentic SOC event stream.*

### 🔍 视图 2:漏洞扫描报告与修复指南 Vulnerability Scan Report View
*Interactive vulnerability scan results with severity filter pills, JSON report exporter, and Go remediation code snippets.*

### 🌐 视图 3:基础设施健康状态与动态封包拓扑图 Infrastructure Topology View
*Animated glowing packet flow stream across cluster nodes with interactive Node Inspector drawers and subsystem toggles.*
## 🏗️ 架构与项目结构 ``` Warden/ ├── cmd/ │ ├── warden/ # Gateway entrypoint & CLI scanner flag handler │ ├── echo-server/ # Upstream target API server for local dev (:8081) │ └── tokengen/ # Helper tool to generate valid signed Bearer JWTs ├── internal/ │ ├── security/ # Signature WAF, SSRF Engine, and BOLA Inspector │ ├── ratelimit/ # Redis-backed sliding window token bucket │ ├── auth/ # HS256 Bearer JWT authentication middleware │ ├── observability/ # Prometheus metric vectors & timing middleware │ └── scanner/ # OpenAPI parser & active vulnerability engines ├── scripts/ # Benchmarking & large-spec generation scripts ├── dashboard/ # Next.js 16 Security Operations Center UI ├── PROJECT_IMPLEMENTATION.md # Full technical architectural specification └── go.mod ``` ## 🚀 快速开始 ### 1. 启动完整网关技术栈 ``` # 终端 1:启动 Upstream Target Server go run cmd/echo-server/main.go # 终端 2:启动 Warden Gateway Engine go run cmd/warden/main.go # 终端 3:启动 Security Operations Dashboard cd dashboard && npm run dev ``` 在浏览器中打开 **`http://localhost:3000`** 以查看实时仪表板。
### 2. 运行主动漏洞扫描器 ``` go run cmd/warden/main.go -scan -spec ./dummy-bola-api.json -target http://localhost:8081 ```
### 3. 运行性能基准测试 ``` bash scripts/benchmark.sh ``` ## 📈 性能基准测试 使用 [`hey`](https://github.com/rakyll/hey) 针对 mock Echo 后端进行测量,对比直接访问后端的流量与通过 Warden 完整 5 阶段防御管道的请求: | 场景 | 总请求数 | 并发数 | 吞吐量 | 平均延迟 | 延迟开销 | |---|---|---|---|---|---| | **直接访问后端 (无网关)** | 10,000 | 100 | ~8,750 req/s | 11.2 ms | 基准线 | | **通过 Warden (完整管道)** | 10,000 | 100 | **~8,493 req/s** | **14.5 ms** | **+3.3 ms** | | **OpenAPI 500个 Endpoint 扫描** | 500 paths | 10 | 1.4秒内完成 | N/A | 完整扫描与 JSON 报告 | ## 🔧 技术栈 | 层级 | 技术 | |---|---| | **核心网关** | Go 1.22+, `net/http/httputil` | | **速率限制** | Redis (滑动窗口令牌桶,原子 Lua 脚本) | | **身份验证** | Bearer JWT (HS256 签名验证) | | **扫描器解析器** | `kin-openapi` (OpenAPI 3.0 解析) | | **可观测性** | Prometheus client,结构化指标服务器 (`:9090`) | | **仪表板 UI** | Next.js 16 (App Router), TypeScript, Tailwind CSS v4 | | **设计系统** | Zinc 深色调色板,Inter & JetBrains Mono 字体,Lucide React | ## 📄 许可证 基于 MIT 许可证分发。详情请参阅 [LICENSE](LICENSE)。
Bhushan Wayal 构建 —— 一位致力于打造自己理想工具的安全工程师。
标签:API安全, API安全网关, CISA项目, Go, JSON输出, Ruby工具, WAF, 加密, 搜索引擎查询, 日志审计, 流量监控, 漏洞扫描器, 自动化攻击, 自定义请求头