praetorian-inc/hadrian
GitHub: praetorian-inc/hadrian
Hadrian 是一个专注于 API 授权安全测试的开源框架,通过基于角色的自动化交叉测试检测 REST、GraphQL 和 gRPC 中的 OWASP API Top 10 漏洞。
Stars: 10 | Forks: 0
# Hadrian:开源 API 安全测试框架
[](https://github.com/praetorian-inc/hadrian/actions/workflows/ci.yml)
[](https://goreportcard.com/report/github.com/praetorian-inc/hadrian)
[](LICENSE)
**Hadrian 是一个开源 API 安全测试框架,用于检测 REST、GraphQL 和 gRPC API 中的 OWASP API Top 10 漏洞。** 它利用基于角色的授权测试和 YAML 驱动的模板,自动发现损坏的对象级授权 (BOLA)、损坏的功能级授权 (BFLA)、损坏的认证以及其他关键的 API 安全缺陷——无需编写自定义测试代码。
## 为什么选择 Hadrian?
大多数 API 安全扫描器测试注入和配置问题,但忽略了**授权逻辑漏洞**——根据 OWASP,这是排名第一和第五的最关键 API 漏洞。Hadrian 专为授权测试而设计:
- **一次定义你的角色**(admin、user、guest)及其权限和凭证
- **Hadrian 自动针对每个端点交叉测试每种角色组合**
- **三阶段变异测试** 证明写入/删除漏洞确实发生了——而不仅仅是返回了 200 OK
## 主要功能
| 功能 | 描述 |
|---------|-------------|
| **OWASP API Top 10 覆盖** | 30 个内置模板,涵盖 BOLA、损坏的认证、BFLA、数据泄露和配置错误 |
| **基于角色的授权测试** | 定义具有权限级别的角色,并自动测试跨角色访问 |
| **变异测试** | 三阶段 设置 → 攻击 → 验证 模式证明写入/删除漏洞确实发生了 |
| **REST + GraphQL + gRPC** | 测试任何 API 协议,并提供特定于协议的安全检查 |
| **模板驱动** | 用于自定义安全测试的 YAML 模板——无需编写代码 |
| **多种输出格式** | 用于 CI/CD 集成的终端、JSON 和 Markdown 报告 |
| **自适应速率限制** | 主动请求限制,并在收到 429/503 响应时进行反应性回退 |
| **代理支持** | 通过 Burp Suite 或其他拦截代理路由流量 |
| **LLM 支持的分类** | 通过 Ollama 对发现进行可选的 AI 分析,以减少误报 |
| **Claude Code 集成** | 从 OpenAPI、GraphQL SDL 或 proto 文件自动生成认证和角色配置 |
## OWASP API 安全 Top 10 覆盖范围
Hadrian 包含 30 个模板(8 个 REST,13 个 GraphQL,9 个 gRPC),涵盖最关键的 API 安全风险:
| 类别 | 漏洞 | REST | GraphQL | gRPC |
|----------|--------------|------|---------|------|
| API1:2023 | 损坏的对象级授权 (BOLA) | ✅ | ✅ | ✅ |
| API2:2023 | 损坏的认证 | ✅ | ✅ | ✅ |
| API3:2023 | 损坏的对象属性级授权 (BOPLA) | ✅ | ✅ | ✅ |
| API4:2023 | 不受限制的资源消耗 | — | ✅ | — |
| API5:2023 | 损坏的功能级授权 (BFLA) | ✅ | ✅ | ✅ |
| API6:2023 | 不受限制地访问敏感业务流程 | — | — | — |
| API7:2023 | 服务器端请求伪造 | — | — | — |
| API8:2023 | 安全配置错误 | ✅ | ✅ | ✅ |
| API9:2023 | 资产管理不当 | ✅ | — | — |
| API10:2023 | API 的不安全消费 | — | — | — |
## 如何安装 Hadrian
### 从源代码安装
```
go install github.com/praetorian-inc/hadrian/cmd/hadrian@latest
```
### 下载预编译二进制文件
从 [Releases](https://github.com/praetorian-inc/hadrian/releases) 页面下载适合您平台的最新二进制文件。
### 从源代码构建
```
git clone https://github.com/praetorian-inc/hadrian.git
cd hadrian
make build
```
## 如何使用 Hadrian 测试您的 API
### REST API 安全测试
```
hadrian test rest --api api.yaml --roles roles.yaml --auth auth.yaml --category all
```
### GraphQL API 安全测试
```
hadrian test graphql --target https://api.example.com --auth auth.yaml --roles roles.yaml --template-dir templates/graphql
```
### gRPC API 安全测试
```
hadrian test grpc --target localhost:50051 --proto service.proto --auth auth.yaml --roles roles.yaml
```
### 常用选项
```
# 预览测试内容(dry run)
hadrian test rest --api api.yaml --roles roles.yaml --category all --dry-run
# 将结果导出为 JSON
hadrian test rest --api api.yaml --roles roles.yaml --category all --output json --output-file report.json
# AI 驱动的分流以减少误报
hadrian test rest --api api.yaml --roles roles.yaml --category all \
--llm-host http://localhost:11434 --llm-model llama3.2:latest
# 通过代理路由以进行人工检查
hadrian test rest --api api.yaml --roles roles.yaml --category all --proxy http://localhost:8080 --insecure
```
## Hadrian 的变异测试是如何工作的?
与仅检查 HTTP 状态码的扫描器不同,Hadrian 的**三阶段变异测试**证明未授权的操作确实成功了:
```
Phase 1: SETUP → Victim creates a resource (stores resource ID)
Phase 2: ATTACK → Attacker attempts to delete victim's resource
Phase 3: VERIFY → Confirm the resource was actually deleted
```
这消除了那些返回 200 OK 但静默忽略未授权请求的 API 所产生的误报。[了解更多关于变异测试的信息 →](https://github.com/praetorian-inc/hadrian/wiki/Architecture)
## 文档
| 指南 | 描述 |
|-------|-------------|
| [入门指南](https://github.com/praetorian-inc/hadrian/wiki/Getting-Started) | 安装、首次扫描和配置演练 |
| [REST API 测试](https://github.com/praetorian-inc/hadrian/wiki/REST-API-Testing) | REST 测试指南、8 个模板以及 OpenAPI 集成 |
| [GraphQL 安全测试](https://github.com/praetorian-inc/hadrian/wiki/GraphQL-Security-Testing) | 13 项 GraphQL 检查,包括内省、DoS 和认证绕过 |
| [gRPC 安全测试](https://github.com/praetorian-inc/hadrian/wiki/gRPC-Security-Testing) | gRPC 模式、proto 文件集成和变异测试 |
| [配置](https://github.com/praetorian-inc/hadrian/wiki/Configuration) | 认证方法、角色、速率限制、代理、LLM 分类、输出格式 |
| [模板系统](https://github.com/praetorian-inc/hadrian/wiki/Template-System) | 如何编写自定义 YAML 安全测试模板 |
| [架构](https://github.com/praetorian-inc/hadrian/wiki/Architecture) | 内部设计、数据流和组件概述 |
| [FAQ](https://github.com/praetorian-inc/hadrian/wiki/FAQ) | 关于 Hadrian 的常见问题 |
### 教程
- **REST**:[crAPI 教程](https://github.com/praetorian-inc/hadrian/wiki/Tutorials#rest-crapi-tutorial) — 测试 OWASP crAPI( intentionally 易受攻击的 REST API)
- **GraphQL**:[DVGA 教程](https://github.com/praetorian-inc/hadrian/wiki/Tutorials#graphql-dvga-tutorial) — 测试 Damn Vulnerable GraphQL Application
- **gRPC**:[gRPC Server 教程](https://github.com/praetorian-inc/hadrian/wiki/Tutorials#grpc-vulnerable-server-tutorial) — 测试一个 intentionally 易受攻击的 gRPC 服务器
### Claude Code 集成
Hadrian 包含一项 [Claude Code](https://claude.ai/code) 技能,可以从您的 API 规范中**自动生成 `auth.yaml` 和 `roles.yaml`**——无需手动编写配置。
```
# 以插件形式启动带 Hadrian 的 Claude Code
claude --plugin-dir /path/to/hadrian
# 然后要求它生成您的配置:
# "从我的 openapi.yaml 生成 Hadrian auth.yaml 和 roles.yaml"
# "从 schema.graphql 创建 Hadrian 授权模板"
# "从 service.proto 构建 Hadrian 配置"
```
支持 OpenAPI/Swagger、GraphQL SDL 和 gRPC proto 文件。有关详细信息,请参阅 [技能文档](skills/hadrian-openapi-authz/SKILL.md)。
## 常见问题解答
### Hadrian 可以测试哪些类型的 API?
Hadrian 测试 **REST API**(通过 OpenAPI/Swagger 规范)、**GraphQL API**(通过内省或 SDL 架构)和 **gRPC API**(通过 proto 文件)。它支持所有三种协议上的 Bearer Token、Basic Auth、API Key 和基于 Cookie 的认证。
### Hadrian 与 OWASP ZAP 或 Burp Suite 有何不同?
ZAP 和 Burp 是通用 Web 安全扫描器,专注于注入、XSS 和配置问题。Hadrian **专为 API 授权测试而设计**——它理解角色、权限和跨用户访问模式。它测试用户 A 是否可以访问用户 B 的资源,这是通用扫描器在没有大量手动配置的情况下无法做到的。
### Hadrian 在测试期间会修改或删除数据吗?
变异测试在设置阶段会创建临时资源,并可能尝试修改或删除它们。请始终**先针对预发布环境进行测试**,并在执行前使用 `--dry-run` 预览将要测试的内容。
### 我可以编写自定义安全测试模板吗?
可以。Hadrian 使用 YAML 模板来定义端点选择器、角色选择器和检测逻辑。您可以为 OWASP Top 10 之外的应用程序特定授权规则创建自定义模板。请参阅 [模板系统指南](https://github.com/praetorian-inc/hadrian/wiki/Template-System)。
### Hadrian 是否与 CI/CD 流水线集成?
是的。使用 `--output json --output-file report.json` 生成机器可读的报告。当发现漏洞时,Hadrian 会返回非零退出代码,使其适用于 CI/CD 关卡。
## 开发
### 前置条件
- [Go 1.24+](https://go.dev/dl/)
- [golangci-lint](https://golangci-lint.run/welcome/install/)
### 构建和测试
```
git clone https://github.com/praetorian-inc/hadrian.git
cd hadrian
make build # Build the binary
make test # Run tests
make lint # Run linters
make check # Run all checks (fmt, vet, lint, test)
```
```
go test ./... # Unit tests
go test -tags=integration ./... # Integration tests
go test -race ./... # Race detection
```
## 贡献
1. Fork 本仓库
2. 创建一个功能分支 (`git checkout -b feature/my-feature`)
3. 提交您的更改 (`git commit -am 'Add my feature'`)
4. 推送到分支 (`git push origin feature/my-feature`)
5. 打开一个 Pull Request
请在请求审查之前确保所有 CI 检查均已通过。
## 许可证
本项目采用 Apache License 2.0 授权——有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 关于 Praetorian
[Praetorian](https://www.praetorian.com/) 是一家网络安全公司,通过进攻性安全服务和 [Praetorian Guard](https://www.praetorian.com/guard) 攻击面管理平台帮助组织保护其最关键的资产。标签:AI风险缓解, API安全测试, API漏洞扫描器, BFLA检测, BOLA检测, CSV导出, DevSecOps, EVTX分析, GraphQL安全, gRPC安全, OWASP API Top 10, Python工具, RBAC测试, REST安全, YAML驱动, 上游代理, 代码生成, 基于角色的访问控制, 多语言支持, 安全合规, 安全测试框架, 开源安全工具, 授权测试, 日志审计, 渗透测试工具, 灰盒测试, 破坏功能级授权, 破坏对象级授权, 网络代理, 自动化安全审计, 访问控制验证, 越权漏洞扫描, 身份验证测试, 逆向工程平台, 逻辑漏洞检测