CVE-2025-71069 in Linuxinformation

Résumé

par VulDB • 29/05/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

f2fs : invalider le cache des dentries lors de l'échec de la création d'un whiteout

F2FS peut monter des systèmes de fichiers présentant des valeurs de profondeur de répertoire corrompues, qui sont limitées à la valeur MAX_DIR_HASH_DEPTH lors de l'exécution. Lorsque des opérations RENAME_WHITEOUT sont effectuées sur de tels répertoires, f2fs_rename effectue des modifications du répertoire (mise à jour de l'entrée cible et suppression de l'entrée source) avant de tenter d'ajouter l'entrée whiteout via f2fs_add_link.

Si f2fs_add_link échoue en raison de la structure de répertoire corrompue, la fonction renvoie une erreur à VFS, mais les modifications partielles du répertoire ont déjà été validées sur le disque. VFS suppose que l'ensemble de l'opération de renommage a échoué et ne met pas à jour le cache des dentries, laissant des mappages obsolètes (stale).

Dans le chemin de gestion des erreurs, VFS n'appelle pas d_move() pour mettre à jour le cache des dentries. Cela entraîne le fait que new_dentry pointe toujours vers l'ancien inode (new_inode) dont le compteur i_nlink a déjà été décrémenté à zéro. Le cache obsolète provoque des références incorrectes à l'inode libéré lors des opérations suivantes.

Cela conduit les opérations suivantes à utiliser des informations de dentry en cache qui ne correspondent plus à l'état sur disque. Lorsqu'un deuxième renommage cible la même entrée, VFS tente de décrémenter i_nlink sur l'inode obsolète, qui peut déjà avoir i_nlink=0, déclenchant un WARNING dans drop_nlink().

Séquence d'exemple : 1. Premier renommage (RENAME_WHITEOUT) : file2 → file1 - f2fs met à jour l'entrée file1 sur le disque (pointe vers l'inode 8) - f2fs supprime l'entrée file2 sur le disque - f2fs_add_link(whiteout) échoue (répertoire corrompu) - Renvoie une erreur à VFS - VFS n'appelle pas d_move() en raison de l'erreur - Le cache VFS contient toujours : file1 → inode 7 (obsolète !) - L'inode 7 a i_nlink=0 (déjà décrémenté)

2. Deuxième renommage : file3 → file1 - VFS utilise le cache obsolète : file1 → inode 7 - Tente de drop_nlink sur l'inode 7 (i_nlink déjà à 0) - WARNING dans drop_nlink()

Correction : invalider explicitement old_dentry et new_dentry lorsque f2fs_add_link échoue lors de la création du whiteout. Cela force VFS à recharger les données depuis le disque lors des opérations suivantes, garantissant la cohérence du cache même lorsque le renommage réussit partiellement.

Reproducteur : 1. Monter une image F2FS avec i_current_depth corrompu 2. renameat2(file2, file1, RENAME_WHITEOUT) 3. renameat2(file3, file1, 0) 4. Le système déclenche un WARNING dans drop_nlink()

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Réserver

13/01/2026

Divulgation

13/01/2026

Modérer

accepté

Entrée

VDB-340630

CPE

prêt

EPSS

0.00202

KEV

non

Activités

très faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!