KernelScan.io

HIGH Introduced in 5.4

drm AuxRead Overflow

CVE-2026-93067

CVSS 7.1 / 10.0 KernelScan AI

CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

01

In the Linux kernel, the following vulnerability has been resolved: drm/bridge: tc358767: clamp the reported AUX read size to the request tc_aux_transfer() clamps an AUX read to the payload limit: size_t size = min_t(size_t, DP_AUX_MAX_PAYLOAD_BYTES - 1, msg->size); After the transfer it replaces size with the byte count the controller reports in AUX_BYTES: if (size) size = FIELD_GET(AUX_BYTES, auxstatus); AUX_BYTES is GENMASK(15, 8), so it can be up to 255. Nothing clamps it back to the request. tc_aux_read_data() reads that many bytes into the 16-byte auxrdata stack buffer, then copies them into the caller buffer. A reported count of 255 makes the read run to 256 bytes and overruns both. The controller should never report more than it was asked to transfer, so this is defense in depth rather than a live hole. The reported count is only lightly trusted, and the check is cheap. Clamp it back to the request, the same way ti-sn65dsi86 does in commit aca58eac52b8 ("drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer").

02

Engine v0.6.0

Risk summary

A stack buffer overflow in the TC358767 DisplayPort bridge driver can be triggered when the bridge controller reports more AUX read bytes than were requested. An attacker with physical access to the DisplayPort port could connect a malicious device that sends an oversized AUX response, corrupting kernel stack memory and potentially achieving code execution or crashing the kernel. Products without this specific bridge chip are unaffected.

Affecteddrivers/gpu/drm/bridge/tc358767.c (drm/bridge)

Vulnerability analysis

After completing a DisplayPort AUX channel read transfer, the TC358767 bridge driver replaces the originally requested byte count with the byte count reported by the bridge controller in a status register. That reported count can be up to 255, but the driver reads the data into a 16-byte stack buffer and then copies it into the caller's buffer — if the controller reports more bytes than were requested, both buffers are overrun. The fix clamps the reported count to the minimum of the original request size and the controller-reported value, ensuring the read never exceeds what was asked for. The commit notes this is defense in depth since a well-behaved controller should never over-report, but the register field is only lightly trusted. Exploitation requires a system equipped with the TC358767 bridge chip and physical access to the DisplayPort connector to attach a malicious device that sends an oversized AUX response.

03

BranchIntroducedFixed inPatch commit
5.105.45.10.270ebf00c51c9ac
5.155.45.15.221424b762cc26d
6.15.46.1.188dd6274706bec
6.125.46.12.11033c0b072e31d
6.185.46.18.5257c567e0e8aa
6.65.46.6.157982caa744fce
7.25.47.2.69ff718df5473
mainline5.47.3ec6444a00c49
cip/5.105.45.10.271-cip78ebf00c51c9ac
cip/6.15.46.1.189-cip61dd6274706bec
cip/6.1-rt5.46.1.189-cip61-rt32dd6274706bec
cip/6.125.46.12.111-cip3233c0b072e31d

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)