
Preuve de concept démontrant une use-after-free dans cldflt.sys (CVE-2025-62221) qui permet une élévation de privilèges locale vers SYSTEM via le grooming du pool noyau et le vol de jetons.
DEMO Preuve de Concept : Incohérence Mémoire Temporelle dans cldflt.sys (CVE-2025-62221) CVE-2025-62221 :
Ce dépôt fournit une analyse technique complète et une démonstration de Preuve de Concept (PoC) concernant un vecteur d'élévation de privilèges verticale. La vulnérabilité est identifiée comme une primitive Use-After-Free (UAF) située dans le Pilote de Mini Filtre Cloud Files Windows (cldflt.sys). Cette documentation détaille les mécanismes par lesquels une entité non privilégiée en mode utilisateur peut passer à un contexte de sécurité Ring 0 (NT AUTHORITY\SYSTEM).
La vulnérabilité CVE-2025-62221 provient d'un échec critique dans la gestion temporelle des cycles de vie des objets mémoire au sein du sous-système exécutif en mode noyau de Windows. Plus précisément, le pilote cldflt.sys ne parvient pas à implémenter un comptage de références atomique lors du traitement des requêtes d'E/S asynchrones pour les points de réanalyse basés sur le cloud. En orchestrant une condition de concurrence non déterministe via des routines de répartition Input/Output Control (IOCTL) malformées, un acteur local peut induire un scénario de pointeur pendant. Cet état permet le toilettage du pool noyau, facilitant les primitives d'écriture arbitraire et la substitution subséquente des jetons de sécurité.
La méthodologie d'exploitation est structurée en plusieurs phases distinctes :
La procédure commence par un audit de l'environnement noyau cible pour vérifier la présence du module cldflt.sys. Elle calcule en outre les décalages nécessaires pour la structure EPROCESS et les champs de jeton de sécurité associés par rapport à la version spécifique de Windows en cours d'exécution.
L'exploit instancie une série de structures de répertoires creuses et basées sur le cloud. Ces structures servent de surface d'interaction principale pour le pilote de filtre, permettant au manipulateur d'influencer les modèles d'allocation dans le Pool Noyau Non Paginé.
En envoyant des requêtes d'E/S concurrentes et malformées, l'exploit induit un état asynchrone où un objet mémoire est désalloué alors qu'une référence active persiste dans la pile d'exécution du pilote.
Une technique de Heap Spraying est utilisée pour occuper l'emplacement mémoire récemment libéré. L'exploit peuple le pool avec des structures de données contrôlées, transformant effectivement la condition "Use-After-Free" en "Confusion de Type" ou "Écraseur de Pointeur Contrôlé".
Après un détournement réussi de l'exécution en mode noyau, la charge utile exécute une opération de Vol de Jeton. Elle identifie le processus SYSTEM (PID 4) et réplique son jeton d'accès principal dans le descripteur de sécurité du processus de l'exploit.
[!CAUTION] Avertissement Expérimental : Cette recherche est destinée à la validation académique et à l'audit formel de sécurité en mode noyau. Une implémentation incorrecte peut entraîner une vérification des erreurs du noyau (BSOD) ou une corruption du système de fichiers. Tous les tests doivent être effectués dans un environnement hyperviseur strictement isolé.
Initialiser la topologie réseau :
sudo python3 topo.py
Ouvrir des terminaux pour les nœuds cloud et utilisateur :
xterm cloud user
Sur le terminal cloud, naviguer vers le répertoire du projet et démarrer le serveur :
cd ~/Downloads/sps_test
python3 server.py
Sur le terminal utilisateur, exécuter le script d'exploit automatisé (optionnel) :
python3 run_all.py
Alternativement, exécuter chaque phase manuellement pour une observation granulaire.
Exécuter les procédures suivantes séquentiellement dans le terminal utilisateur pour observer les transitions d'état mémoire :
Étape 1 — Objet de fichier alloué | REF=ref-12345
python3 1.py
Étape 2 — Objet libéré
python3 2.py
Étape 3 — RÉFÉRENCE PENDANTE
python3 3.py
Étape 4 — Réutilisation du tas
python3 4.py
Étape 5 — Gestionnaire écrasé
python3 5.py
Étape 6 — GESTIONNAIRE MALVEILLANT EXÉCUTÉ
python3 6.py
Remarque : Après un pivot réussi à la phase 6, le système exécutera la séquence de commandes malveillantes définie dans malware.json. Vous observerez des messages d'exécution sur le terminal cloud et recevrez la commande malveillante sur le terminal utilisateur.
La documentation et le code contenus dans ce dépôt sont fournis exclusivement pour l'avancement de la recherche en cybersécurité. L'auteur décline toute responsabilité pour les dommages découlant de l'utilisation de ces informations. L'objectif de cette recherche est de faciliter une compréhension complète des vulnérabilités des Pilotes de Mini Filtre et d'évaluer l'efficacité des stratégies d'atténuation existantes.
Référence : Microsoft Security Response Center (MSRC) - CVE-2025-62221
Fait pour le Projet SPS UPB 2026
| Paramètre | Spécification |
|---|
| Classe de vulnérabilité | Corruption Mémoire Temporelle / Use-After-Free (CWE-416) |
| Sous-système cible | Mini Filtre Cloud Files Windows (cldflt.sys) |
| Primitive d'exploitation | Toilettage du Pool Noyau et Exfiltration de Jeton |
| Frontière de privilèges | Utilisateur vers Noyau / Utilisateur Standard vers SYSTEM |
| Vecteur CVSS v3.1 | AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (Score de base : 7.8) |
| Contexte temporel | Identifié T4 2025 ; Correctif de mise à jour publié en janvier 2026 |
| Fichier | Utilisation |
|---|
| topo.py | Script d'orchestration Mininet définissant la frontière réseau |
| server.py | Service pilote cldflt.sys simulé incorporant la logique UAF |
| run_all.py | Script d'exploitation automatisé pour un test efficace |
| user.py | Script d'exploitation automatisé alternatif |
| 1.py à 6.py | Étapes d'exploitation discrètes fournies pour une analyse technique granulaire |
| malware.json | Charge utile malveillante utilisée pour démontrer la primitive d'exécution de code : Charge utile malveillante utilisée pour démontrer la primitive d'exécution de code |