Perufitlife/directus-security
GitHub: Perufitlife/directus-security
Directus 专用安全审计工具,通过匿名主动探测验证公开角色数据泄露、用户枚举和未授权信息暴露等真实风险。
Stars: 0 | Forks: 0
# directus-security
[](https://www.npmjs.com/package/directus-security) [](https://www.npmjs.com/package/directus-security)   
```
$ npx directus-security --url https://directus.example.com
1 critical, 2 high, 1 medium — 4 CONFIRMED via anonymous probe
CRITICAL /items/posts public-role read enabled — rows reachable anonymously
HIGH /items/posts?search=… search-param field enumeration (CVE-2025-30352 class)
HIGH /items/directus_users user list exposed (name + email)
MEDIUM /server/specs/oas Directus version leaked unauthenticated (CVE-2025-53887 class)
```
## 为什么会有这个项目
Directus 为 Tripadvisor、Adobe 和 Mercedes 提供无头后端支持,而且
默认的访问模型很容易导致一种错误:保持 **Public** policy 的 **read** 权限处于
开启状态。结果就是一个任何人都能读取的 API。2025 年出现了
一系列未授权 CVE,它们与匿名探测 *完全* 对应:
- [CVE-2025-30352](https://github.com/directus/directus/security/advisories/GHSA-m5q3-8wgf-x8xf) — `search` 查询参数会枚举未授权的字段,通过每次一个字符的方式泄露邮箱和 **密码哈希**。
- [CVE-2025-53887](https://nvd.nist.gov/vuln/detail/CVE-2025-30352) — Directus 版本可以通过 `/server/specs/oas` 在未授权的情况下暴露,让攻击者能将你的构建版本与已知的漏洞进行匹配。
- CVE-2025-64749 — 通过错误信息差异导致的 collection 存在性泄露。
- CVE-2025-53889 — 未授权的 Flow 触发。
`directus-security` 会检查这些问题,并通过发送与攻击者完全相同的匿名请求来 **确认真实的漏洞** —— 让你能够基于事实而非猜测来进行排查。
## 检查内容
| 检查项 | 严重程度 | 如何确认 |
|---|---|---|
| 某个 collection 上的 Public role read | 严重 | 匿名 `GET /items/{collection}` 返回了数据行 |
| `search` 参数字段枚举 | 高 | 匿名 `GET /items/{collection}?search=…` 有响应 (CVE-2025-30352 类) |
| `/items/directus_users` 用户枚举 | 高 | 匿名读取返回了用户列表 (姓名 + 邮箱) |
| 未授权的版本/schema 泄露 | 中 | `/server/info` 或 `/server/specs/oas` 在未授权状态下返回了版本信息 (CVE-2025-53887 类) |
| 生产环境开启 GraphQL 自省 | 中 | 在 `/graphql` 或 `/graphql/system` 上响应了 `__schema` 查询 |
## 使用方法
```
# 探测活动实例(猜测常见 collection 名称)
npx directus-security --url https://directus.example.com
# 探测特定 collection
npx directus-security --url https://directus.example.com --collections posts,authors
# 从 Directus schema 快照中获知您的确切 collection 名称,然后进行探测
npx directus-security --url https://directus.example.com --snapshot ./snapshot.json
# 编写可共享的 HTML 报告
npx directus-security --url https://directus.example.com --html report.html
# 仅静态分析(不发送请求)
npx directus-security --url https://directus.example.com --no-probe
```
输出为 stdout 上的 JSON(可通过管道传入 CI)以及 stderr 上的一行摘要。
仅在用法错误时才会以非零状态退出 —— 请根据 JSON `summary` 来管控你的 pipeline。
## 安装(可选)
```
npm i -g directus-security
directus-security --url https://directus.example.com
```
零 dependencies。你的数据和凭证永远不会离开你的本机 —— 每个
请求都直接从该工具发送到你的 Directus 实例。
## 姊妹工具
针对其余后端技术栈采用同样的主动探测理念,全部基于 MIT 协议:
[strapi-security](https://github.com/Perufitlife/strapi-security) ·
[supabase-security](https://github.com/Perufitlife/supabase-security-skill) ·
[pocketbase-security](https://github.com/Perufitlife/pocketbase-security-skill) ·
[firebase-security](https://github.com/Perufitlife/firebase-security-skill) ·
[appwrite-security](https://github.com/Perufitlife/appwrite-security-skill) ·
[nhost-security](https://github.com/Perufitlife/nhost-security-skill)
## 许可证
MIT © [Renzo Madueno](https://github.com/Perufitlife)
标签:API安全, Directus, GNU通用公共许可证, JSON输出, MITM代理, Node.js, 实时处理, 密码管理, 文档结构分析, 暗色界面, 自定义脚本