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

Vulnerabilidad en Linux (CVE-2026-23167)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
14/02/2026
Última modificación:
18/02/2026

Descripción

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: nfc: nci: Solucionar condición de carrera entre rfkill y nci_unregister_device(). syzbot informó del 'splat' a continuación [0] sin una reproducción. Indica que la estructura nci_dev.cmd_wq había sido destruida antes de que se llamara a nci_close_device() a través de rfkill. nci_dev.cmd_wq solo se destruye en nci_unregister_device(), que (creo) fue llamada desde virtual_ncidev_close() cuando syzbot cerró un 'fd' de virtual_ncidev. El problema es que nci_unregister_device() destruye nci_dev.cmd_wq primero y luego llama a nfc_unregister_device(), que elimina el dispositivo de rfkill mediante rfkill_unregister(). Así, el dispositivo sigue siendo visible a través de rfkill incluso después de que nci_dev.cmd_wq sea destruida. Desregistremos el dispositivo de rfkill primero en nci_unregister_device(). Tenga en cuenta que no podemos llamar a nfc_unregister_device() antes de nci_close_device() porque 1) nfc_unregister_device() llama a device_del() que libera toda la memoria asignada por devm_kzalloc() y vinculada a ndev->conn_info_list 2) nci_rx_work() podría intentar encolar nci_conn_info a ndev->conn_info_list lo que podría provocar una fuga de memoria Por lo tanto, nfc_unregister_device() se divide en dos funciones para que podamos eliminar las interfaces de rfkill solo antes de nci_close_device(). [0]: DEBUG_LOCKS_WARN_ON(1) ADVERTENCIA: kernel/locking/lockdep.c:238 en hlock_class kernel/locking/lockdep.c:238 [inline], CPU#0: syz.0.8675/6349 ADVERTENCIA: kernel/locking/lockdep.c:238 en check_wait_context kernel/locking/lockdep.c:4854 [inline], CPU#0: syz.0.8675/6349 ADVERTENCIA: kernel/locking/lockdep.c:238 en __lock_acquire+0x39d/0x2cf0 kernel/locking/lockdep.c:5187, CPU#0: syz.0.8675/6349 Módulos enlazados: CPU: 0 UID: 0 PID: 6349 Comm: syz.0.8675 No contaminado syzkaller #0 PREEMPT(full) Nombre del hardware: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/13/2026 RIP: 0010:hlock_class kernel/locking/lockdep.c:238 [inline] RIP: 0010:check_wait_context kernel/locking/lockdep.c:4854 [inline] RIP: 0010:__lock_acquire+0x3a4/0x2cf0 kernel/locking/lockdep.c:5187 Código: 18 00 4c 8b 74 24 08 75 27 90 e8 17 f2 fc 02 85 c0 74 1c 83 3d 50 e0 4e 0e 00 75 13 48 8d 3d 43 f7 51 0e 48 c7 c6 8b 3a de 8d <67> 48 0f b9 3a 90 31 c0 0f b6 98 c4 00 00 00 41 8b 45 20 25 ff 1f RSP: 0018:ffffc9000c767680 EFLAGS: 00010046 RAX: 0000000000000001 RBX: 0000000000040000 RCX: 0000000000080000 RDX: ffffc90013080000 RSI: ffffffff8dde3a8b RDI: ffffffff8ff24ca0 RBP: 0000000000000003 R08: ffffffff8fef35a3 R09: 1ffffffff1fde6b4 R10: dffffc0000000000 R11: fffffbfff1fde6b5 R12: 00000000000012a2 R13: ffff888030338ba8 R14: ffff888030338000 R15: ffff888030338b30 FS: 00007fa5995f66c0(0000) GS:ffff8881256f8000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f7e72f842d0 CR3: 00000000485a0000 CR4: 00000000003526f0 Ruta de llamada: lock_acquire+0x106/0x330 kernel/locking/lockdep.c:5868 touch_wq_lockdep_map+0xcb/0x180 kernel/workqueue.c:3940 __flush_workqueue+0x14b/0x14f0 kernel/workqueue.c:3982 nci_close_device+0x302/0x630 net/nfc/nci/core.c:567 nci_dev_down+0x3b/0x50 net/nfc/nci/core.c:639 nfc_dev_down+0x152/0x290 net/nfc/core.c:161 nfc_rfkill_set_block+0x2d/0x100 net/nfc/core.c:179 rfkill_set_block+0x1d2/0x440 net/rfkill/core.c:346 rfkill_fop_write+0x461/0x5a0 net/rfkill/core.c:1301 vfs_write+0x29a/0xb90 fs/read_write.c:684 ---truncado---

Impacto