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

CVE-2026-43310

Published: 2026-05-08 14:16:38
Last Modified: 2026-05-15 17:56:07
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: media: verisilicon: Avoid G2 bus error while decoding H.264 and HEVC For the i.MX8MQ platform, there is a hardware limitation: the g1 VPU and g2 VPU cannot decode simultaneously; otherwise, it will cause below bus error and produce corrupted pictures, even potentially lead to system hang. [ 110.527986] hantro-vpu 38310000.video-codec: frame decode timed out. [ 110.583517] hantro-vpu 38310000.video-codec: bus error detected. Therefore, it is necessary to ensure that g1 and g2 operate alternately. This allows for successful multi-instance decoding of H.264 and HEVC. To achieve this, g1 and g2 share the same v4l2_m2m_dev, and then the v4l2_m2m_dev can handle the scheduling.

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 (Fixed in commit 286d629d10640bc22f3bf46aa4f356eb7975e862)
Linux Kernel (Fixed in commit e0203ddf9af7c8e170e1e99ce83b4dc07f0cd765)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/ioctl.h> // Conceptual PoC to trigger the race condition // This code attempts to simulate concurrent decoding on g1 and g2 VPU void trigger_decode(int device_fd) { // Simulate sending a decode command to the VPU // In a real scenario, this involves setting up buffers and calling IOCTLs printf("Triggering decode on fd %d\n", device_fd); // ioctl(device_fd, VIDIOC_QBUF, ...); // ioctl(device_fd, VIDIOC_STREAMON, ...); } int main() { // Assume /dev/video0 is g1 and /dev/video1 is g2 on i.MX8MQ int g1_fd = open("/dev/video0", O_RDWR); int g2_fd = open("/dev/video1", O_RDWR); if (g1_fd < 0 || g2_fd < 0) { perror("Failed to open video devices"); return 1; } printf("Starting concurrent decode attack on VPU...\n"); // Fork to create simultaneous execution if (fork() == 0) { trigger_decode(g1_fd); // Child triggers g1 } else { trigger_decode(g2_fd); // Parent triggers g2 } // Wait for crash or timeout sleep(5); close(g1_fd); close(g2_fd); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43310", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-08T14:16:38.370", "lastModified": "2026-05-15T17:56:06.900", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: verisilicon: Avoid G2 bus error while decoding H.264 and HEVC\n\nFor the i.MX8MQ platform, there is a hardware limitation: the g1 VPU and\ng2 VPU cannot decode simultaneously; otherwise, it will cause below bus\nerror and produce corrupted pictures, even potentially lead to system hang.\n\n[ 110.527986] hantro-vpu 38310000.video-codec: frame decode timed out.\n[ 110.583517] hantro-vpu 38310000.video-codec: bus error detected.\n\nTherefore, it is necessary to ensure that g1 and g2 operate alternately.\nThis allows for successful multi-instance decoding of H.264 and HEVC.\n\nTo achieve this, g1 and g2 share the same v4l2_m2m_dev, and then the\nv4l2_m2m_dev can handle the scheduling."}], "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": "5.14", "versionEndExcluding": "6.19.6", "matchCriteriaId": "2890948B-368D-4087-9F41-F282960708C7"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/286d629d10640bc22f3bf46aa4f356eb7975e862", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/e0203ddf9af7c8e170e1e99ce83b4dc07f0cd765", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}