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

CVE-2026-23558

Published: 2026-05-19 14:16:39
Last Modified: 2026-05-19 18:55:20

Description

The adjustments made for XSA-379 as well as those subsequently becoming XSA-387 still left a race window, when a HVM or PVH guest does a grant table version change from v2 to v1 in parallel with mapping the status page(s) via XENMEM_add_to_physmap. Some of the status pages may then be freed while mappings of them would still be inserted into the guest's secondary (P2M) page tables.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:o:xen:xen:*:*:*:*:*:*:*:* - VULNERABLE
Xen Hypervisor (需参考 XSA-486 获取具体受影响版本列表)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <xenctrl.h> #include <pthread.h> #include <stdio.h> // Conceptual Proof of Concept for CVE-2026-23558 // This code simulates the race condition between grant table version change // and status page mapping in a Xen guest. void* change_grant_version(void* arg) { // Attempt to switch grant table version from v2 to v1 // System call: GNTTABOP_set_version printf("[+] Thread 1: Switching grant table version to v1...\n"); // xc_gnttab_set_version(xc_handle, 1); return NULL; } void* map_status_page(void* arg) { // Attempt to map status pages via XENMEM_add_to_physmap // This must run in parallel with the version change printf("[+] Thread 2: Mapping status pages via add_to_physmap...\n"); // xc_domain_memory_map(xc_handle, ...); return NULL; } int main() { pthread_t t1, t2; printf("[*] Starting PoC for CVE-2026-23558...\n"); // Create threads to trigger the race window pthread_create(&t1, NULL, change_grant_version, NULL); pthread_create(&t2, NULL, map_status_page, NULL); pthread_join(t1, NULL); pthread_join(t2, NULL); printf("[*] Exploit attempt finished.\n"); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-23558", "sourceIdentifier": "[email protected]", "published": "2026-05-19T14:16:38.960", "lastModified": "2026-05-19T18:55:19.793", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "The adjustments made for XSA-379 as well as those subsequently becoming\nXSA-387 still left a race window, when a HVM or PVH guest does a grant\ntable version change from v2 to v1 in parallel with mapping the status\npage(s) via XENMEM_add_to_physmap. Some of the status pages may then be\nfreed while mappings of them would still be inserted into the guest's\nsecondary (P2M) page tables."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.1, "impactScore": 6.0}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-362"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:xen:xen:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.0.0", "matchCriteriaId": "3E095C1C-0DC6-4380-9333-477B13273E9E"}]}]}], "references": [{"url": "https://xenbits.xenproject.org/xsa/advisory-486.html", "source": "[email protected]", "tags": ["Mitigation", "Patch", "Vendor Advisory"]}, {"url": "http://www.openwall.com/lists/oss-security/2026/04/28/13", "source": "af854a3a-2127-422b-91ae-364da2661108", "tags": ["Mailing List", "Mitigation", "Patch", "Third Party Advisory"]}, {"url": "http://xenbits.xen.org/xsa/advisory-486.html", "source": "af854a3a-2127-422b-91ae-364da2661108", "tags": ["Mitigation", "Patch", "Vendor Advisory"]}]}}