Perufitlife/awesome-backend-security
GitHub: Perufitlife/awesome-backend-security
一套精选的后端安全审计工具列表,通过无需密钥的主动探测方式检测 Supabase、Firebase、Hasura、Strapi 等后端服务的匿名角色数据泄露与配置错误问题。
Stars: 0 | Forks: 0
# Awesome Backend Security Auditors [](https://awesome.re)
在这种技术栈中,最常见且最具普遍性的生产环境漏洞往往很枯燥:即后端对**公共 / 匿名角色**保持可读。Supabase 默认提供禁用了 RLS 的数据表,Firebase 默认携带 `allow read: if true`,Strapi/Directus/Payload 让 Public 角色拥有 `find` 权限,Hasura 设置了 `unauthorized-role: public`,而 Ollama 在没有任何 auth 的情况下绑定了 `0.0.0.0`。下面列出的工具能一次次通过命令发现这些问题——并予以证实。
## 目录
- [为什么使用 active-probe](#why-active-probe)
- [BaaS 与数据库](#baas--databases)
- [Headless CMS](#headless-cms)
- [GraphQL](#graphql)
- [工作流与自动化](#workflow--automation)
- [本地 LLM / AI](#local-llm--ai)
- [密钥与信息暴露](#secrets--exposure)
- [MCP 服务器](#mcp-servers)
- [参考阅读](#reference-reading)
## 指南
- [如何判断你的后端是否在泄露数据(以及如何修复)](guides/find-backend-data-leaks.md) — 一份逐平台列出的检查清单,并提供单行命令来确认每种泄露。
## 为什么使用 active-probe
读取你规则文件的 linter 只能告诉你什么*可能*会被暴露。而**主动探测**会发送攻击者将使用的完全相同的未验证请求,并向你展示实际返回的字节内容。此列表中的每个工具都是:
- **无需密钥** — 指向一个 URL 即可,进行公共暴露检查时不需要管理员 token。
- **本地优先** — 你的数据和凭证永远不会离开你的机器。
- **零依赖、MIT 许可证** — 单个文件即可审计,永久免费。
## BaaS 与数据库
- [supabase-security](https://github.com/Perufitlife/supabase-security-skill) — 禁用了 RLS 的数据表、anon 授权、公共 bucket 和 `SECURITY DEFINER` 函数;主动的 anon-key 探针可确认每一项泄露。[npm](https://www.npmjs.com/package/supabase-security)
- [firebase-security](https://github.com/Perufitlife/firebase-security-skill) — 臭名昭著的 `match /{document=**} { allow read, write: if true; }`、过期的测试模式规则以及 `firestore.rules` 中缺乏所有者验证的 auth。[npm](https://www.npmjs.com/package/firebase-security)
- [pocketbase-security](https://github.com/Perufitlife/pocketbase-security-skill) — 空的 API 规则(完全公开)、`@request.auth.id != ""` 等权限过大的规则、危险的 `true` 字面量。[npm](https://www.npmjs.com/package/pocketbase-security)
- [appwrite-security](https://github.com/Perufitlife/appwrite-security-skill) — `any` 角色授权、文档安全配置错误以及权限过大的集合权限。[npm](https://www.npmjs.com/package/appwrite-security)
- [nhost-security](https://github.com/Perufitlife/nhost-security-skill) — 具有开放 SELECT 的 Hasura/Nhost 匿名角色、缺少行过滤器、公开的 introspection。[npm](https://www.npmjs.com/package/nhost-security)
- [convex-security](https://github.com/Perufitlife/convex-security) — 在 Convex 部署的 HTTP API 上无需 auth 即可访问的公共 query/mutation、CORS 反射和元数据泄露。[npm](https://www.npmjs.com/package/convex-security)
## Headless CMS
- [strapi-security](https://github.com/Perufitlife/strapi-security) — 公共角色的读取暴露、CORS 反射、`/api/users` 枚举、GraphQL introspection 以及关系填充管理员预言机(CVE-2026-27886 类)。[npm](https://www.npmjs.com/package/strapi-security)
- [directus-security](https://github.com/Perufitlife/directus-security) — 公共角色数据暴露、搜索参数字段枚举(CVE-2025-30352)、未授权版本/schema 泄露(CVE-2025-53887)以及 GraphQL introspection。[npm](https://www.npmjs.com/package/directus-security)
- [payload-security](https://github.com/Perufitlife/payload-security) — 无需 auth 即可读取的集合、字段级别的泄露(`apiKey`/`email`/`hash`/`salt`)、用户枚举以及开放的首位用户注册。[npm](https://www.npmjs.com/package/payload-security)
## GraphQL
- [hasura-security](https://github.com/Perufitlife/hasura-security) — 无需 admin secret 即可访问的开放 introspection、导致数据表/行泄露的匿名 `public` unauthorized 角色、未经身份验证的控制台以及缺失的 admin secret。[npm](https://www.npmjs.com/package/hasura-security)
## 工作流与自动化
- [n8n-security](https://github.com/Perufitlife/n8n-security) — 未经身份验证的 `/rest/settings` 配置+版本泄露、开放的拥有者设置接管、版本与已知严重 CVE 对比(CVE-2026-21858 "Ni8mare",CVSS 10.0)以及无 auth 的编辑器/REST API。[npm](https://www.npmjs.com/package/n8n-security)
## 本地 LLM / AI
- [ollama-security](https://github.com/Perufitlife/ollama-security) — 公开绑定且未经身份验证的 Ollama API(已发现超过 17.5 万个暴露实例),通过匿名探测 `/api/tags`、`/api/ps`、`/api/version` 和 CORS 反射进行验证——无需下载模型或运行工作负载。[npm](https://www.npmjs.com/package/ollama-security)
- [dotclaude-security](https://github.com/Perufitlife/dotclaude-security) — 扫描代码仓库的 `.claude/` 配置(hooks、MCP 服务器、env、权限),以检测在你打开不受信任的仓库时会触发的 RCE(CVE-2025-59536)和 API-key 窃取(CVE-2026-21852)隐患。[npm](https://www.npmjs.com/package/dotclaude-security)
## 密钥与信息暴露
- [dotenv-exposure-check](https://github.com/Perufitlife/dotenv-exposure-check) — 探测在线 URL,查找意外暴露的密钥文件(`.env`、`.git/`、`.js.map` source map、`.DS_Store`、备份),并通过获取和指纹识别字节来确认每一项。[npm](https://www.npmjs.com/package/dotenv-exposure-check)
## MCP 服务器
- [web-exposure-mcp](https://github.com/Perufitlife/web-exposure-mcp) — 一个 MCP 服务器,可将 AI agent 指向已部署的 URL,并通过获取字节和指纹识别内容(而不是信任状态码)来确认实际正在提供哪些密钥文件。[npm](https://www.npmjs.com/package/web-exposure-mcp)
## 参考阅读
- [OWASP API 安全 Top 10](https://owasp.org/API-Security/editions/2023/en/0x11-t10/)
- [Supabase:使用 RLS 保护你的数据](https://supabase.com/docs/guides/database/postgres/row-level-security)
- [Firebase 安全规则](https://firebase.google.com/docs/rules)
- [Strapi:用户与权限](https://docs.strapi.io/dev-docs/plugins/users-permissions)
- [Hasura:`HASURA_GRAPHQL_UNAUTHORIZED_ROLE` 隐患](https://github.com/hasura/graphql-engine/issues/5501)
- [Ollama 默认不进行身份验证 (CNVD-2025-04094)](https://github.com/ollama/ollama/issues/849)
## 贡献
发现了合适的工具——无需密钥、本地优先、通过主动探测进行确认?欢迎提交 PR。请将条目保持在一行内,在各部分内按字母顺序排列,并在发布处提供 `[npm]` 链接。
## 许可证
[](https://creativecommons.org/publicdomain/zero/1.0/)
在法律允许的范围内,贡献者已放弃与本作品相关的所有版权及相关权利。
标签:BaaS, CISA项目, MITM代理, StruQ, 后端安全, 开源清单, 文档结构分析, 暗色界面, 未授权访问