Vulnerabilidad en kernel de Linux (CVE-2024-46733)
Fecha de publicación:
18/09/2024
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: btrfs: reparar fugas de reserva de qgroup en cow_file_range En la ruta de escritura en búfer, la página sucia posee la reserva de qgroup hasta que crea una ordered_extent. Por lo tanto, cualquier error que ocurra antes de que se cree la ordered_extent debe liberar esa reserva, o de lo contrario se pierde el espacio. El fstest generic/475 ejercita varias rutas de error de E/S y puede desencadenar errores en cow_file_range donde no logramos asignar la extensión ordenada. Tenga en cuenta que debido a que *sí* borramos delalloc, es probable que eliminemos el inodo de la lista de delalloc, por lo que los inodos/páginas no tienen una llamada de invalidación/lavado en ellos en la ruta de aborto de confirmación. Esto genera fallas en la etapa de desmontaje de la prueba que se ven así: BTRFS: error (dispositivo dm-8 estado EA) en cleanup_transaction:2018: errno=-5 falla de E/S BTRFS: error (dispositivo dm-8 estado EA) en btrfs_replace_file_extents:2416: errno=-5 falla de E/S Advertencia de BTRFS (dispositivo dm-8 estado EA): qgroup 0/5 tiene espacio sin liberar, tipo 0 rsv 28672 ------------[ cortar aquí ]------------ ADVERTENCIA: CPU: 3 PID: 22588 en fs/btrfs/disk-io.c:4333 close_ctree+0x222/0x4d0 [btrfs] Módulos vinculados en: btrfs blake2b_generic libcrc32c xor zstd_compress raid6_pq CPU: 3 PID: 22588 Comm: umount Kdump: cargado Tainted: GW 6.10.0-rc7-gab56fde445b8 #21 Nombre del hardware: PC estándar QEMU (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 01/04/2014 RIP: 0010:close_ctree+0x222/0x4d0 [btrfs] RSP: 0018:ffffb4465283be00 EFLAGS: 00010202 RAX: 0000000000000001 RBX: ffffa1a1818e1000 RCX: 0000000000000001 RDX: 0000000000000000 RSI: ffffb4465283bbe0 RDI: ffffa1a19374fcb8 RBP: ffffa1a1818e13c0 R08: 0000000100028b16 R09: 0000000000000000 R10: 000000000000003 R11: 0000000000000003 R12: ffffa1a18ad7972c R13: 000000000000000 R14: 0000000000000000 R15: 0000000000000000 FS: 00007f9168312b80(0000) GS:ffffa1a4afcc0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f91683c9140 CR3: 000000010acaa000 CR4: 00000000000006f0 Seguimiento de llamadas: ? close_ctree+0x222/0x4d0 [btrfs] ? __warn.cold+0x8e/0xea ? close_ctree+0x222/0x4d0 [btrfs] ? reportar_error+0xff/0x140 ? manejar_error+0x3b/0x70 ? exc_op_inválida+0x17/0x70 ? asm_exc_op_inválida+0x1a/0x20 ? cerrar_ctree+0x222/0x4d0 [btrfs] apagado_genérico_super+0x70/0x160 matar_anónimo_super+0x11/0x40 btrfs_kill_super+0x11/0x20 [btrfs] desactivar_bloqueado_super+0x2e/0xa0 limpieza_mnt+0xb5/0x150 ejecución_trabajo_tarea+0x57/0x80 salida_llamada_al_sistema_modo_usuario_+0x121/0x130 hacer_llamada_al_sistema_64+0xab/0x1a0 entrada_SYSCALL_64_después_de_hwframe+0x77/0x7f RIP: 0033:0x7f916847a887 ---[ fin de seguimiento 0000000000000000 ]--- Error BTRFS (estado del dispositivo dm-8 EA): se filtró el espacio reservado del qgroup Los casos 2 y 3 en la ruta out_reserve pertenecen a este tipo de fuga y deben liberar los datos reservados del qgroup. Debido a que ya es una ruta de error, opté por no manejar los posibles errores en btrfs_free_qgroup_data.
Gravedad: Pendiente de análisis
Última modificación:
25/04/2025