praetorian-inc/hadrian

GitHub: praetorian-inc/hadrian

Hadrian 是一个专注于 API 授权安全测试的开源框架,通过基于角色的自动化交叉测试检测 REST、GraphQL 和 gRPC 中的 OWASP API Top 10 漏洞。

Stars: 10 | Forks: 0

Hadrian - Open source API security testing framework for REST, GraphQL, and gRPC. Test for OWASP API Top 10 authorization vulnerabilities using YAML-driven templates. # Hadrian:开源 API 安全测试框架 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3b282ca1e5223509.svg)](https://github.com/praetorian-inc/hadrian/actions/workflows/ci.yml) [![Go Report Card](https://goreportcard.com/badge/github.com/praetorian-inc/hadrian)](https://goreportcard.com/report/github.com/praetorian-inc/hadrian) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](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驱动, 上游代理, 代码生成, 基于角色的访问控制, 多语言支持, 安全合规, 安全测试框架, 开源安全工具, 授权测试, 日志审计, 渗透测试工具, 灰盒测试, 破坏功能级授权, 破坏对象级授权, 网络代理, 自动化安全审计, 访问控制验证, 越权漏洞扫描, 身份验证测试, 逆向工程平台, 逻辑漏洞检测