
Auditor de seguridad de sondas activas sin claves para Directus CMS. Comprueba la exposición de datos de roles públicos, enumeración de usuarios, filtraciones de versiones/esquemas no autenticadas, introspección de GraphQL y enumeración de campos por parámetros de búsqueda mediante sondas anónimas en vivo. Sin dependencias.
Audita cualquier instancia de Directus para detectar las configuraciones incorrectas que realmente filtran datos: exposición de lectura del rol público, enumeración de usuarios, fugas de versión/esquema sin autenticación, introspección de GraphQL y el oráculo de enumeración de campos mediante el parámetro
search. Y demuestra cada una en vivo con una sonda anónima. Otras listas de verificación te dicen lo que podría estar mal; esta obtiene los bytes y te muestra lo que está.
⚡ Ejecútalo en una línea, sin token de administrador, sin instalación:
npx directus-security --url https://your-directus.example.com
🤝 ¿Quieres que lo hagan por ti? Auditoría de alcance fijo — $99 / 24h: verifico cada hallazgo en vivo y envío un informe escrito con las correcciones exactas de políticas.
$ 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 impulsa backends sin cabeza en Tripadvisor, Adobe y Mercedes, y el modelo de acceso predeterminado comete un error muy fácil: dejar la lectura habilitada para la política Público. El resultado es una API que cualquiera puede leer. 2025 trajo un grupo de CVEs sin autenticación que se corresponden exactamente con las sondas anónimas:
search enumera campos no permitidos, filtrando correos electrónicos y hashes de contraseñas un carácter a la vez./server/specs/oas, permitiendo a los atacantes emparejar tu compilación con exploits conocidos.directus-security verifica estos y confirma los reales emitiendo la
solicitud anónima exacta que haría un atacante, para que priorices hechos, no probabilidades.
# Sondear una instancia en vivo (adivina nombres de colecciones comunes)
npx directus-security --url https://directus.example.com
# Sondear colecciones específicas
npx directus-security --url https://directus.example.com --collections posts,authors
# Conocer los nombres exactos de tus colecciones desde una instantánea del esquema de Directus, luego sondear
npx directus-security --url https://directus.example.com --snapshot ./snapshot.json
# Escribir un informe HTML compartible
npx directus-security --url https://directus.example.com --html report.html
# Solo estático (sin enviar solicitudes)
npx directus-security --url https://directus.example.com --no-probe
La salida es JSON en stdout (puedes canalizarlo a CI) y un resumen de una línea en stderr.
El código de salida es distinto de cero solo en errores de uso — condiciona tu pipeline en el summary del JSON.
npm i -g directus-security
directus-security --url https://directus.example.com
Cero dependencias. Tus datos y credenciales nunca abandonan tu máquina — cada solicitud va directamente desde la herramienta a tu instancia de Directus.
La misma filosofía de sonda activa para el resto del stack backend, todo MIT:
strapi-security · supabase-security · pocketbase-security · firebase-security · appwrite-security · nhost-security
MIT © Renzo Madueno
📚 Parte de Awesome Backend Security Auditors — la colección completa de auditores de sonda activa sin clave.
| Verificación | Gravedad | Cómo se confirma |
|---|
| Lectura de rol público en una colección | crítica | GET /items/{collection} anónimo devuelve filas |
Enumeración de campos mediante parámetro search | alta | GET /items/{collection}?search=… anónimo responde (clase CVE-2025-30352) |
Enumeración de usuarios en /items/directus_users | alta | la lectura anónima devuelve la lista de usuarios (nombre + correo) |
| Fuga de versión/esquema sin autenticación | media | /server/info o /server/specs/oas devuelve la versión sin autenticación (clase CVE-2025-53887) |
| Introspección de GraphQL en producción | media | consulta __schema respondida en /graphql o /graphql/system |