Description
In the Linux kernel, the following vulnerability has been resolved: drm/dp/mst: fix OOB reads in remote DPCD/I2C sideband reply parsers drm_dp_sideband_parse_remote_dpcd_read() reads num_bytes from the raw message and then unconditionally does: memcpy(bytes, &raw->msg[idx], num_bytes); without checking that idx + num_bytes <= raw->curlen. raw->msg[] is 256 bytes; if a malicious or misbehaving MST hub sets num_bytes larger than the remaining payload, the memcpy reads past the received data into whatever follows in raw->msg[]. drm_dp_sideband_parse_remote_i2c_read_ack() has the same flaw (noted with a /* TODO check */ comment since the code was introduced). Fix both functions by using a single combined check (idx + num_bytes > curlen) before each memcpy. Since num_bytes is u8, it is always >= 0, so this strictly subsumes the simpler idx > curlen form and no separate step is needed. [added missing fixes tag]
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
ad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 185de1d74e658e2edb723ba76fa61903f77d8a68affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < d7b9b1e33b4ed8c48d4db6e6e21c257ebbbb2586affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < c2fbda0fe0163c55ba3820ee6cea0c6b43622edaaffectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 22d9f7fc1aaabaf73d5f30e8b0c9aa814ecd6ed2affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 04d953f50d61e542e94a5977822cc53735f8c0ceaffectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 533d9e2bede4aeefdc2a0561d7071cfede95958faffectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < e6ef5455b06cb4e5d181aabcd723791587c79f12affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 1a8f537f5a1eeac941f262fe73078d6b08ba83c0affected
Linux Linux
Default version status: affected
3.17affected0 to < 3.17unaffected5.10.266 to ≤ 5.10.*unaffected5.15.217 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/185de1d74e658e2edb723ba76fa61903f77d8a68 ↗
- https://git.kernel.org/stable/c/d7b9b1e33b4ed8c48d4db6e6e21c257ebbbb2586 ↗
- https://git.kernel.org/stable/c/c2fbda0fe0163c55ba3820ee6cea0c6b43622eda ↗
- https://git.kernel.org/stable/c/22d9f7fc1aaabaf73d5f30e8b0c9aa814ecd6ed2 ↗
- https://git.kernel.org/stable/c/04d953f50d61e542e94a5977822cc53735f8c0ce ↗
- https://git.kernel.org/stable/c/533d9e2bede4aeefdc2a0561d7071cfede95958f ↗
- https://git.kernel.org/stable/c/e6ef5455b06cb4e5d181aabcd723791587c79f12 ↗
- https://git.kernel.org/stable/c/1a8f537f5a1eeac941f262fe73078d6b08ba83c0 ↗