CVE-2026-99153 scsi: libiscsi: Validate the ITT reflected in a Reject PDU
- Published
- Updated
- Exploit status
- No public exploit known
Description
In the Linux kernel, the following vulnerability has been resolved:
scsi: libiscsi: Validate the ITT reflected in a Reject PDU
A Reject PDU carries a copy of the header it rejects, and
iscsi_handle_reject() takes the ITT out of that copy to find the task to
clean up:
memcpy(&rejected_pdu, data, sizeof(struct iscsi_hdr));
...
task = iscsi_itt_to_task(conn, rejected_pdu.itt);
That value is whatever the target put there. iscsi_itt_to_task() bounds
the index against cmds_max and checks nothing else, so any task in the
pool can be named, and iscsi_nop_out_rsp() then completes it.
An index that has never been used gives a NULL task->conn: the pool is
zeroed at session setup and conn is assigned only when a task is
allocated. If the task was used and returned, iscsi_complete_task() hits
its WARN_ON_ONCE(task->state == ISCSI_TASK_FREE) and the refcount
underflows. An in-flight SCSI command is completed as successful - a 1
MiB read returned 1048576 with none of its buffer written and no
warning.
Validate the reflected ITT the way iscsi_itt_to_ctask() validates a
command ITT, and require the task to be in flight and not a SCSI
command.
[ 6.248477] Oops: general protection fault, probably for non-canonical address 0xdffffc000000000c: 0000 [#1] SMP KASAN NOPTI
[ 6.249357] KASAN: null-ptr-deref in range [0x0000000000000060-0x0000000000000067]
[ 6.249951] CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Not tainted 7.2.0-rc5-ISCSI1-gf5098b6bae76 #1 PREEMPT(lazy)
[ 6.250718] 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
[ 6.251616] RIP: 0010:iscsi_nop_out_rsp.constprop.0+0x46/0x160
[ 6.252043] Code: c1 ea 03 48 83 ec 08 80 3c 02 00 0f 85 f5 00 00 00 48 b8 00 00 00 00 00 fc ff df 48 8b 6b 58 48 8d 7d 60 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 c0 00 00 00 48 8b 45 60 48 39 c3 74 50 48 b8 00
[ 6.252813] RSP: 0018:ffff88806c907b80 EFLAGS: 00010206
[ 6.253042] RAX: dffffc0000000000 RBX: ffff88800607e000 RCX: ffffffff8d571a25
[ 6.253345] RDX: 000000000000000c RSI: ffff88806c907c38 RDI: 0000000000000060
[ 6.253642] RBP: 0000000000000000 R08: 0000000000000000 R09: fffffbfff235a504
[ 6.253947] R10: 0000000000000003 R11: 7463656e6e6f6320 R12: 0000000000000000
[ 6.254251] R13: 0000000000000000 R14: ffff88806c907c38 R15: 0000000000000000
[ 6.254549] FS: 0000000000000000(0000) GS:ffff8880d95bc000(0000) knlGS:0000000000000000
[ 6.254887] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 6.255140] CR2: 00007fc393e8ffc0 CR3: 0000000005252006 CR4: 0000000000770ef0
[ 6.255439] PKRU: 55555554
[ 6.255564] Call Trace:
[ 6.255674] <IRQ>
[ 6.255768] __iscsi_complete_pdu+0x18bf/0x22a0
[ 6.256733] iscsi_complete_pdu+0x54/0xa0
[ 6.256905] iscsi_tcp_data_recv_done+0xf4/0x250
[ 6.257103] iscsi_tcp_recv_skb+0x31e/0xec0
[ 6.257680] iscsi_sw_tcp_recv+0x12f/0x390
[ 6.258061] __tcp_read_sock+0x1ab/0x810
[ 6.258853] iscsi_sw_tcp_data_ready+0x18b/0x510
[ 6.259808] tcp_data_queue+0x1f13/0x4cd0
[ 6.260567] tcp_rcv_established+0x8a5/0x3a00
[ 6.261931] tcp_v4_do_rcv+0x449/0x960
[ 6.262269] tcp_v4_rcv+0x2245/0x3bc0
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < 3637a4ad1d07477f1c60609876da6b60154d224b | 3637a4ad1d07477f1c60609876da6b60154d224b |
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < 21ef746340ce246344f34278e205b8960c1d8874 | 21ef746340ce246344f34278e205b8960c1d8874 |
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < d20583a9dbe0d32a9af8384c857c95c0fc115103 | d20583a9dbe0d32a9af8384c857c95c0fc115103 |
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < ebb8c5ef2aabf66895253600e8390e8fc7094807 | ebb8c5ef2aabf66895253600e8390e8fc7094807 |
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < 576125e7382a7826bd6c3c1ca4d9c582ed5be21d | 576125e7382a7826bd6c3c1ca4d9c582ed5be21d |
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < 7215a69b6456fda79c0935c2959045dff3fcaac8 | 7215a69b6456fda79c0935c2959045dff3fcaac8 |
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < d79343ae3223b3f7f74b55e79f8a1371fa3f4b1a | d79343ae3223b3f7f74b55e79f8a1371fa3f4b1a |
| Linux kernel | >= 8afa1439fcff58da8f28c1d083046f229f6ab3de, < c5958c770b2a0ee492414e26b07da9164a0d1f5d | c5958c770b2a0ee492414e26b07da9164a0d1f5d |
| Linux kernel | = 2.6.32 | No fix listed |
| Linux kernel | < 5.10.273 | 5.10.273 |
| Linux kernel | < 5.15.224 | 5.15.224 |
| Linux kernel | < 6.1.191 | 6.1.191 |
| Linux kernel | < 6.6.161 | 6.6.161 |
| Linux kernel | < 6.12.115 | 6.12.115 |
| Linux kernel | < 6.18.59 | 6.18.59 |
| Linux kernel | < 7.2.13 | 7.2.13 |
| Linux kernel | < 7.3 | 7.3 |
| ubuntu/linux(Ubuntu:22.04) | All versions | No fix listed |
| ubuntu/linux-kvm(Ubuntu:22.04) | All versions | No fix listed |
| ubuntu/linux-raspi(Ubuntu:22.04) | All versions | No fix listed |
| ubuntu/linux(Ubuntu:24.04) | All versions | No fix listed |
| ubuntu/linux-raspi(Ubuntu:24.04) | All versions | No fix listed |
| redhat/kernel(Red Hat:enterprise_linux:10.3) | < 6.12.0-264.16.1.el10_3 | 6.12.0-264.16.1.el10_3 |
| redhat/kernel(Red Hat:enterprise_linux_eus:10.2) | < 6.12.0-211.75.1.el10_2 | 6.12.0-211.75.1.el10_2 |
| redhat/kernel-rt(Red Hat:enterprise_linux:8::nfv) | < 4.18.0-553.185.1.rt7.526.el8_10 | 4.18.0-553.185.1.rt7.526.el8_10 |
Show 175 more
| Product | Affected versions | Fixed in |
|---|---|---|
| redhat/kernel(Red Hat:enterprise_linux:8) | < 4.18.0-553.185.1.el8_10 | 4.18.0-553.185.1.el8_10 |
| redhat/kernel(Red Hat:enterprise_linux:9) | < 5.14.0-741.22.1.el9_9 | 5.14.0-741.22.1.el9_9 |
| redhat/kernel(Red Hat:rhel_eus:9.8) | < 5.14.0-687.67.1.el9_8 | 5.14.0-687.67.1.el9_8 |
| redhat/kernel(Red Hat:rhel_els:6) | All versions | No fix listed |
| redhat/kernel(Red Hat:rhel_els:7) | All versions | No fix listed |
| redhat/kernel-rt(Red Hat:rhel_els:7) | All versions | No fix listed |
| redhat/kernel-rt(Red Hat:enterprise_linux:9) | All versions | No fix listed |
| redhat/openshift/ose-rhel-coreos-8(Red Hat:openshift:4) | All versions | No fix listed |
| redhat/openshift/ose-rhel-coreos-9(Red Hat:openshift:4) | All versions | No fix listed |
| redhat/openshift/ose-rhel-coreos-9(Red Hat:openshift:5) | All versions | No fix listed |
| debian/linux(Debian:12) | All versions | No fix listed |
| debian/linux(Debian:12) | = 6.1.106-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.106-2 | No fix listed |
| debian/linux(Debian:12) | = 6.1.106-3 | No fix listed |
| debian/linux(Debian:12) | = 6.1.112-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.115-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.119-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.123-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.124-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.128-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.129-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.133-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.135-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.137-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.139-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.140-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.147-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.148-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.153-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.158-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.159-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.162-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.164-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.170-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.170-2 | No fix listed |
| debian/linux(Debian:12) | = 6.1.170-3 | No fix listed |
| debian/linux(Debian:12) | = 6.1.172-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.174-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.176-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.177-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.180-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.187-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.190-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.27-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.37-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.38-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.38-2 | No fix listed |
| debian/linux(Debian:12) | = 6.1.38-2~bpo11+1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.38-3 | No fix listed |
| debian/linux(Debian:12) | = 6.1.38-4 | No fix listed |
| debian/linux(Debian:12) | = 6.1.38-4~bpo11+1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.52-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.55-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.55-1~bpo11+1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.64-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.66-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.67-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.69-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.69-1~bpo11+1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.76-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.76-1~bpo11+1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.82-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.85-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.90-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.90-1~bpo11+1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.94-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.94-1~bpo11+1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.98-1 | No fix listed |
| debian/linux(Debian:12) | = 6.1.99-1 | No fix listed |
| debian/linux(Debian:12) | = 6.10-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.1-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.11-1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.11-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.12-1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.3-1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.4-1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.6-1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.6-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.7-1 | No fix listed |
| debian/linux(Debian:12) | = 6.10.9-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.10-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.10-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.2-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.4-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.5-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.5-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.6-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.7-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11.9-1 | No fix listed |
| debian/linux(Debian:12) | = 6.11~rc4-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.11~rc5-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.10-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.100-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.101-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.105-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.107-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.11-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.11-1+alpha | No fix listed |
| debian/linux(Debian:12) | = 6.12.11-1+alpha.1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.111-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.113-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.115-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.115-2 | No fix listed |
| debian/linux(Debian:12) | = 6.12.116-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.12-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.12-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.13-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.15-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.16-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.17-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.19-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.20-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.21-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.22-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.22-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.25-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.27-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.27-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.29-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.3-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.30-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.30-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.31-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.32-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.32-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.33-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.33-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.35-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.35-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.37-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.38-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.38-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.41-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.43-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.43-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.48-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.5-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.57-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.57-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.6-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.63-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.63-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.69-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.69-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.73-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.73-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.74-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.74-2 | No fix listed |
| debian/linux(Debian:12) | = 6.12.74-2~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.8-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.85-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.85-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.86-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.86-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.88-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.88-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.9-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.9-1+alpha | No fix listed |
| debian/linux(Debian:12) | = 6.12.9-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.90-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.90-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.90-2 | No fix listed |
| debian/linux(Debian:12) | = 6.12.90-2~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.94-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.94-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.95-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.95-1~bpo12+1 | No fix listed |
| debian/linux(Debian:12) | = 6.12.96-1 | No fix listed |
| debian/linux(Debian:12) | = 6.12~rc6-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.13.10-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.13.11-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.13.2-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.13.3-1~exp1 | No fix listed |
| debian/linux(Debian:12) | = 6.13.4-1~exp1 | No fix listed |
References
- MSRC Security Update Guide vendor-advisory
- Release Notes vendor-advisory
- Red Hat CVE page vendor-advisory
- RHSA-2026:98100 patch vendor-advisory
- RHSA-2026:98099 patch vendor-advisory
- Red Hat Bugzilla 2562706 issue-tracking
- www.cve.org
- nvd.nist.gov
- git.kernel.org
- git.kernel.org
- git.kernel.org
- git.kernel.org
- git.kernel.org
- git.kernel.org
- git.kernel.org
- git.kernel.org
- Debian Security Tracker CVE-2026-99153 vendor-advisory
- Ubuntu CVE tracker vendor-advisory
- RHSA-2026:99133 patch vendor-advisory
- RHSA-2026:99139 patch vendor-advisory
- RHSA-2026:99135 patch vendor-advisory
- RHSA-2026:99148 patch vendor-advisory