Linux Kernel up to 7.3-rc1 nvmet-tcp nvmet_tcp_try_recv_pdu out-of-bounds write

| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 9.5 | $5k-$25k | 0.00 |
Summary
A vulnerability, which was classified as very critical, has been found in Linux Kernel up to 7.3-rc1. Affected by this issue is the function nvmet_tcp_try_recv_pdu of the component nvmet-tcp. The manipulation leads to out-of-bounds write.
This vulnerability is documented as CVE-2026-89969. The attack can be initiated remotely. There is not any exploit available.
It is advisable to upgrade the affected component.
Details
A vulnerability was found in Linux Kernel up to 7.3-rc1. It has been rated as very critical. This issue affects the function nvmet_tcp_try_recv_pdu of the component nvmet-tcp. The manipulation with an unknown input leads to a out-of-bounds write vulnerability. Using CWE to declare the problem leads to CWE-787. The product writes data past the end, or before the beginning, of the intended buffer. Impacted is confidentiality, integrity, and availability. The summary by CVE is:
In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: fix out-of-bounds write when receiving an over-long PDU nvmet_tcp_try_recv_pdu() reads a PDU header into the fixed 128-byte queue->pdu union, then computes the remaining payload length as queue->left = hdr->hlen - queue->offset + hdgst; and reads that many more bytes into &queue->pdu + queue->offset, without ever bounding the result against sizeof(queue->pdu). A struct nvme_tcp_icreq_pdu is itself 128 bytes, exactly the size of the union. Once a header digest has been negotiated (hdgst = 4), a second ICReq passes the hlen == nvmet_tcp_pdu_size() check but yields queue->left = 128 - 8 + 4 = 124, so bytes 8..132 are written into the 128-byte buffer -- 4 bytes past its end, over queue->hdr_digest and queue->data_digest. Those bytes are attacker-controlled (an ICReq carries no digest), and the duplicate ICReq is only rejected later, after the overflow. A remote unauthenticated host can thus corrupt kernel memory adjacent to the receive buffer. Reject any PDU whose declared length would read past the end of queue->pdu before the second recv.
It is possible to read the advisory at git.kernel.org. The identification of this vulnerability is CVE-2026-89969 since 09/11/2026. The exploitation is known to be easy. The attack may be initiated remotely. No form of authentication is needed for a successful exploitation. Technical details of the vulnerability are known, but there is no available exploit. The pricing for an exploit might be around USD $5k-$25k at the moment (estimation calculated on 09/16/2026).
Upgrading to version 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, 6.18.51, 7.2.5 or 7.3-rc2 eliminates this vulnerability. Applying the patch a3f0bcfbaf3312a5754d1ce020a07d394669eb25/4f84d42c53c49557fb1ef285c683b0a81b576c74/58dc6035b79c4c73c0cbf9ec9f68a7f117b2b3e6/cf5f39d2b58f97e0cd1829c4a6aeef17f1607cca/3a385e0c39efbe34db8edd95900c123113ae3450/dbc4acbdb3ca8c81441368ad7409b8f77d4de8f6/d95d342bc0ea82dc79e6362b2f1f997431750e4c/14cc5a7e77731497d5bea70f3bb05df7eda982e4 is able to eliminate this problem. The best possible mitigation is suggested to be upgrading to the latest version.
Be aware that VulDB is the high quality source for vulnerability data.
Product
Type
Vendor
Name
Version
- 5.10.269
- 5.15.220
- 6.1.187
- 6.6.156
- 6.12.109
- 6.18.0
- 6.18.1
- 6.18.2
- 6.18.3
- 6.18.4
- 6.18.5
- 6.18.6
- 6.18.7
- 6.18.8
- 6.18.9
- 6.18.10
- 6.18.11
- 6.18.12
- 6.18.13
- 6.18.14
- 6.18.15
- 6.18.16
- 6.18.17
- 6.18.18
- 6.18.19
- 6.18.20
- 6.18.21
- 6.18.22
- 6.18.23
- 6.18.24
- 6.18.25
- 6.18.26
- 6.18.27
- 6.18.28
- 6.18.29
- 6.18.30
- 6.18.31
- 6.18.32
- 6.18.33
- 6.18.34
- 6.18.35
- 6.18.36
- 6.18.37
- 6.18.38
- 6.18.39
- 6.18.40
- 6.18.41
- 6.18.42
- 6.18.43
- 6.18.44
- 6.18.45
- 6.18.46
- 6.18.47
- 6.18.48
- 6.18.49
- 6.18.50
- 7.2.0
- 7.2.1
- 7.2.2
- 7.2.3
- 7.2.4
- 7.3-rc1
License
Website
- Vendor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Reliability: 🔍
CVSSv3
VulDB Meta Base Score: 10.0VulDB Meta Temp Score: 9.5
VulDB Base Score: 10.0
VulDB Temp Score: 9.5
VulDB Vector: 🔒
VulDB Reliability: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Reliability: 🔍
Exploiting
Class: Out-of-bounds writeCWE: CWE-787 / CWE-119
CAPEC: 🔒
ATT&CK: 🔒
Physical: No
Local: No
Remote: Yes
Availability: 🔒
Status: Not defined
Price Prediction: 🔍
Current Price Estimation: 🔒
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔒
Upgrade: Kernel 5.10.270/5.15.221/6.1.188/6.6.157/6.12.110/6.18.51/7.2.5/7.3-rc2
Patch: a3f0bcfbaf3312a5754d1ce020a07d394669eb25/4f84d42c53c49557fb1ef285c683b0a81b576c74/58dc6035b79c4c73c0cbf9ec9f68a7f117b2b3e6/cf5f39d2b58f97e0cd1829c4a6aeef17f1607cca/3a385e0c39efbe34db8edd95900c123113ae3450/dbc4acbdb3ca8c81441368ad7409b8f77d4de8f6/d95d342bc0ea82dc79e6362b2f1f997431750e4c/14cc5a7e77731497d5bea70f3bb05df7eda982e4
Timeline
09/11/2026 CVE reserved09/16/2026 Advisory disclosed
09/16/2026 VulDB entry created
09/16/2026 VulDB entry last update
Sources
Vendor: kernel.orgAdvisory: git.kernel.org
Status: Confirmed
CVE: CVE-2026-89969 (🔒)
GCVE (CVE): GCVE-0-2026-89969
GCVE (VulDB): GCVE-100-405791
Entry
Created: 09/16/2026 14:58Changes: 09/16/2026 14:58 (59)
Complete: 🔍
Cache ID: 216::103
Be aware that VulDB is the high quality source for vulnerability data.
No comments yet. Languages: en.
Please log in to comment.