CVE-2026-23233 in Linuxinformation

Résumé

par VulDB • 14/06/2026

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

f2fs : correction pour éviter de mapper un bloc physique incorrect pour le fichier d'échange (swap)

Xiaolong Guo a signalé un bug f2fs dans Bugzilla [1]

[1] https://bugzilla.kernel.org/show_bug.cgi?id=220951

Citation :

« Lors de l'utilisation du test de stress swap de stress-ng sur le système de fichiers F2FS avec le noyau 6.6+, le système subit une corruption de données entraînant soit : 1 des erreurs de corruption dm-verity et un redémarrage de l'appareil 2 des erreurs de corruption du nœud F2FS et des blocages au démarrage

Le problème se produit spécifiquement lorsque : 1 Utilisation du système de fichiers F2FS (ext4 n'est pas affecté) 2 La taille du fichier d'échange est inférieure à la taille de section F2FS (2 Mo) 3 Le fichier d'échange a une disposition physique fragmentée (plusieurs étendues non contiguës) 4 La version du noyau est 6.6+ (la version 6.1 n'est pas affectée)

La cause racine se trouve dans la fonction check_swap_activate() de fs/f2fs/data.c. Lorsque la première étendue d'un petit fichier d'échange (< 2 Mo) n'est pas alignée sur les limites de section, la fonction l'interprète incorrectement comme étant la dernière étendue, échouant à mapper les étendues suivantes. Cela entraîne une création incorrecte des swap_extent où seule la première étendue est mappée, provoquant l'écrasement d'emplacements physiques incorrects (données d'autres fichiers) lors des écritures ultérieures sur le fichier d'échange.

Étapes pour reproduire 1 Configurer un appareil avec une partition userdata formatée en F2FS 2 Compiler stress-ng depuis https://github.com/ColinIanKing/stress-ng 3 Exécuter le test de stress swap : (appareils Android) adb shell "cd /data/stressng; ./stress-ng-64 --metrics-brief --timeout 60 --swap 0"

Journal d'exécution : 1 Ftrace montre que dans le noyau 6.6, seule la première étendue est mappée lors du second appel de f2fs_map_blocks dans check_swap_activate() : stress-ng-swap-8990: f2fs_map_blocks: ino=11002, file offset=0, start blkaddr=0x43143, len=0x1 (Seulement 4 Ko mappés, pas le fichier d'échange complet) 2 Dans le noyau 6.1, les deux étendues sont correctement mappées : stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=0, start blkaddr=0x13cd4, len=0x1 stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=1, start blkaddr=0x60c84b, len=0xff

Le code problématique se trouve dans check_swap_activate() : if ((pblock - SM_I(sbi)->main_blkaddr) % blks_per_sec || nr_pblocks % blks_per_sec || !f2fs_valid_pinned_area(sbi, pblock)) {
bool last_extent = false;

not_aligned++;

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Linux

Réserver

13/01/2026

Divulgation

04/03/2026

Modérer

accepté

Entrée

VDB-348731

CPE

prêt

EPSS

0.00160

KEV

non

Activités

très faible

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!