{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-43039",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2026-05-01T14:12:55.978Z",
        "datePublished": "2026-05-01T14:15:36.698Z",
        "dateUpdated": "2026-08-05T12:25:29.511Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T12:25:29.511Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: ti: icssg-prueth: fix missing data copy and wrong recycle in ZC RX dispatch\n\nemac_dispatch_skb_zc() allocates a new skb via napi_alloc_skb() but\nnever copies the packet data from the XDP buffer into it. The skb is\npassed up the stack containing uninitialized heap memory instead of\nthe actual received packet, leaking kernel heap contents to userspace.\n\nCopy the received packet data from the XDP buffer into the skb using\nskb_copy_to_linear_data().\n\nAdditionally, remove the skb_mark_for_recycle() call since the skb is\nbacked by the NAPI page frag allocator, not page_pool. Marking a\nnon-page_pool skb for recycle causes the free path to return pages to\na page_pool that does not own them, corrupting page_pool state.\n\nThe non-ZC path (emac_rx_packet) does not have these issues because it\nuses napi_build_skb() to wrap the existing page_pool page directly,\nrequiring no copy, and correctly marks for recycle since the page comes\nfrom page_pool_dev_alloc_pages()."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 9.8,
                        "baseSeverity": "CRITICAL"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:N - The vulnerable RX path is triggered by received network packets on a TI ICSSG Ethernet interface using AF_XDP zero-copy RX. In a reasonable deployment with the interface exposed to routed or bridged traffic, a remote sender can cause packets to enter this path.\nAC:L - Once AF_XDP zero-copy RX is active, packet reception deterministically reaches `emac_rx_packet_zc()` and `emac_dispatch_skb_zc()` without a race or special timing. The attacker can repeatedly send packets to trigger the missing data copy and bad recycle behavior.\nPR:N - The packet-processing path itself performs no authentication or privilege checks; packets are accepted by the NIC, DMA completion, IRQ, and NAPI RX path. In the network-attacker scenario, AF_XDP zero-copy is an existing operational configuration, so the attacker needs no local privileges.\nUI:N - Exploitation only requires packet delivery to the affected interface. No victim user action such as opening a file or mounting a filesystem is required.\nS:U - The vulnerable component and impacted resources are within the same kernel/network stack security authority. There is no VM, IOMMU, or separate security-domain boundary crossed.\nC:H - The missing `skb_copy_to_linear_data()` causes skb payload bytes passed up the stack to contain uninitialized kernel heap memory instead of packet data. The leak is packet-sized and repeatable, making high confidentiality impact defensible.\nI:H - The erroneous `skb_mark_for_recycle()` marks a non-page-pool skb for page_pool recycling, corrupting allocator/page_pool state. Such kernel memory-management corruption can plausibly be leveraged for arbitrary memory corruption or control-flow compromise.\nA:H - The page_pool state corruption can lead to invalid recycling, use-after-free, double-free, or other kernel memory-management failures. Even without full exploitation, repeated packet-triggered corruption can crash or destabilize the kernel."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/ethernet/ti/icssg/icssg_common.c"
                    ],
                    "versions": [
                        {
                            "version": "7a64bb388df3cf091afdd047c701039a13acd3b4",
                            "lessThan": "a968438d4fc17ee1dcdc3cfa490dcb5e7709cf76",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "7a64bb388df3cf091afdd047c701039a13acd3b4",
                            "lessThan": "5597dd284ff8c556c0b00f6a34473677426e3f81",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/ethernet/ti/icssg/icssg_common.c"
                    ],
                    "versions": [
                        {
                            "version": "6.19",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "6.19",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.19.12",
                            "lessThanOrEqual": "6.19.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.0",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.19",
                                    "versionEndExcluding": "6.19.12"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.19",
                                    "versionEndExcluding": "7.0"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/a968438d4fc17ee1dcdc3cfa490dcb5e7709cf76"
                },
                {
                    "url": "https://git.kernel.org/stable/c/5597dd284ff8c556c0b00f6a34473677426e3f81"
                }
            ],
            "title": "net: ti: icssg-prueth: fix missing data copy and wrong recycle in ZC RX dispatch",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}