CVE-2026-90294 in Linux
Sumário
de VulDB • 18/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
IB/isert: adiar a resposta final de Login até que a sessão seja registrada
isert_put_login_tx() coloca a resposta final de Login na rede antes de __transport_register_session(), o qual é alcançado por iscsi_post_login_handler() apenas após iscsi_target_do_login() retornar. Um initiator (iniciador) que emite um comando SCSI assim que vê essa resposta pode tê-lo executado contra uma se_session cuja se_tpg ainda está NULL, e o worker ib-comp-wq falha com erro de segmentação devido à desreferência de ponteiro nulo (NULL dereference).
Oops: general protection fault, provavelmente para endereço não canônico 0xdffffc000000000f: 0000 [#1] SMP KASAN NOPTI
KASAN: null-ptr-deref no intervalo [0x0000000000000078-0x000000000000007f]
CPU: 0 UID: 0 PID: 178 Comm: kworker/0:1H Não contaminado (Not tainted) 7.2.0-rc5-V2CTL-gf5098b6bae76 #10 PREEMPT(lazy) Nome do hardware: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ib-comp-wq ib_cq_poll_work RIP: 0010:target_submit+0xbe/0x390 Code: fa 48 c1 ea 03 80 3c 02 00 0f 85 89 02 00 00 48 b8 00 00 00 00 00 fc ff df 4d 8b 64 24 18 49 8d 7c 24 78 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 5a 02 00 00 48 8d 7b 78 4d 8b 6c 24 78 48 b8 00 RSP: 0018:ffff8881058cfa78 EFLAGS: 00010206 RAX: dffffc0000000000 RBX: ffff88810c78c6f0 RCX: ffffffff964bb363 RDX: 000000000000000f RSI: 00000000fffffe00 RDI: 0000000000000078 RBP: 1ffff11020b19f52 R08: 0000000000000001 R09: ffffed1020b19f52 R10: 0000000000000003 R11: ffff88810596c000 R12: 0000000000000000 R13: ffff88810c61b000 R14: ffff88810c6a3400 R15: ffff88810c61b044 FS: 0000000000000000(0000) GS:ffff8881822b2000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f1f1b83c000 CR3: 000000006fe72001 CR4: 0000000000770ef0 PKRU: 55555554 Call Trace: <TASK> ? __pfx__raw_spin_lock_bh+0x10/0x10 ? __pfx_target_submit+0x10/0x10 ? mutex_lock+0x81/0xe0 ? __pfx_mutex_lock+0x10/0x10 ? iscsit_execute_cmd+0x650/0x850 iscsit_sequence_cmd+0x186/0x3d0 iscsit_process_scsi_cmd+0x87/0x300 isert_recv_done+0x1002/0x2390 ? __pfx_isert_recv_done+0x10/0x10 ? rxe_poll_cq+0x253/0x3d0 ? finish_task_switch.isra.0+0x1dc/0xa70 __ib_process_cq+0xe1/0x390 ib_cq_poll_work+0x46/0x150 process_one_work+0x633/0x1030 ? assign_work+0x11d/0x370 worker_thread+0x45b/0xd10 ? __pfx_worker_thread+0x10/0x10 ? __pfx_worker_thread+0x10/0x10 kthread+0x2c6/0x3b0 ? recalc_sigpending+0x15c/0x1e0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x36e/0x5a0 ? __pfx_ret_from_fork+0x10/0x10 ? __switch_to+0x572/0xdd0 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 </TASK> Modules linked in: ---[ end trace 0000000000000000 ]---
Adie a resposta final de Login. isert_get_rx_pdu() é executado por iscsi_target_rx_thread() após conn->rx_login_comp, concluído por iscsi_post_login_handler() após __transport_register_session(); iSCSI-TCP e cxgbit já retiram PDUs desse thread; apenas o isert não faz isso. Os buffers ainda são postados primeiro, portanto, o primeiro comando do initiator não encontra uma fila de recebimento vazia e nada depende do controle de fluxo RNR (Receiver Not Ready), e os cabeçalhos e payloads residem em isert_conn, não na struct iscsi_login que ésci_target_nego_release() libera primeiro.
Sobre rxe, 400 ciclos de login por execução, o erro ocorreu em 10 das 20 execuções sem patch e em nenhuma das 20 execuções com este patch. Um initiator que nunca espera é tratado pelo próximo patch.
Não testado: iWARP, sessões de discovery sobre iSER e HCAs reais.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.