CVE-2026-18725
Description
AI_ONLY_REPORT package: iscsi-initiator-utils-6.2.1.11-0.git4b3e853.el10
Summary: Out-of-Bounds Write and Information Disclosure via Unvalidated
IPv6 Payload Length: crafted ICMPv6 Echo Requests can cause iscsiuio to
trust an inflated ipv6_plen larger than the actual received payload,
leading to MTU-bounded out-of-bounds reads and a potential one-byte
out-of-bounds write that may disclose data beyond the valid packet boundary.
Requirements to exploit: Adjacent-network access on the same L2 segment as
a system running iscsiuio on an interface that processes IPv6/NDP
traffic, plus the ability to send a crafted ICMPv6 Echo Request with a
forged IPv6.plen. No authentication or user interaction is required.
Component affected: iscsi-initiator-utils (iscsiuio):iscsiuio/src/uip/ipv6.c in ipv6_icmp_handle_echo_request() andipv6_insert_protocol_chksum().
Version affected: iscsi-initiator-utils-6.2.1.11-0.git4b3e853.el10 wheniscsiuio is processing IPv6/NDP traffic on a reachable interface.
Patch available: no released package fix established; proposed patch
included below
Version fixed: unknown
Upstream coordination: Not notified.
CVSS: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - 6.3 (MEDIUM)
AV:A - Reachability is limited to an attacker on the same L2 segment who
can send crafted IPv6/ICMPv6 traffic to the affected interface.
AC:L - The attack relies on forging IPv6.plen; no race or unusual
environment is needed beyond the vulnerable deployment.
PR:N - No privileges are required.
UI:N - No user interaction is required.
S:U - The impact remains within the iscsiuio process and its packet
buffer handling.
C:L - The reply/checksum path can read and potentially transmit data
beyond the valid packet boundary, but the demonstrated exposure is
MTU-bounded.
I:L - For odd forged lengths, the checksum path can write a single
padding byte past the valid protocol data, which may affect adjacent buffer
contents.
A:L - Invalid memory access may destabilize or crash the process, but
reliable high-impact denial of service is not established from the
available evidence.
Impact: Moderate. Under Red Hat's severity guidance, this is more
consistent with a flaw that can affect confidentiality, integrity, or
availability under constrained circumstances than with an Important issue.
The bug is unauthenticated and adjacent-network reachable, but the
currently supported outcome is MTU-bounded out-of-bounds access in a
deployment-dependent IPv6/NDP path, not easy remote system compromise or
clearly high-impact memory corruption.
Embargo: no
Reason: The currently supported impact is Moderate, exposure depends oniscsiuio processing IPv6 traffic on a reachable L2 segment, and operators
can reduce exposure operationally by isolating or disabling the affected
path.
Acknowledgement: Aisle Research
Vulnerability Details: In the ICMPv6 echo-reply path, the code reuses the
inbound ipv6_plen field when sizing the reply instead of clamping it to
the bytes actually received:
/* iscsiuio/src/uip/ipv6.c */
static void ipv6_icmp_handle_echo_request(struct ipv6_context *context)
{
...
ipv6_send(context, (u8_t *) icmp - (u8_t *) eth +
sizeof(struct ipv6_hdr) + HOST_TO_NET16(ipv6->ipv6_plen));
}
Later, checksum generation also trusts ipv6_plen for memory traversal,
and for odd lengths it writes a padding byte at ptr + protocol_data_len
before iterating over protocol_data_len bytes:
/* iscsiuio/src/uip/ipv6.c */
protocol_data_len = HOST_TO_NET16(ipv6->ipv6_plen);
...
if (protocol_data_len & 1) {
*((u8_t *) ptr + protocol_data_len) = 0;
protocol_data_len++;
}
for (i = 0; i < protocol_data_len / 2; i++) {
sum += HOST_TO_NET16(*ptr);
ptr++;
}
The available receive-side logic does not establish a payload-length bound
strong enough to eliminate this condition. uip_input() compares the IPv6
payload length against uip_len, but uip_len is treated as full frame
length in the observed path rather than the actual IPv6 payload length, andipv6_rx_packet() receives a len argument without using it to bound
parsing. A forged ipv6_plen can therefore exceed the real IPv6 payload
stored in the buffer. The available evidence supports MTU-bounded
out-of-bounds access in normal receive paths rather than the earlier
arbitrary 64KB worst case. The affected logic appears to be present in the
available 6.2.1.11 code base, but this report is scoped to the scanned SRPM
package.
Steps to reproduce:
- Build
iscsiuiowith ASAN enabled. - Run
iscsiuiowith IPv6/NDP active on a test interface. - From the same L2 segment, send an ICMPv6 Echo Request with
IPv6.plen
set larger than the actual payload bytes in the frame buffer; one tested
shape isplen=1491with an Ethernet frame size near 1500 bytes. - Observe the reply path: ASAN reports invalid access in
ipv6_insert_protocol_chksum()as the checksum walk reads past valid
packet data, odd lengths may also trigger a one-byte write, and reply
sizing is derived from the forgedipv6_plenrather than the actual
received payload size. Mitigation: Until a fix is available, keepiscsiuio-managed interfaces on
trusted L2 segments only. Where operationally acceptable, disable IPv6 on
those interfaces or filter ICMPv6 Echo Requests before they reachiscsiuio. Ifiscsiuiois not processing IPv6/NDP traffic, this specific
path is not reachable. Proposed Fix: Clamp the reply payload length to the actual received payload
derived fromcontext->ustack->uip_len, reject packets too short to
contain a complete ICMPv6 header, and rewriteipv6->ipv6_plenbefore
callingipv6_send().
diff --git a/iscsiuio/src/uip/ipv6.c b/iscsiuio/src/uip/ipv6.c
@@ -1100,6 +1100,8 @@ static void ipv6_icmp_handle_echo_request(struct
ipv6_context *context)
{
struct eth_hdr *eth =
(struct eth_hdr *)context->ustack->data_link_layer;
+ u16_t rx_total, rx_payload, hdr_plen, safe_plen;
+ u16_t l2_l3_len = sizeof(struct eth_hdr) + sizeof(struct ipv6_hdr);
struct ipv6_hdr *ipv6 =
(struct ipv6_hdr *)context->ustack->network_layer;
struct icmpv6_hdr *icmp = (struct icmpv6_hdr *)((u8_t *)ipv6 +
@@ -1126,8 +1128,20 @@ static void ipv6_icmp_handle_echo_request(struct
ipv6_context *context)
icmp->icmpv6_code = 0;
icmp->icmpv6_cksum = 0;
ILOG_DEBUG("IPv6: Send echo reply");
- ipv6_send(context, (u8_t *) icmp - (u8_t *) eth +
sizeof(struct ipv6_hdr) + HOST_TO_NET16(ipv6>ipv6_plen));
+
+ rx_total = context->ustack->uip_len;
+ if (rx_total <= l2_l3_len)
+ return;
+
+ rx_payload = rx_total - l2_l3_len;
+ hdr_plen = HOST_TO_NET16(ipv6->ipv6_plen);
+ safe_plen = (hdr_plen <= rx_payload) ? hdr_plen : rx_payload;
+ if (safe_plen < sizeof(struct icmpv6_hdr))
+ return;
+
+ ipv6->ipv6_plen = HOST_TO_NET16(safe_plen);
+ ipv6_send(context, l2_l3_len + safe_plen);
+
return;
}
This report was generated using AI technology. Always review AI-generated
content prior to use
Statement
Moderate: This flaw in iscsi-initiator-utils (specifically iscsiuio) allows an adjacent-network attacker to trigger out-of-bounds read and a potential one-byte write via crafted ICMPv6 Echo Requests. Exploitation requires iscsiuio to process IPv6/NDP traffic on a reachable interface. Red Hat products are affected when iscsiuio is configured to handle such traffic on an exposed network segment.
Mitigation
To mitigate this issue, ensure that `iscsiuio`-managed interfaces are restricted to trusted L2 network segments. If feasible for your operational environment, disable IPv6 on interfaces where `iscsiuio` is active and not strictly required to process IPv6 traffic. Alternatively, implement firewall rules to filter ICMPv6 Echo Requests before they reach the `iscsiuio` process on affected systems. Changes to network configurations may require a network service restart to take effect, which could temporarily impact network connectivity.
Common Vulnerability Scoring System (CVSS) Score Details
Info alert:Important note
CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).
The following CVSS metrics and score provided are preliminary and subject to review.
CVSS v3 Score Breakdown
| Red Hat | NVD | cve.org | |
|---|---|---|---|
| Base Score | 6.3 | N/A | N/A |
| Attack Vector | Adjacent Network | N/A | N/A |
| Attack Complexity | Low | N/A | N/A |
| Privileges Required | None | N/A | N/A |
| User Interaction | None | N/A | N/A |
| Scope | Unchanged | N/A | N/A |
| Confidentiality | Low | N/A | N/A |
| Integrity Impact | Low | N/A | N/A |
| Availability Impact | Low | N/A | N/A |
Vector
Red Hat: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
Understanding the Weakness (CWE)
Integrity
Technical Impact: Modify Memory; Execute Unauthorized Code or Commands
Write operations could cause memory corruption. In some cases, an adversary can modify control data such as return addresses in order to execute unexpected code.
Availability
Technical Impact: DoS: Crash, Exit, or Restart
Attempting to access out-of-range, invalid, or unauthorized memory could cause the product to crash.
Other
Technical Impact: Unexpected State
Subsequent write operations can produce undefined or unexpected results.
Acknowledgements
Red Hat would like to thank Keith Linneman (Linneman Labs) for reporting this issue.
Frequently Asked Questions
Not sure what something means? Check out our Security Glossary.
Want to get errata notifications? Sign up here.