Cloudanix VulnDB

CVE-2026-98357

High · 8.1

CVSS

8.1

EPSS

0.4%

Published

Oct 6, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the Linux kernel's handling of certain high-speed storage network connections could let attackers crash servers or potentially take them over.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Remote Code Execution
Component
OS kernel
Class
Memory Corruption
Remediation
Patch
Effort
Medium
Patch risk
Medium

What it actually does

Use-after-free in isert_put_cmd() when deferred control PDU completions (ISTATE_SEND_TASKMGTRSP, ISTATE_SEND_REJECT, ISTATE_SEND_TEXTRSP) run on isert_comp_wq after isert_wait_conn() and iscsit_close_connection() have freed isert_conn and iscsit_conn structures.

Why it matters to the business

Systems using Linux iSER/iSCSI RDMA target may experience kernel crashes or potential code execution in storage fabrics, risking data unavailability and compromise of high-performance storage nodes.

How an attack unfolds

An attacker establishes an iSER connection and sends control PDUs that queue deferred completions to isert_comp_wq; the attacker then forces connection teardown so the work item executes against already-freed memory, triggering the slab-use-after-free.

How to fix it

Apply the upstream fix that adds per-connection deferred completion counting and makes isert_wait_conn() wait before queuing isert_release_work; rebuild and deploy updated kernel packages for affected distributions.

How to confirm the fix worked

Confirm the presence of the counting logic and wait in isert_wait_conn() in the running kernel source or via kernel version checks against the patch commit; re-test iSER connection teardown under load.

Typical attack path

  1. Establish iSER session and send control PDUs (TASKMGTRSP/REJECT/TEXTRSP)
  2. Trigger connection close path that frees isert_conn without waiting for queued work
  3. Work item isert_do_control_comp runs isert_put_cmd on freed structures

How to detect it

Search kernel logs for KASAN slab-use-after-free reports referencing isert_put_cmd or isert_do_control_comp; inspect iSCSI RDMA connection teardown sequences and workqueue activity around isert_comp_wq.

  • BUG: KASAN: slab-use-after-free in isert_put_cmd
  • isert_comp_wq
  • isert_do_control_comp
  • Read of size 8 at addr .* in isert_put_cmd

What your security team should do

  • Prioritize kernel updates for any systems exposing iSER targets
  • Disable iSER interfaces if RDMA storage is not required
  • Monitor vendor advisories for backported fixes in LTS kernels

The record

In the Linux kernel, the following vulnerability has been resolved: IB/isert: wait for deferred control PDU completions before releasing the connection isert_send_done() hands ISTATE_SEND_TASKMGTRSP, ISTATE_SEND_REJECT and ISTATE_SEND_TEXTRSP completions off to isert_comp_wq and returns. The work item then runs isert_completion_put() -> isert_put_cmd(), which reads isert_conn->conn and takes conn->cmd_lock. Nothing orders that work item against teardown. isert_wait_conn() queues isert_release_work, which frees isert_conn, and iscsit_close_connection() frees the iscsit_conn right after it returns, so the queued work can run against freed memory. Count the deferred control PDU completions per connection and let isert_wait_conn() wait for them before the release work is queued. ISTATE_SEND_LOGOUTRSP is deliberately not counted: that branch runs iscsit_logout_post_handler(), which ends up waiting for conn->conn_wait_comp, and that completion is only sent by iscsit_close_connection() after it has called iscsit_wait_conn(). Waiting for it here would deadlock. Its wait stays the existing isert_wait4logout(). The splat below is from a kernel with tracing printk()s and an msleep(200) injected into isert_do_control_comp() to widen the window: BUG: KASAN: slab-use-after-free in isert_put_cmd+0x53d/0x620 Read of size 8 at addr ffff8881054f1038 by task kworker/u17:1/182 CPU: 0 UID: 0 PID: 182 Comm: kworker/u17:1 Tainted: G B 7.2.0-rc5-TWIDE-gb8babf08acc7 #1 PREEMPT(lazy) Tainted: [B]=BAD_PAGE Hardware name: 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: isert_comp_wq isert_do_control_comp Call Trace: <TASK> dump_stack_lvl+0x53/0x70 print_report+0xd0/0x630 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 ? _raw_spin_unlock_irqrestore+0x3e/0x70 ? isert_put_cmd+0x53d/0x620 kasan_report+0xce/0x100 ? isert_put_cmd+0x53d/0x620 isert_put_cmd+0x53d/0x620 ? isert_completion_put+0x305/0x330 ? isert_do_control_comp+0x2ef/0x310 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> Allocated by task 48: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 __kasan_kmalloc+0x8f/0xa0 __kmalloc_cache_noprof+0x158/0x370 isert_cma_handler+0x1e3/0x2ae0 cma_cm_event_handler+0x3e/0x240 cma_ib_req_handler+0x17d9/0x4490 cm_process_work+0x41/0x330 cm_work_handler+0x5727/0xc160 process_one_work+0x633/0x1030 worker_thread+0x45b/0xd10 kthread+0x2c6/0x3b0 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30 Freed by task 184: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 kasan_save_free_info+0x3b/0x60 __kasan_slab_free+0x43/0x70 kfree+0x121/0x380 iscsit_close_connection+0x7cf/0x1e60 iscsit_take_action_for_connection_exit+0x1b6/0x360 iscsi_target_tx_thread+0x472/0x690 kthread+0x2c6/0x3b0 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30

Affected packages

Ecosystem Package Introduced Fixed