Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2022-49075)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-190 Desbordamiento o ajuste de enteros
Fecha de publicación:
26/02/2025
Última modificación:
23/09/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: btrfs: corregir el desbordamiento de reserva de qgroup del límite de qgroup Usamos extended_changeset->bytes_changed en qgroup_reserve_data() para registrar cuántos bytes configuramos para el estado EXTENT_QGROUP_RESERVED. Actualmente, bytes_changed está configurado como "unsigned int" y se desbordará si intentamos hacer falocación en un rango mayor a 4 GiB. El resultado es que reservamos menos bytes y eventualmente rompemos el límite de qgroup. A diferencia de la escritura directa/en búfer regular, que utilizamos un conjunto de cambios para cada extensión ordenada, que nunca puede ser mayor a 256M. Para falocación, utilizamos un conjunto de cambios para todo el rango, por lo tanto, ya no respeta el límite de 256M por extensión y causó el problema. El siguiente ejemplo de secuencia de comandos de prueba reproduce el problema: $ cat qgroup-overflow.sh #!/bin/bash DEV=/dev/sdj MNT=/mnt/sdj mkfs.btrfs -f $DEV mount $DEV $MNT # Establezca el límite de qgroup en 2 GiB. btrfs quota enable $MNT btrfs qgroup limit 2G $MNT # Intente realizar la operación de fallocate de un archivo de 3 GiB. Esto debería fallar. echo echo "Intente realizar la operación de fallocate de un archivo de 3 GiB..." fallocate -l 3G $MNT/3G.file # Intente realizar la operación de fallocate de un archivo de 5 GiB. echo echo "Intente realizar la operación de fallocate de un archivo de 5 GiB..." fallocate -l 5G $MNT/5G.file # Vea que rompemos el límite de qgroup. echo sync btrfs qgroup show -r $MNT umount $MNT Al ejecutar la prueba: $ ./qgroup-overflow.sh (...) Intenta fallar un archivo de 3 GiB... fallocate: fallocate falló: Cuota de disco excedida Intenta fallar un archivo de 5 GiB... qgroupid rfer excl max_rfer -------- ---- ---- -------- 0/5 5.00GiB 5.00GiB 2.00GiB Dado que no tenemos control sobre cómo se usa bytes_changed, es mejor configurarlo en u64.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.14.276 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.15 (incluyendo) 4.19.238 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (incluyendo) 5.4.189 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (incluyendo) 5.10.111 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.34 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 5.16.20 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.17 (incluyendo) 5.17.3 (excluyendo)
cpe:2.3:o:linux:linux_kernel:5.18:rc1:*:*:*:*:*:*