Security Vulnerability Report
中文
CVE-2026-43192 CVSS 5.5 MEDIUM

CVE-2026-43192

Published: 2026-05-06 12:16:38
Last Modified: 2026-05-11 20:36:40
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: dm mpath: Add missing dm_put_device when failing to get scsi dh name When commit fd81bc5cca8f ("scsi: device_handler: Return error pointer in scsi_dh_attached_handler_name()") added code to fail parsing the path if scsi_dh_attached_handler_name() failed with -ENOMEM, it didn't clean up the reference to the path device that had just been taken. Fix this, and steamline the error paths of parse_path() a little.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
Linux Kernel < commit 4aa5c37b7d8019f7296111c1add00e7214baae60
Linux Kernel < commit 787bd63ee661b0148ce8e1fde92b7afddd85c446

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * Conceptual PoC for CVE-2026-43192 * This code simulates the logic flow causing the reference leak. * Real exploitation requires a configured dm-mpath environment. */ #include <stdio.h> #include <stdlib.h> // Simulating kernel structures struct dm_dev { int ref_count; char name[32]; }; // Simulated kernel functions void dm_get_device(struct dm_dev *dev) { dev->ref_count++; printf("[+] dm_get_device called. Ref count: %d\n", dev->ref_count); } void dm_put_device(struct dm_dev *dev) { dev->ref_count--; printf("[-] dm_put_device called. Ref count: %d\n", dev->ref_count); } // Simulate scsi_dh_attached_handler_name returning -ENOMEM int scsi_dh_attached_handler_name() { printf("[!] scsi_dh_attached_handler_name failed (-ENOMEM)\n"); return -12; // -ENOMEM } // Vulnerable logic in parse_path void vulnerable_parse_path(struct dm_dev *path_dev) { dm_get_device(path_dev); // The vulnerable check: if this fails, cleanup is skipped if (scsi_dh_attached_handler_name() != 0) { // BUG: Missing dm_put_device(path_dev) here in the vulnerable version printf("[!] Error path taken, leaking device reference!\n"); return; } // Normal cleanup dm_put_device(path_dev); } int main() { struct dm_dev target = { .ref_count = 0, .name = "sda" }; printf("[*] Starting PoC for CVE-2026-43192\n"); printf("[*] Initial ref_count: %d\n", target.ref_count); // Trigger the vulnerability logic vulnerable_parse_path(&target); printf("[*] Final ref_count: %d\n", target.ref_count); if (target.ref_count > 0) { printf("[SUCCESS] Resource leaked! Reference count is non-zero.\n"); } else { printf("[FAIL] No resource leak detected.\n"); } return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43192", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-06T12:16:38.083", "lastModified": "2026-05-11T20:36:39.877", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndm mpath: Add missing dm_put_device when failing to get scsi dh name\n\nWhen commit fd81bc5cca8f (\"scsi: device_handler: Return error pointer in\nscsi_dh_attached_handler_name()\") added code to fail parsing the path if\nscsi_dh_attached_handler_name() failed with -ENOMEM, it didn't clean up\nthe reference to the path device that had just been taken. Fix this, and\nsteamline the error paths of parse_path() a little."}], "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: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.19", "versionEndExcluding": "6.19.6", "matchCriteriaId": "373EEEDA-FAA1-4FB4-B6ED-DB4DD99DBE67"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/4aa5c37b7d8019f7296111c1add00e7214baae60", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/787bd63ee661b0148ce8e1fde92b7afddd85c446", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}