KernelScan.io

CRITICAL Introduced in 2.6.29

iscsi DataIn Corruption

CVE-2026-98479

CVSS 9.8 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

01

In the Linux kernel, the following vulnerability has been resolved: scsi: libiscsi_tcp: Check the data direction of a Data-In PDU The Data-In branch of iscsi_tcp_hdr_dissect() resolves the ITT to a task and copies the PDU's data segment into that command's scatterlist without asking whether the command was reading. iscsi_tcp_r2t_rsp() in the same file does ask, and rejects an R2T for a command that is not DMA_TO_DEVICE. A target that answers a WRITE command's ITT with a Data-In therefore has the initiator write target-supplied bytes into the pages that write was about to send. Those are the caller's own pinned pages for an O_DIRECT write, and page cache pages for a buffered one. Observed against a test target that emits one 512-byte Data-In naming a 128 KB write's ITT, after the R2T for that write. With O_DIRECT the caller's buffer ends up holding 512 bytes of the target's data while pwrite() returns 131072. Buffered is quieter: pwrite() and fsync() both succeed, nothing is logged, and reading those blocks back returns the target's bytes out of the page cache without a command going on the wire. Check the direction before using the scatterlist, the way the R2T path already does.

02

Engine v0.9.0

Risk summary

A malicious iSCSI target can send a Data-In PDU referencing a WRITE command's ITT, causing the initiator to overwrite its own write buffer with attacker-controlled data. This corrupts page cache or user-pinned pages, leading to silent data corruption, potential filesystem inconsistency, and possible kernel memory corruption. Any system using the iSCSI initiator to connect to an untrusted or compromised target is at risk.

Affecteddrivers/scsi/libiscsi_tcp.c (iscsi tcp)

Vulnerability analysis

The iSCSI initiator's Data-In handler copies incoming target data into a command's scatterlist without verifying that the command is actually a READ operation. For WRITE commands, the scatterlist contains the data the initiator intends to send, not a receive buffer. A malicious target can exploit this by sending a Data-In PDU with an ITT matching an outstanding WRITE, causing the initiator to overwrite its own write buffer — either the caller's pinned pages (O_DIRECT) or page cache pages (buffered I/O). The fix adds a direction check that rejects Data-In PDUs for any command not marked DMA_FROM_DEVICE, aligning the Data-In path with the existing R2T validation. The attack is reachable from any iSCSI target the initiator connects to, requiring no privileges on the initiator host.

03

BranchIntroducedFixed inPatch commit
5.102.6.295.10.27179991b770fc3
5.152.6.295.15.2228db1232945bc
6.12.6.296.1.18994e5bdd08e51
6.122.6.296.12.112e3b25bf2cf24
6.182.6.296.18.55ee56b5e18f56
6.62.6.296.6.158de96dc11aee0
7.22.6.297.2.924ffc919467d
mainline2.6.297.3bce07e2f37b5
cip/5.102.6.295.10.271-cip7879991b770fc3
cip/6.12.6.296.1.189-cip6194e5bdd08e51
cip/6.1-rt2.6.296.1.189-cip61-rt3294e5bdd08e51
cip/6.122.6.296.12.112-cip33e3b25bf2cf24

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.112-cip33
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)