Contexte
Le 1er avril 2026, une vulnérabilité de contournement d'authentification a été divulguée dans Directus, le headless CMS open source largement adopté pour les projets web modernes. La faille affecte le gestionnaire d'upload résumable TUS (Tus Resumable Upload Protocol), permettant à un attaquant disposant d'un simple compte utilisateur d'écraser des fichiers arbitraires sur le serveur.
Versions affectées
- Directus toutes versions antérieures à 11.16.1
Version corrigée : 11.16.1
Mécanisme d'exploitation
TUS est un protocole d'upload résumable que Directus utilise pour gérer les envois de fichiers volumineux. Le gestionnaire TUS de Directus ne valide pas correctement les autorisations lors de la reprise d'un upload :
- Un attaquant authentifié (même avec un rôle à très faibles privilèges) initie un upload TUS
- Il manipule l'identifiant de reprise (
Upload-ID) pour cibler un fichier existant sur le serveur - Le serveur écrase le fichier cible sans vérifier si l'utilisateur a le droit de modifier ce fichier
Les fichiers potentiellement écrasables incluent des fichiers de configuration, des templates, ou tout fichier accessible par le processus Node.js de Directus.
Impact
Selon la configuration du serveur et les droits du processus Directus, l'exploitation peut permettre :
- Écrasement de fichiers de configuration de Directus (
.env,config.js) - Remplacement de fichiers statiques servis par l'application
- Élévation de privilèges si des fichiers de configuration d'autorisation peuvent être modifiés
- Déni de service en corrompant des fichiers critiques à l'application
L'impact réel dépend fortement de la structure de déploiement et des permissions système du processus Directus.
Détection
# Vérifier la version Directus installée
npx directus --version
# ou dans package.json
grep '"directus"' package.json
# Rechercher des uploads TUS suspects dans les logs
# (uploads vers des chemins inattendus ou par des utilisateurs à faibles droits)
grep -i "tus\|upload" /var/log/directus/app.log | grep -v "200\|201"
Remédiation
-
Mettez à jour Directus vers la version 11.16.1 ou supérieure :
npm install directus@latest # ou version spécifique npm install directus@11.16.1 -
Vérifiez l'intégrité des fichiers critiques — comparez les checksums des fichiers de configuration avec des versions connues valides
-
Restreignez les permissions du processus Directus au niveau système — le processus ne devrait avoir accès en écriture qu'aux répertoires strictly nécessaires (
uploads/,extensions/) :# Exemple : restreindre l'écriture hors du dossier uploads chmod 755 /app chmod 755 /app/config chown -R directus:directus /app/uploads -
Auditez les rôles et permissions des utilisateurs Directus — supprimez les comptes inutilisés ou à privilèges excessifs
Recommandations
- Principe du moindre privilège — le processus applicatif ne devrait jamais avoir accès en écriture à ses propres fichiers de configuration en production
- Conteneurisez Directus — un conteneur Docker avec un système de fichiers en lecture seule (sauf le volume
uploads) limite considérablement la surface d'attaque - Surveillez les modifications de fichiers via un outil d'intégrité (AIDE, Tripwire, ou simplement
inotifywait) sur les fichiers de configuration critiques - Mettez en place une politique de mise à jour pour les CMS headless — les instances Directus en production doivent être maintenues à jour activement