审计任何 Directus 实例中真正会泄露数据的错误配置——公共角色读取暴露、用户枚举、未认证的版本/模式泄露、GraphQL 内省,以及
search参数字段枚举预言机——并通过匿名探测逐项实况验证。其他清单只会告诉你哪里可能有问题;本工具会拉取实际数据,展示真实存在的问题。
⚡ 一行命令即可运行,无需管理员令牌,无需安装:
npx directus-security --url https://your-directus.example.com
🤝 想让我们代劳? 固定范围审计 — $99 / 24 小时:我会实况验证每一项发现,并发送包含精确策略修复方案的书面报告。
$ 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(公共) 策略保留 read(读取) 权限。结果就是任何人都能读取这个 API。2025 年出现了一批未认证 CVE,与匿名探测精准对应:
search 查询参数可枚举未获授权的字段,逐字符泄露电子邮件和密码哈希。/server/specs/oas 暴露,攻击者可据此将你的构建版本与已知漏洞利用相匹配。directus-security 会逐一检查这些问题,并发出与攻击者完全相同的匿名请求来确认真实存在的问题——让你基于事实(而非猜测)进行研判。
# Probe a live instance (guesses common collection names)
npx directus-security --url https://directus.example.com
# Probe specific collections
npx directus-security --url https://directus.example.com --collections posts,authors
# Learn your exact collection names from a Directus schema snapshot, then probe
npx directus-security --url https://directus.example.com --snapshot ./snapshot.json
# Write a shareable HTML report
npx directus-security --url https://directus.example.com --html report.html
# Static only (no requests sent)
npx directus-security --url https://directus.example.com --no-probe
输出为 stdout 上的 JSON(可管道接入 CI),stderr 上为一行摘要。仅在用法错误时退出码非零——请以 JSON 中的 summary 作为流水线门禁。
npm i -g directus-security
directus-security --url https://directus.example.com
零依赖。你的数据和凭据永远不会离开你的机器——每个请求都会从该工具直接发往你的 Directus 实例。
面向后端技术栈其余部分,秉承同样的主动探测理念,全部为 MIT 许可:
strapi-security · supabase-security · pocketbase-security · firebase-security · appwrite-security · nhost-security
MIT © Renzo Madueno
📚 属于 Awesome Backend Security Auditors 的一部分——无密钥主动探测审计器大全。
| 检查项 | 严重级别 | 确认方式 |
|---|
| 集合上的公共角色读取 | 严重 | 匿名 GET /items/{collection} 返回数据行 |
search 参数字段枚举 | 高 | 匿名 GET /items/{collection}?search=… 有响应(CVE-2025-30352 类) |
/items/directus_users 用户枚举 | 高 | 匿名读取返回用户列表(姓名 + 电子邮件) |
| 未认证的版本/模式泄露 | 中 | /server/info 或 /server/specs/oas 在未认证状态下返回版本(CVE-2025-53887 类) |
| 生产环境 GraphQL 内省 | 中 | __schema 查询在 /graphql 或 /graphql/system 上得到响应 |