Files
vuln-cve/data/2026/90xxx/CVE-2026-90591.json
T

134 lines
6.9 KiB
JSON

{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-90591",
"assignerOrgId": "e2e69745-5e70-4e92-8431-deb5529a81ad",
"state": "PUBLISHED",
"assignerShortName": "zephyr",
"dateReserved": "2026-09-12T18:04:47.355Z",
"datePublished": "2026-11-09T22:04:03.975Z",
"dateUpdated": "2026-11-12T17:21:49.759Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "e2e69745-5e70-4e92-8431-deb5529a81ad",
"shortName": "zephyr",
"dateUpdated": "2026-11-09T22:04:03.975Z"
},
"title": "NXP ENET-QOS Ethernet driver re-arms RX descriptors with a clobbered DMA buffer address on packet drop",
"descriptions": [
{
"lang": "en",
"value": "The NXP ENET-QOS Ethernet driver's receive work handler eth_nxp_enet_qos_rx() in drivers/ethernet/eth_nxp_enet_qos hands each processed descriptor back to the DMA by writing desc->read.control = rx_desc_refresh_flags, which sets OWN_FLAG and BUF1_ADDR_VALID_FLAG. RDES0 of a receive descriptor is the DMA buffer address in read format, but the hardware write-back aliases that word with the VLAN tag fields (or, for a context descriptor, the timestamp low word), so it is destroyed on every completion. The success path rewrites desc->read.buf1_addr before re-arming; the four drop paths — errored or non-first descriptor, net_pkt_rx_alloc() failure, invalid descriptor length, and net_pkt_get_frag() failure — did not, re-arming the ring slot with the write-back residue as its DMA target address.\n\nThe drop paths are driven entirely by received traffic and need no privilege or special configuration. With the defaults for this driver (CONFIG_NET_BUF_DATA_SIZE of 128 and 16 receive descriptors) a single full-size frame consumes twelve ring slots and twelve K_NO_WAIT fragment allocations, so a short burst of frames sent to the device exhausts the receive pools and reaches the allocation-failure paths; a frame with a receive error, or any frame whose first descriptor was already dropped, reaches the non-first-descriptor path.\n\nOnce a slot has been poisoned, the DMA writes the next frame received in that slot to an address derived from the frame's VLAN tag fields rather than to a receive buffer. On the supported MCX SoCs that address falls in flash or reserved space, so the transfer raises a fatal bus error that the driver only logs — there is no reset or recovery path — and reception stops permanently until the device is rebooted; where the write is silently discarded instead, the untouched buffer is later handed to the network stack with a length, delivering stale buffer contents as if they were a received frame. A single triggering event is enough to make the condition persistent, so an attacker able to send traffic to the device can permanently disable its network interface."
}
],
"affected": [
{
"vendor": "zephyrproject",
"product": "zephyr",
"collectionURL": "https://github.com/zephyrproject-rtos/zephyr",
"packageName": "zephyr",
"defaultStatus": "unaffected",
"programFiles": [
"drivers/ethernet/eth_nxp_enet_qos/eth_nxp_enet_qos.c",
"drivers/ethernet/eth_nxp_enet_qos/eth_nxp_enet_qos_mac.c"
],
"programRoutines": [
{
"name": "eth_nxp_enet_qos_rx"
}
],
"versions": [
{
"version": "4.2.0",
"status": "affected",
"versionType": "semver",
"lessThan": "4.3.2"
},
{
"version": "4.4.0",
"status": "affected",
"versionType": "semver",
"lessThan": "4.5.0"
}
]
}
],
"references": [
{
"url": "https://github.com/zephyrproject-rtos/zephyr/commit/9efd144a4ab0f37311f7b5e5ed0967f5a8d2f910",
"name": "Fix commit",
"tags": [
"patch"
]
},
{
"url": "https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-pm7x-98w8-92pm",
"name": "GHSA-pm7x-98w8-92pm"
}
],
"metrics": [
{
"format": "CVSS",
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
"baseScore": 7.5,
"baseSeverity": "HIGH"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"lang": "en",
"description": "memory-safety",
"cweId": "CWE-787",
"type": "CWE"
}
]
}
],
"x_generator": {
"engine": "cvelib 1.8.0"
}
},
"adp": [
{
"metrics": [
{
"other": {
"type": "ssvc",
"content": {
"timestamp": "2026-11-12T17:21:18.487341Z",
"id": "CVE-2026-90591",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
}
],
"title": "CISA ADP Vulnrichment",
"providerMetadata": {
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP",
"dateUpdated": "2026-11-12T17:21:49.759Z"
}
}
]
}
}