Selon PixiePoint Security (22 décembre 2025), CVE-2025-29970 affecte le driver Windows Brokering File System (bfs.sys) utilisé avec AppContainer/AppSilo (Win32-App-isolation). L’analyse cible la version 26100.4061 et décrit un use-after-free dans la gestion de la liste chaînée DirectoryBlockList lors de la fermeture du stockage.

Contexte. BFS est un mini-filtre qui gère des opérations I/O (fichiers, pipes, registre) pour des applications isolées. Il s’appuie sur des structures internes comme PolicyTable, PolicyEntry (référencée fréquemment, avec compteur), StorageObject (bitmaps, AVL, liste DirectoryBlockList) et DirectoryBlockList (liste chaînée d’entrées de répertoires et buffers associés).

Vulnérabilité. Le bug se produit dans BfsCloseStorage: la tête de la liste DirectoryBlockList est libérée à la fin de la première itération de la boucle, puis réutilisée à l’itération suivante pour traiter les nœuds restants, créant un use-after-free. Le correctif déplace la libération de la tête de liste hors de la boucle dans BfsCloseRootDirectory, garantissant que tous les nœuds sont d’abord libérés avant le head. Le patch est conditionné par une vérification de fonctionnalité interne et supprime la réutilisation du pointeur libéré.

Exploitabilité et effets observés. L’article indique que la faille est peu propice à fournir des primitives utiles (lectures/écritures arbitraires ou fuite d’infos) en raison d’une fenêtre très courte et d’un usage limité du pointeur UAF. En pratique, un BSOD peut survenir (STOP 0x00000050) lorsque la mémoire libérée est réallouée et rend la boucle invalide. Pour atteindre le code vulnérable, il faut: (1) un handle de jeton avec attribut TokenIsAppSilo, (2) une PolicyEntry existante dans la PolicyTable, et (3) un StorageObject associé. Des entrées de stratégie peuvent être ajoutées via des IOCTLs (création de fichiers réels et chemins accessibles par le jeton), puis supprimées; la répétition ajout/suppression augmente la probabilité de corruption. L’accès au device BFS semble possible depuis un processus Medium IL, mais a échoué depuis des contextes Low IL testés.

IOCs et TTPs.

  • Composants/artefacts: bfs.sys (Brokering File System), CVE-2025-29970, Windows 10/11 avec AppContainer/AppSilo; version analysée: 26100.4061; device: \?\GLOBALROOT\Device\Bfs.
  • Fonctions clés: BfsOpenRootDirectory, BfsCloseStorage (vulnérable), BfsCloseRootDirectory (patch), BfsProcessSetPolicyRequest, BfsProcessDeletePolicyRequest, BfsRemovePolicyEntry.
  • Vérifications de jeton: TokenIsAppSilo via BfsIsApplicableToken.
  • TTPs: abus d’IOCTLs du driver pour ajouter/supprimer des politiques, création de fichiers temporaires accessibles au jeton d’AppSilo pour forcer la création d’un StorageObject, répétition des opérations pour provoquer la réallocation et déclencher le crash, observation d’un BSOD 0x00000050.

Conclusion. Il s’agit d’une analyse technique et d’un débogage de correctif visant à documenter l’origine du use-after-free, la séquence d’appels requise pour l’atteindre et le changement introduit par le patch.

🧠 TTPs et IOCs détectés

TTP

Abus d’IOCTLs du driver pour ajouter/supprimer des politiques, création de fichiers temporaires accessibles au jeton d’AppSilo pour forcer la création d’un StorageObject, répétition des opérations pour provoquer la réallocation et déclencher le crash, observation d’un BSOD 0x00000050.

IOC

Composants/artefacts: bfs.sys (Brokering File System), CVE-2025-29970, Windows 10/11 avec AppContainer/AppSilo; version analysée: 26100.4061; device: \?\GLOBALROOT\Device\Bfs.


🔗 Source originale : https://www.pixiepointsecurity.com/blog/nday-cve-2025-29970/