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.
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
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:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/0355387ea5b02d353c9415613fab908fac5c52a6
- https://git.kernel.org/stable/c/44277c50fdba5019ca25bfad1b71e2561b0de11b
- https://git.kernel.org/stable/c/4b98799e181b4326a613108cf37acc1f55d21b45
- https://git.kernel.org/stable/c/6bfff81286d4491f02dad7814bae5c77c9ad2320
- https://git.kernel.org/stable/c/7941b74ed49b6db25efbef2256ebef843c11a010
- https://git.kernel.org/stable/c/82ae73ac963cee877ce34f7c31b2b456b516e96c
- https://git.kernel.org/stable/c/b642b52d0b50f4d398cb4293f64992d0eed2e2ce
- https://git.kernel.org/stable/c/f3d97b22a708bf9e3f3ac2ba232bcefd0b0c136b



