CVE-2025-64712 : comment la faille d’Unstructured.io menace les géants du cloud et comment s’en protéger
Séraphine Clairlune
Une faille critique qui pourrait compromettre les géants du cloud
En 2026, la communauté de la cybersécurité a été secouée par la découverte de CVE-2025-64712, une vulnérabilité classée CVSS 9.8 dans la bibliothèque unstructured d’Unstructured.io. Cette faille de traversée de répertoire permet à un attaquant d’écrire des fichiers arbitraires et, dans les meilleures conditions, d’exécuter du code à distance (RCE) sur les systèmes qui traitent des documents non fiables. Le problème est amplifié par le fait que la bibliothèque est largement intégrée dans les pipelines d’ingestion de données non structurées utilisés par de nombreuses organisations, y compris les plus grands fournisseurs de services cloud comme Amazon Web Services, Google Cloud Platform et Microsoft Azure.
Pour comprendre comment d’autres vulnérabilités critiques peuvent impacter les sites web, consultez notre guide sur la protection de WordPress contre la faille du plugin WPvivid Backup Migration. protéger votre site WordPress contre la vulnérabilité critique du plugin WPvivid Backup Migration
« La compromission d’une bibliothèque d’ingestion de données non structurées constitue un vecteur d’attaque redoutable, car elle touche la chaîne d’approvisionnement de l’IA en profondeur. » - Rapport Cyera, 2025
Dans cet article, nous décortiquons les mécanismes de CVE-2025-64712, évaluons son impact sur les infrastructures cloud, et vous proposons un plan d’action détaillé pour réduire le risque.
Comprendre la vulnérabilité CVE-2025-64712
Origine et vecteur d’attaque
CVE-2025-64712 résulte d’une mauvaise gestion du chemin de fichier lors du traitement des pièces jointes d’un courriel Microsoft Outlook (.msg). La bibliothèque crée un répertoire temporaire, puis concatène le nom d’origine de la pièce jointe sans appliquer de normalisation. Si l’attaquant contrôle ce nom, il peut injecter des séquences de traversée comme ../../ pour écrire en dehors du répertoire prévu.
# Exemple de code vulnérable (simplifié)
import os, tempfile
def save_attachment(attachment_name, data):
tmp_dir = tempfile.mkdtemp()
# Construction du chemin sans validation
file_path = os.path.join(tmp_dir, attachment_name) # <-- vulnérable
with open(file_path, 'wb') as f:
f.write(data)
Lorsque le fichier est créé, un chemin tel que ../../root/.ssh/authorized_keys écrasera la clé SSH autorisée du système hôte, ouvrant la porte à un accès persistant.
Impact sur les systèmes d’entreprise
- Escalade de privilèges : l’écriture de fichiers critiques (cron, scripts de démarrage) peut conduire à une exécution de code avec les droits du processus d’ingestion.
- Propagation : la bibliothèque est souvent utilisée comme dépendance dans des wrappers Python, Node.js ou Java, ce qui rend le périmètre d’exposition très large.
- Effet de cascade : un seul conteneur compromis peut affecter l’ensemble du cluster de traitement de données, notamment les bases de vecteurs qui alimentent les assistants IA.
« Le risque réside non seulement dans la capacité à écrire des fichiers, mais aussi dans la facilité avec laquelle un acteur malveillant peut transformer cette écriture en exécution de code. » - Analyse ANSSI, 2025
Pourquoi les géants du cloud comme Amazon et Google sont concernés
Intégration d’Unstructured.io dans les pipelines RAG
Découvrez les meilleures ressources pour rester à jour sur la sécurité informatique en 2026 : notre sélection des Top 15 blogs de sécurité à suivre. Top 15 blogs sécurité informatique à suivre en 2026
Les fournisseurs de cloud proposent des services de Retrieval-Augmented Generation (RAG) où les données brutes sont d’abord ingérées, découpées, puis indexées dans des bases de vecteurs. Unstructured.io sert de pont entre les sources (S3, Google Drive, OneDrive) et les modèles de langage. Selon une enquête de Cyera, 85 % des pipelines d’IA en production utilisent une forme de traitement non structuré, dont une grande partie repose sur cette bibliothèque.
Scénarios d’exploitation réalistes
- Compromission d’un bucket S3 : un fichier .msg malveillant est placé dans un bucket partagé. Le job Lambda qui invoque unstructured télécharge le fichier, déclenche la vulnérabilité et écrit un script de démarrage dans
/var/task/. - Attaque sur un environnement Cloud Run : le container exécute la bibliothèque en tant que root. L’exploitation de la traversée de répertoire crée un fichier
authorized_keysdans le répertoire~root/.ssh/, donnant un accès SSH persistant au serveur. - Injection dans un workflow Airflow : le DAG qui orchestre le pipeline d’ingestion lance la fonction vulnérable. L’écriture d’un fichier cron modifie la planification des tâches, permettant l’exécution périodique de code malveillant.
Ces scénarios illustrent bien comment CVE-2025-64712 peut devenir un point d’entrée privilégié pour des acteurs avancés ciblant les infrastructures cloud.
Mesures d’atténuation et bonnes pratiques
Isolation des traitements de fichiers
- Conteneurisation stricte : exécuter la bibliothèque dans un conteneur dédié avec un user non-root. La norme ISO 27001 recommande la séparation des privilèges pour limiter la portée d’une compromission.
- Volumes en lecture-seule : monter les répertoires de sortie en mode
rodès que possible, afin d’empêcher l’écriture non autorisée. - Sandboxing : utiliser des solutions comme gVisor ou Firecracker pour créer des micro-VMs qui isolent le processus d’ingestion du reste du système.
Apprenez comment les malwares ciblent les systèmes macOS, notamment les cryptomonnaies, et quelles mesures prendre pour protéger vos actifs. Malware macOS crypto : comment les hackers nord‑coreens ciblent le secteur des cryptomonnaies
Contrôles de validation des chemins
- Normalisation du chemin : appliquer
os.path.normpathet vérifier que le résultat reste dans le répertoire autorisé. - Liste blanche des extensions : n’accepter que des extensions connues (
.pdf,.txt,.docx). - Filtrage des caractères : rejeter les séquences
../ou..\\dès la réception du nom de fichier.
def safe_path(tmp_dir, filename):
# Normaliser et valider
normalized = os.path.normpath(filename)
if '..' in normalized:
raise ValueError('Nom de fichier invalide')
return os.path.join(tmp_dir, os.path.basename(normalized))
Tableau comparatif des techniques d’atténuation
| Technique | Niveau de protection | Impact sur la performance | Complexité d’implémentation |
|---|---|---|---|
| Exécution en conteneur non-root | Élevé | Faible | Moyenne |
| Sandbox gVisor | Très élevé | Modérée | Élevée |
| Validation du chemin (whitelist) | Élevé | Négligeable | Faible |
| Utilisation de volumes en RO | Moyen | Faible | Faible |
Évaluation du risque et priorisation des correctifs
Analyse de la surface d’exposition
- Inventaire des dépendances : recenser toutes les applications qui importent
unstructured. Un audit récent chez un grand groupe français a révélé que 42 % des micro-services IA utilisaient la bibliothèque, souvent via des wrappers indirects. - Cartographie des flux de données : identifier les points d’entrée (emails, uploads, API) où des fichiers non fiables peuvent être traités.
- Évaluation du niveau de privilège : vérifier si les processus s’exécutent en tant que root ou avec des capacités élevées.
Calendrier de mise à jour recommandé
- J-0 (immédiat) : appliquer le correctif officiel publié par Unstructured.io (version 2.3.1). Si le correctif n’est pas disponible, désactiver temporairement le traitement des fichiers .msg.
- J-7 : déployer les conteneurs non-root et implémenter la validation du chemin.
- J-30 : mettre en place le sandboxing pour les pipelines critiques.
- J-90 : réaliser un test d’intrusion ciblé sur la chaîne d’ingestion pour valider l’efficacité des mesures.
Mise en œuvre - étapes actionnables pour les équipes de sécurité
- Audit des dépendances
- Utiliser des outils comme Snyk ou GitHub Dependabot pour identifier les projets qui importent
unstructured. - Documenter chaque instance (version, environnement, privilèges).
- Utiliser des outils comme Snyk ou GitHub Dependabot pour identifier les projets qui importent
- Déploiement du correctif
- Mettre à jour la bibliothèque vers la version corrigée.
- Vérifier la compatibilité avec les pipelines existants via des tests unitaires.
- Renforcement de la chaîne d’ingestion
- Implémenter la fonction
safe_pathprésentée plus haut. - Configurer les conteneurs Docker avec
USER nonrootetRUN chmod 700 /app.
- Implémenter la fonction
- Isolation des workloads
- Créer des profils de sécurité gVisor pour les tâches d’ingestion.
- Activer les quotas de ressources afin de limiter l’impact d’un conteneur compromis.
- Surveillance et détection
- Déployer des alertes sur les accès inhabituels aux répertoires
/tmpet/var. - Intégrer les logs de création de fichiers dans le SIEM (ex : Elastic, Splunk).
- Déployer des alertes sur les accès inhabituels aux répertoires
- Formation et sensibilisation
- Organiser des ateliers sur les bonnes pratiques de validation des entrées pour les développeurs.
- Diffuser le guide de mitigation interne basé sur les recommandations de l’ANSSI.
« La prévention passe avant tout par la maîtrise de la chaîne d’approvisionnement logicielle. » - Publication officielle de l’ANSSI, 2025
Conclusion - Prochaine action cruciale
CVE-2025-64712 représente une menace sérieuse pour les organisations qui s’appuient sur la bibliothèque unstructured pour leurs pipelines d’IA. En appliquant le correctif, en isolant les traitements de fichiers et en renforçant la validation des chemins, les équipes de sécurité peuvent réduire significativement le risque d’exécution de code à distance. Nous vous invitons à lancer dès aujourd’hui l’audit des dépendances et à planifier le déploiement du correctif : chaque jour de retard augmente la surface d’exposition.
Ne laissez pas une faille de traversée de répertoire compromettre votre infrastructure cloud ; agissez maintenant.