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

CVE-2026-43440

Published: 2026-05-08 15:16:56
Last Modified: 2026-05-21 17:18:45
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: net/mana: Null service_wq on setup error to prevent double destroy In mana_gd_setup() error path, set gc->service_wq to NULL after destroy_workqueue() to match the cleanup in mana_gd_cleanup(). This prevents a use-after-free if the workqueue pointer is checked after a failed setup.

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:7.0:rc2:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:* - VULNERABLE
Linux Kernel (修复前版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * Conceptual Proof of Concept for CVE-2026-43440 * This snippet demonstrates the logic flaw in mana_gd_setup. * Triggering the error path leads to UAF in cleanup. */ #include <linux/module.h> #include <linux/workqueue.h> struct mock_gc { struct workqueue_struct *service_wq; }; // Simulating the vulnerable cleanup function void mana_gd_cleanup(struct mock_gc *gc) { if (gc->service_wq) { destroy_workqueue(gc->service_wq); gc->service_wq = NULL; } } // Simulating the vulnerable setup function int mana_gd_setup(struct mock_gc *gc) { gc->service_wq = alloc_workqueue("mana_service", 0, 0); if (!gc->service_wq) return -ENOMEM; // Simulate a setup error occurring after allocation // VULNERABILITY: The code destroys the queue but fails to set gc->service_wq to NULL destroy_workqueue(gc->service_wq); return -EINVAL; // Return error status } // Trigger logic int trigger_vulnerability(void) { struct mock_gc *gc = kzalloc(sizeof(*gc), GFP_KERNEL); if (!gc) return -ENOMEM; // Step 1: Call setup, which fails and frees the workqueue if (mana_gd_setup(gc) != 0) { printk(KERN_INFO "Setup failed, workqueue destroyed but pointer not NULLed.\n"); } // Step 2: Call cleanup // Since gc->service_wq is not NULL, it attempts to destroy the already freed queue -> UAF mana_gd_cleanup(gc); kfree(gc); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43440", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-08T15:16:56.420", "lastModified": "2026-05-21T17:18:44.793", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/mana: Null service_wq on setup error to prevent double destroy\n\nIn mana_gd_setup() error path, set gc->service_wq to NULL after\ndestroy_workqueue() to match the cleanup in mana_gd_cleanup().\nThis prevents a use-after-free if the workqueue pointer is checked\nafter a failed setup."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "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}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-416"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.18.16", "versionEndExcluding": "6.18.19", "matchCriteriaId": "0CED11FB-4FAA-4224-93EC-23FC2358D4C7"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.19.6", "versionEndExcluding": "6.19.9", "matchCriteriaId": "2CFC1CE8-19E1-4AFC-BF52-43BDD2561EE6"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*", "matchCriteriaId": "4AE85AD8-4641-4E7C-A2F4-305E2CD9EE64"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*", "matchCriteriaId": "F666C8D8-6538-46D4-B318-87610DE64C34"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/59489ce60d7412ed82fb1d8002faa3102dcd4916", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/6c92392602b451e3869f15ab685f8f650e942b13", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/87c2302813abc55c46485711a678e3c312b00666", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}