Security Vulnerability Report
中文
CVE-2026-43274 CVSS 8.4 HIGH

CVE-2026-43274

Published: 2026-05-06 12:16:49
Last Modified: 2026-05-08 19:31:52
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: mailbox: mchp-ipc-sbi: fix out-of-bounds access in mchp_ipc_get_cluster_aggr_irq() The cluster_cfg array is dynamically allocated to hold per-CPU configuration structures, with its size based on the number of online CPUs. Previously, this array was indexed using hartid, which may be non-contiguous or exceed the bounds of the array, leading to out-of-bounds access. Switch to using cpuid as the index, as it is guaranteed to be within the valid range provided by for_each_online_cpu().

CVSS Details

CVSS Score
8.4
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/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
Linux Kernel < commit 0442b6229e2e
Linux Kernel < commit 95438699c929
Linux Kernel < commit f7c330a8c83c

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * PoC Concept for CVE-2026-43274 * This demonstrates the logic error in indexing the cluster_cfg array. * Requires a kernel environment with the vulnerable driver and specific hardware topology. */ #include <stdio.h> #include <stdlib.h> // Simulating the vulnerable logic void vulnerable_logic(int *cluster_cfg, int num_cpus, int hartid) { // Vulnerability: using hartid directly as index // If hartid (e.g., 4) >= num_cpus (e.g., 4), this is OOB. printf("Accessing index %d (hartid) in array of size %d\n", hartid, num_cpus); int val = cluster_cfg[hartid]; // Out-of-bounds access printf("Value: %d\n", val); } // Simulating the fixed logic void fixed_logic(int *cluster_cfg, int num_cpus, int cpuid) { // Fix: using cpuid from for_each_online_cpu() if (cpuid < num_cpus) { printf("Accessing index %d (cpuid) in array of size %d\n", cpuid, num_cpus); int val = cluster_cfg[cpuid]; // Safe access printf("Value: %d\n", val); } } int main() { int num_online_cpus = 4; int *cluster_cfg = (int *)malloc(num_online_cpus * sizeof(int)); // Scenario: Hart IDs are non-contiguous, e.g., 0, 1, 4, 5 int hartid = 4; printf("--- Triggering Vulnerable Logic ---\n"); vulnerable_logic(cluster_cfg, num_online_cpus, hartid); printf("\n--- Triggering Fixed Logic (mapped cpuid) ---\n"); // Assuming hartid 4 maps to cpuid 2 in the topology int cpuid = 2; fixed_logic(cluster_cfg, num_online_cpus, cpuid); free(cluster_cfg); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43274", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-06T12:16:48.680", "lastModified": "2026-05-08T19:31:52.370", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmailbox: mchp-ipc-sbi: fix out-of-bounds access in mchp_ipc_get_cluster_aggr_irq()\n\nThe cluster_cfg array is dynamically allocated to hold per-CPU\nconfiguration structures, with its size based on the number of online\nCPUs. Previously, this array was indexed using hartid, which may be\nnon-contiguous or exceed the bounds of the array, leading to\nout-of-bounds access.\nSwitch to using cpuid as the index, as it is guaranteed to be within\nthe valid range provided by for_each_online_cpu()."}], "metrics": {"cvssMetricV31": [{"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.4, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.5, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-125"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.14", "versionEndExcluding": "6.18.16", "matchCriteriaId": "F818934F-3A6B-46F0-8626-9B45FC127C07"}, {"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/0442b6229e2eedc95a6d3d18ce75dec7f5b5377c", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/95438699c92947155823dcd3918049a07f3cd867", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/f7c330a8c83c9b0332fd524097eaf3e69148164d", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}