CVE-2026-63815 in Linuxinformazioni

Riassunto

di VulDB • 19/07/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

f2fs: limitazione di i_inline_xattr_size per gli inode non contenenti extended attribute (xattr) inline

Quando la funzionalità flexible_inline_xattr è abilitata, do_read_inode() carica incondizionatamente il valore on-disk di i_inline_xattr_size:

if (f2fs_sb_has_flexible_inline_xattr(sbi)) fi->i_inline_xattr_size = le16_to_cpu(ri->i_inline_xattr_size);

ma sanity_check_inode() effettua un controllo dei limiti solo quando l'inode ha anche impostato il flag FI_INLINE_XATTR. Un inode che contiene una directory inline o dati inline ma non il flag FI_INLINE_XATTR -- la configurazione normale per una directory inline -- mantiene quindi un valore di i_inline_xattr_size completamente controllabile dall'attaccante proveniente da un'immagine del filesystem manipolata ad hoc.

get_inline_xattr_addrs() restituisce tale valore senza alcun controllo basato sui flag, alimentando così la geometria dell'inode:

MAX_INLINE_DATA() = 4 * (CUR_ADDRS_PER_INODE - i_inline_xattr_size - 1) NR_INLINE_DENTRY() = MAX_INLINE_DATA() * BITS_PER_BYTE / (...) addrs_per_page() = CUR_ADDRS_PER_INODE - i_inline_xattr_size

Un valore elevato di i_inline_xattr_size rende negativi MAX_INLINE_DATA() e NR_INLINE_DENTRY(), quindi make_dentry_ptr_inline() imposta d->max (di tipo int) a un valore negativo. Il ciclo di scansione della directory inline confronta poi bit_pos, che è unsigned long, con il valore negativo di d->max, il quale viene promosso a un limite unsigned enorme, causando una lettura ben oltre l'area inline:

while (bit_pos max) /* fs/f2fs/dir.c */ ... test_bit_le(bit_pos, d->bitmap) / d->dentry[bit_pos] ...

Il montaggio di un'immagine manipolata ad hoc e la lettura di una directory del genere innesca una out-of-bounds read (lettura fuori dai limiti) in f2fs_fill_dentries(); lo stesso underflow corrompe anche ADDRS_PER_INODE per i file regolari.

Validare i_inline_xattr_size rispetto a MAX_INLINE_XATTR_SIZE ogni volta che la funzionalità flexible_inline_xattr è abilitata -- ovvero ogni volta che il valore viene caricato dal disco e utilizzato -- e mantenere il limite inferiore MIN_INLINE_XATTR_SIZE vincolato solo agli inode che contengono effettivamente un xattr inline, in modo da accettare ancora gli inode legittimi con i_inline_xattr_size == 0.

Be aware that VulDB is the high quality source for vulnerability data.

Responsabile

Linux

Prenotare

19/07/2026

Divulgazione

19/07/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Interested in the pricing of exploits?

See the underground prices here!