Perufitlife/awesome-backend-security

GitHub: Perufitlife/awesome-backend-security

一套精选的后端安全审计工具列表,通过无需密钥的主动探测方式检测 Supabase、Firebase、Hasura、Strapi 等后端服务的匿名角色数据泄露与配置错误问题。

Stars: 0 | Forks: 0

# Awesome Backend Security Auditors [![Awesome](https://awesome.re/badge.svg)](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]` 链接。 ## 许可证 [![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/) 在法律允许的范围内,贡献者已放弃与本作品相关的所有版权及相关权利。
标签:BaaS, CISA项目, MITM代理, StruQ, 后端安全, 开源清单, 文档结构分析, 暗色界面, 未授权访问