Vulnerabilidad en kernel de Linux (CVE-2024-42111)
Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-125
Lectura fuera de límites
Fecha de publicación:
30/07/2024
Última modificación:
26/09/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: btrfs: siempre haga las comprobaciones básicas de la estructura btrfs_qgroup_inherit [ERROR] Syzbot informa la siguiente regresión detectada por KASAN: ERROR: KASAN: slab-out-of-bounds in btrfs_qgroup_inherit+0x42e/ 0x2e20 fs/btrfs/qgroup.c:3277 Lectura de tamaño 8 en la dirección ffff88814628ca50 por tarea syz-executor318/5171 CPU: 0 PID: 5171 Comm: syz-executor318 No contaminado 6.10.0-rc2-syzkaller-00010-g2ab7951410 95 #0 Nombre del hardware: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/04/2024 Seguimiento de llamadas: __dump_stack lib/dump_stack.c:88 [en línea] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 print_address_description mm /kasan/report.c:377 [en línea] print_report+0x169/0x550 mm/kasan/report.c:488 kasan_report+0x143/0x180 mm/kasan/report.c:601 btrfs_qgroup_inherit+0x42e/0x2e20 fs/btrfs/qgroup. c:3277 create_pending_snapshot+0x1359/0x29b0 fs/btrfs/transaction.c:1854 create_pending_snapshots+0x195/0x1d0 fs/btrfs/transaction.c:1922 btrfs_commit_transaction+0xf20/0x3740 fs/btrfs/transaction.c:23 82 create_snapshot+0x6a1/0x9e0 fs/btrfs/ioctl.c:875 btrfs_mksubvol+0x58f/0x710 fs/btrfs/ioctl.c:1029 btrfs_mksnapshot+0xb5/0xf0 fs/btrfs/ioctl.c:1075 __btrfs_ioctl_snap_create+0x387/0x4b0 fs/btrfs/ioctl.c: 1340 btrfs_ioctl_snap_create_v2+0x1f2/0x3a0 fs/btrfs/ioctl.c:1422 btrfs_ioctl+0x99e/0xc60 vfs_ioctl fs/ioctl.c:51 [en línea] __do_sys_ioctl fs/ioctl.c:907 [en línea] __se_sys_ioctl+0xfc/0x170 fs/ioctl .c:893 do_syscall_x64 arch/x86/entry/common.c:52 [en línea] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 Entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fcbf1992509 RSP: 002b:00007fcbf1928218 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00007fcbf1a1f618 RCX: 00007fcbf1992509 RDX: 0000000020000280 RSI: 0000000050 009417 RDI: 0000000000000003 RBP: 00007fcbf1a1f610 R08: 00007ffea1298e97 R09: 00000000000000000 R10: 0000000000000000 R11: 00000000000000 246 R12: 00007fcbf19eb660 R13: 00000000200002b8 R14: 00007fcbf19e60c0 R15: 0030656c69662f2e Y también lo fijó para confirmar b5357cb268c4 ("btrfs: qgroup: no marque la herencia de qgroup si qgroup está deshabilitado"). [CAUSA] Esa confirmación infractora omite toda la verificación de herencia de qgroup si qgroup no está habilitado. Pero eso también omite las comprobaciones más básicas como num_ref_copies/num_excl_copies y las comprobaciones del tamaño de la estructura. Es decir, si se produce una carrera de habilitación/deshabilitación de qgroup en segundo plano y pasamos una estructura btrfs_qgroup_inherit cuando qgroup está deshabilitado, la verificación se omitirá por completo. Luego, en el momento del compromiso de la transacción, qgroup se vuelve a habilitar y btrfs_qgroup_inherit() utilizará la estructura incorrecta y provocará el error KASAN anterior. [FIX] Haga que btrfs_qgroup_check_inherit() solo omita las comprobaciones de qgroup de origen. De modo que incluso si se pasa una estructura btrfs_qgroup_inherit no válida, aún podemos rechazar las no válidas sin importar si qgroup está habilitado o no. Además, ya tenemos una seguridad adicional dentro de btrfs_qgroup_inherit(), que simplemente ignoraría las fuentes de qgroup no válidas, por lo que incluso si solo nos saltamos la verificación de la fuente de qgroup, todavía estamos a salvo.
Impacto
Puntuación base 3.x
6.30
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.8.10 (incluyendo) | 6.9 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.9.1 (incluyendo) | 6.9.9 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.9:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.10:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.10:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.10:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.10:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.10:rc6:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página



