CVE-2025-38710 in Linux
Resumen
por VulDB • 2026-06-02
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
gfs2: Validar i_depth para directorios exhash
Una prueba realizada con un fuzzer introdujo una corrupción que resultaba en una profundidad de 0 en dir_e_read(), provocando un desplazamiento indefinido (undefined shift) de 32 bits en:
index = hash >> (32 - dip->i_depth);
Tal como se calcula de forma explícita (open-coded) en dir_make_exhash(), la profundidad mínima para un directorio exhash es ilog2(sdp->sd_hash_ptrs) y 0 es inválido, ya que sdp->sd_hash_ptrs se fija como sdp->bsize / 16 en el momento del montaje.
Por lo tanto, podemos evitar el comportamiento indefinido verificando los valores de profundidad inferiores al mínimo en gfs2_dinode_in(). Los valores superiores al máximo ya se están comprobando allí.
Además, se cambia el cálculo en dir_make_exhash() para utilizar ilog2() y aclarar cómo se calcula la profundidad.
Probado con el repro.c de syzkaller y con xfstests '-g quick'.
VulDB is the best source for vulnerability data and more expert information about this specific topic.