* [CVE-2026-72084][IMPORTANT] scsi: target: Bound PR-OUT TransportID parsing to the received buffer
@ 2026-08-15 10:06 AL-KERNEL
0 siblings, 0 replies; only message in thread
From: AL-KERNEL @ 2026-08-15 10:06 UTC (permalink / raw)
To: kernel-cve
CVE: CVE-2026-72084
Priority: IMPORTANT
AL-KERNEL base severity: IMPORTANT
KPANIC flag: YES
Patch: scsi: target: Bound PR-OUT TransportID parsing to the received buffer
Commit: 842248047ef28dbf3b3f7f49a0ec315054d4dab8
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=842248047ef28dbf3b3f7f49a0ec315054d4dab8
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-72084
Analysis date: Sat, 15 Aug 2026 06:06:46 -0400
ActionableScore: 8
ActionableScore lower bound: 7
Actionable bucket: Strong Important candidate / Actionable Moderate at minimum
Manual review required: YES
Summary:
A malformed iSCSI PR OUT TransportID can make the SCSI target parser read beyond the received parameter buffer, causing a kernel oops and possible limited corruption concern from network or fabric initiator input.
======================================================================
ABOUT THIS REPORT
======================================================================
The original Linux kernel CVE announcement for CVE-2026-72084 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-72084
The original announcement does not normally provide a security severity
estimate, CVSS assessment, or enough information to determine whether the
reported kernel bug represents a practically relevant security issue.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin. It combines
an autonomous classifier with LLM-assisted technical analysis and a
separate ActionableScore mechanism.
The purpose of this report is to prioritize Linux kernel CVEs before
manual review, identify cases that require prompt investigation, and
support automatic closure of issues that are unlikely to have meaningful
security impact.
Published priority for this report: IMPORTANT
Manual review required: YES
A detailed explanation of the methodology and priority rules is included
at the end of this message.
======================================================================
AL-KERNEL CLASSIFICATION RESULT
======================================================================
CVE-2026-72084 IMPORTANT CHECK WITH IMPACT FROM ORIG NN LOW Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H';CWE-125;*CWE-787;*CWE-20;CWE-170;Other CVSS 'AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:H';BEST CVSS score: '8.1';DESCR 'An out of bounds read in the SCSI target PR OUT TransportID parser can occur because the iSCSI parser scanned for the ,i,0x separator without knowing the received buffer length. A remote or fabric connected initiator can submit a malformed TransportID without a separator or NUL terminator, making strstr or later string handling read past the PR OUT parameter buffer and potentially reach a vmalloc guard page. This can cause a kernel oops and denial of service. The code path is reachable through devices exported via an iSCSI TPG and can also matter for guest to host paths such as vhost-scsi. For the CVSS the PR:N is used in the paranoid score because an exposed iSCSI target can be attacked by a network initiator without local privileges on the host, although practical deployments often require access to a storage or trusted internal network. Impact is at least denial of service via kernel crash. In the worst still defensible case, the unbounded scan followed by writes through the discovered separator pointer makes memory corruption concerns plausible enough for manual review.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Strong Important candidate / Actionable Moderate at minimum (with actual score 8) YES WRITE KASAN OOB INIT ERRORPATH HARDWARE KPANIC KPANIC INCREASED_TO_HIGH_BASED_ON_GUESSCVSS NO NO checked
======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================
ActionableScore=8
ActionableScoreLower=7
## 1. ActionableScore
* Conservative score: 7
* Paranoid score: 8
* Final recommended bucket: **Strong Important candidate / Actionable Moderate at minimum**::
## 2. Signal breakdown
Conservative scoring:
* Remote reachable / network-triggerable: +2
Reachable by a fabric initiator sending PR OUT to a device exported through an iSCSI TPG.
* Memory corruption, weak/indirect corruption candidate: +1
Primary primitive is OOB read, but the old parser can also use an unbounded search result for in-buffer mutation such as separator termination and ISID lowercasing. This is not a proven arbitrary write, so only weak corruption is counted.
* Reliable kernel crash / strong DoS: +1
Commit explicitly describes KASAN vmalloc-out-of-bounds in strstr and oops when the parameter list spans multiple pages and reaches a vmalloc guard page.
* Confidentiality impact plausible: +1
The unbounded strstr and old unbounded %s error logging can read past the received buffer. This is not a strong info leak primitive, but limited unintended read exposure is plausible.
* Availability impact realistic: +1
The issue can cause a kernel oops in a storage target path from malformed initiator input. This is a realistic host availability impact, not just a warning.
* Important filesystem/storage path: +1
This is in Linux SCSI target persistent reservation handling, including iSCSI target and vhost-scsi exposure.
Paranoid additional signal:
* Integrity impact plausible: +1
In the worst still-defensible interpretation, an unbounded separator search followed by writes through the returned pointer may create a limited corruption concern beyond pure OOB read. This is not scored as strong arbitrary write.
No score added for:
* Strong LPE plausibility: +0
No attacker-controlled reclaim, arbitrary write, callback control, refcount takeover, or demonstrated privilege escalation path is shown.
* Hard race penalty: +0
This is malformed input parsing, not a timing race.
* Requires admin/root penalty: +0
The attacker is an initiator or guest/fabric endpoint, not necessarily host root.
Call-site confidence: high. The patch shows both relevant callers passing the received buffer length into target_parse_pr_out_transport_id().
## 3. Reachability analysis
The bug can be triggered by an initiator able to send a malformed SCSI Persistent Reserve OUT TransportID to a target device exported through an iSCSI TPG. The commit also states that the path can be reached through any fabric that delivers PR OUT to such a device, including a guest via vhost-scsi.
In typical deployments, iSCSI targets are not public Internet services and are usually limited to storage or data-center networks. However, once an attacker has network or fabric access as an initiator, no host-local privileges are required. Container or namespace behavior is less central here than fabric exposure, but vhost-scsi makes guest-to-host relevance important.
The path is not default-enabled on every Linux host, but it is a real storage target path and should not be treated as a rare debug-only configuration.
## 4. Severity interpretation
This is stronger than an ordinary Moderate because it is remotely or fabric reachable and has a demonstrated kernel OOB read leading to oops. The realistic impact is remote or guest-triggered DoS against a configured SCSI/iSCSI target.
The theoretical memory corruption concern is weaker than a proven arbitrary write or UAF exploit. The patch supports manual-review concern because the unbounded scan result influenced later string mutation and one-past descriptor handling, but it does not demonstrate reliable privilege escalation.
Overall this is an Actionable Moderate at minimum and a Strong Important candidate for environments exposing iSCSI target or vhost-scsi to less trusted initiators.
## 5. One-sentence report phrase
A malformed iSCSI PR OUT TransportID can make the SCSI target parser read beyond the received parameter buffer, causing a kernel oops and possible limited corruption concern from network or fabric initiator input.
## 6. Manual review recommendation
MANUAL CHECK REQUIRED
Reason: network/fabric reachability, demonstrated OOB read with kernel oops, storage target exposure, and a plausible but not fully proven corruption concern make this unsuitable for auto-close.
======================================================================
UPSTREAM PATCH SUMMARY
======================================================================
Patch: scsi: target: Bound PR-OUT TransportID parsing to the received buffer
Commit: 842248047ef28dbf3b3f7f49a0ec315054d4dab8
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=842248047ef28dbf3b3f7f49a0ec315054d4dab8
Commit description:
core_scsi3_decode_spec_i_port() and core_scsi3_emulate_register_and_move()
hand the raw PERSISTENT RESERVE OUT parameter buffer to
target_parse_pr_out_transport_id() without telling it how many bytes are
valid. For an iSCSI TransportID (FORMAT CODE 01b),
iscsi_parse_pr_out_transport_id() locates the ",i,0x" ISID separator with
an unbounded strstr() (and on the error path prints the name with a further
unbounded "%s"). An initiator can submit a TransportID whose iSCSI name
contains neither a ",i,0x" substring nor a NUL terminator, filling the
parameter list to its end, so the scan runs off the end of the buffer.
When the parameter list spans more than one page the buffer is a multi-page
vmap (transport_kmap_data_sg()), so the over-read walks into the trailing
vmalloc guard page and oopses (KASAN: vmalloc-out-of-bounds in strstr). It
is reachable by any fabric that delivers a PR OUT to a device exported
through an iSCSI TPG, including a guest via vhost-scsi.
Pass the number of received bytes down to the parser and validate the iSCSI
TransportID's own self-described length (ADDITIONAL LENGTH + 4) once, up
front: reject it if it is below the spc4r17 minimum or larger than the
received buffer, then bound the separator search, the ISID walk and the
name copy by that length. This is the length check the callers already
perform after the parse (core_scsi3_decode_spec_i_port() compares tid_len
against tpdl, core_scsi3_emulate_register_and_move() validates it against
data_length), moved ahead of the scan. Also drop the unbounded "%s" of the
unterminated name.
Add per-format explicit name-length checks before copying into i_str,
rather than silently truncating with min_t: for FORMAT CODE 00b reject if
the descriptor body (tid_len - 4 bytes) cannot fit in
i_str[TRANSPORT_IQN_LEN]; for FORMAT CODE 01b reject if the name portion
(from &buf[4] up to the separator) cannot fit. Both checks make the bounds
intent explicit at each format branch.
While here, also reject a FORMAT CODE 01b TransportID whose ",i,0x"
separator sits at the very end of the descriptor: that leaves an empty ISID
and points the returned port nexus pointer at buf + tid_len, one past the
descriptor, which the registration code (__core_scsi3_locate_pr_reg(),
__core_scsi3_alloc_registration()) then dereferences as the ISID string --
the same over-read of the parameter buffer for a malformed descriptor.
Fixes: c66ac9d ("[SCSI] target: Add LIO target core v4.0.0-rc6")
Cc: [email protected]
Signed-off-by: Bryam Vargas <[email protected]>
Reviewed-by: John Garry <[email protected]>
Reviewed-by: David Disseldorp <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Martin K. Petersen <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Changed files:
drivers/target/target_core_fabric_lib.c
drivers/target/target_core_internal.h
drivers/target/target_core_pr.c
Diff excerpt:
Not included in this email. See the upstream URL for the full patch.
Full patch:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=842248047ef28dbf3b3f7f49a0ec315054d4dab8
======================================================================
DETAILED REPORT METHODOLOGY
======================================================================
The original Linux kernel CVE announcement for CVE-2026-72084 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-72084
The original CVE announcement normally does not include a security-level
estimate. In particular, it may not contain a CVSS assessment, an impact
level, or enough information to determine whether the reported bug is a
practically relevant security issue. One purpose of this parallel CVE list
is to provide that missing technical and prioritization information.
The original goal of the AL-KERNEL project was to prioritize Linux kernel
CVE analysis automatically before manual review. The system can also help
identify non-security issues that may be suitable for automatic closure.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin.
The first analysis stage combines an autonomous classifier with additional
LLM-based analysis. The autonomous classifier runs locally on a CPU and is
based on a backpropagation neural network. Together, these mechanisms
produce a technical vulnerability description, identify likely weakness
types, estimate CVSS severity, and provide input for ActionableScore.
Two CVSS estimates are retained because incomplete kernel vulnerability
information often permits more than one defensible interpretation:
Conservative CVSS vector: AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:H
The Best / paranoid CVSS vector: AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
The Best / paranoid CVSS score: 8.1
The conservative vector represents a lower-impact interpretation.
The Best/paranoid vector intentionally represents a plausible upper-bound
interpretation and should not automatically be treated as demonstrated
real-world impact.
CVSS may also need to be adjusted for a particular Linux deployment,
because actual reachability, privileges, enabled kernel configuration,
hardware, namespaces, exposed device nodes, and other environmental
conditions can differ significantly between systems.
A separate ActionableScore mechanism evaluates practical remediation
urgency. Its analysis may include reachability, attack prerequisites,
subsystem exposure, memory-corruption characteristics, denial-of-service
reliability, and possible confidentiality, integrity, or
privilege-escalation impact.
Conservative ActionableScore: 7
Paranoid ActionableScore: 8
The final base severity is taken directly from the second tab-separated
field of the AL-KERNEL classification result. ActionableScore does not
replace or independently override that final AL-KERNEL decision, and
if ActionableScore adjusted impact level of ALKERNEL, then you would see
self-readable flags above like INCREASED_TO_HIGH_BASED_ON_ACTIONABLESCOREHIGHEREQTHAN7.
For an AL-KERNEL result of MODERATE, this report uses the following
additional presentation split:
ActionableScore below 5 -> MODERATE REGULAR
ActionableScore 5 or more -> MODERATE 7.0
The distinction between MODERATE REGULAR and MODERATE 7.0 makes it
possible to identify Moderate issues that should receive manual analysis
and fixes before lower-priority MODERATE REGULAR issues. In many cases,
MODERATE REGULAR fixes may wait for a later rebase or routine update.
There is one override in which MODERATE REGULAR becomes MODERATE 7.0
even when the ActionableScore is below 5. When the AL-KERNEL result
contains the KPANIC flag, a MODERATE result is always presented as
MODERATE 7.0. The KPANIC flag selected with few regexps without
usage of AI at all, so it helps to detect cases when Kernel Crash happens
and similar (to filter False-Negative results from the LLM usage).
KPANIC indicates that a reliable kernel crash, kernel panic, or similarly
serious kernel availability impact was identified by the classification
workflow.
AL-KERNEL base severity for this report: IMPORTANT
KPANIC detected for this report: YES
Published priority for this report (same as in Subject): IMPORTANT
These results are intended to support engineering triage. They are
machine-generated estimates, and cases marked for manual review should
be validated by a human security engineer before final disposition.
For more info read docs linked from here: https://kernelcve.org/
(and you can submit you own patch there to generate such a report
for non-existant CVE-id yet).
Note that in many cases this AI tool selects higher severity, than
real is (means you can expect Importants instead of Moderate 7.0 or
Moderates 7.0 instead of regular Moderates). If you see such cases,
please use reply email interface to add additional manual analyses
info to this particular CVE.
And please, please, let me know when you see Lows instead of Importants
or Important instead of Low (because particular for such cases I
need to tune this AI tool to make it better for this one and next similar).
My contact email for such notifications is [email protected] (and both
send reply to CVE record itself too and see "reply" button below for howto reply).
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-15 10:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-15 10:06 [CVE-2026-72084][IMPORTANT] scsi: target: Bound PR-OUT TransportID parsing to the received buffer AL-KERNEL
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox