
Auditor di sicurezza a sonda attiva senza chiavi per Directus CMS. Dimostra l'esposizione dei dati dei ruoli pubblici, l'enumerazione degli utenti, le fughe non autenticate di versione/schema, l'introspezione GraphQL e l'enumerazione dei campi tramite parametri di ricerca attraverso sonde anonime in tempo reale. Zero dipendenze.
Verifica qualsiasi istanza Directus per le misconfigurazioni che causano effettivamente perdite di dati — esposizione in lettura del ruolo pubblico, enumerazione degli utenti, leak non autenticati di versione/schema, introspezione GraphQL e l'oracolo di enumerazione dei campi tramite il parametro
search— e dimostra ciascuna di esse dal vivo con una sonda anonima. Le altre checklist ti dicono cosa potrebbe essere sbagliato; questa recupera i byte e ti mostra cosa è.
⚡ Eseguilo in una riga, senza token admin, senza installazione:
npx directus-security --url https://your-directus.example.com
🤝 Vuoi che lo faccia io per te? Audit a perimetro fisso — $99 / 24h: verifico ogni rilevamento dal vivo e invio un report scritto con le esatte correzioni di policy.
$ 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 alimenta backend headless presso Tripadvisor, Adobe e Mercedes, e il modello di accesso predefinito rende facilissimo un errore: lasciare la lettura abilitata per la policy Public. Il risultato è un'API che chiunque può leggere. Il 2025 ha portato un gruppo di CVE non autenticate che corrispondono esattamente a sonde anonime:
search enumera i campi non consentiti, facendo trapelare email e hash delle password un carattere alla volta./server/specs/oas, consentendo agli aggressori di associare la tua build a exploit noti.directus-security verifica queste vulnerabilità e conferma quelle reali
inviando l'esatta richiesta anonima che farebbe un aggressore — così gestisci
fatti, non forse.
# 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
L'output è JSON su stdout (convoglialo nella CI) e un riepilogo di una riga su stderr.
L'exit code è diverso da zero solo per errori di utilizzo — usa il JSON summary come gate per la tua pipeline.
npm i -g directus-security
directus-security --url https://directus.example.com
Zero dipendenze. I tuoi dati e le tue credenziali non lasciano mai la tua macchina — ogni richiesta va direttamente dallo strumento alla tua istanza Directus.
La stessa filosofia della sonda attiva per il resto dello stack backend, tutto con licenza MIT:
strapi-security · supabase-security · pocketbase-security · firebase-security · appwrite-security · nhost-security
MIT © Renzo Madueno
📚 Parte di Awesome Backend Security Auditors — la raccolta completa di auditor a sonda attiva senza chiavi.
| Verifica | Gravità | Come viene confermata |
|---|
| Lettura con ruolo pubblico su una collection | critica | la GET /items/{collection} anonima restituisce righe |
Enumerazione campi tramite parametro search | alta | la GET /items/{collection}?search=… anonima risponde (classe CVE-2025-30352) |
Enumerazione utenti /items/directus_users | alta | la lettura anonima restituisce l'elenco utenti (nome + email) |
| Leak non autenticato di versione/schema | media | /server/info o /server/specs/oas restituisce la versione senza autenticazione (classe CVE-2025-53887) |
| Introspezione GraphQL in produzione | media | la query __schema ottiene risposta su /graphql o /graphql/system |