UBUNTU-CVE-2024-26995
In the Linux kernel, the following vulnerability has been resolved: usb: typec: tcpm: Correct the PDO counting in pd_set Off-by-one errors happen because nr_snk_pdo and nr_src_pdo are incorrectly added one. The index of the loop is equal to the number of PDOs to be updated when leaving the loop and it doesn't need to be added one. When doing the power negotiation, TCPM relies on the "nr_snk_pdo" as the size of the local sink PDO array to match the Source capabilities of the partner port. If the off-by-one overflow occurs, a wrong RDO might be sent and unexpected power transfer might happen such as over voltage or over current (than expected). "nr_src_pdo" is used to set the Rp level when the port is in Source role. It is also the array size of the local Source capabilities when filling up the buffer which will be sent as the Source PDOs (such as in Power Negotiation). If the off-by-one overflow occurs, a wrong Rp level might be set and wrong Source PDOs will be sent to the partner port. This could potentially cause over current or port resets.
02 / AFFECTED SOFTWARE
Affected packages
29 explicit affected versions
1 explicit affected versions
8 explicit affected versions
7 explicit affected versions
26 explicit affected versions
37 explicit affected versions
10 explicit affected versions
10 explicit affected versions
13 explicit affected versions
13 explicit affected versions
1 explicit affected versions
37 explicit affected versions
6 explicit affected versions
8 explicit affected versions
4 explicit affected versions
8 explicit affected versions
23 explicit affected versions
7 explicit affected versions
10 explicit affected versions
8 explicit affected versions
3 explicit affected versions
33 explicit affected versions
16 explicit affected versions
4 explicit affected versions
12 explicit affected versions
38 explicit affected versions
51 explicit affected versions
13 explicit affected versions
10 explicit affected versions
10 explicit affected versions
13 explicit affected versions
1 explicit affected versions
10 explicit affected versions
7 explicit affected versions
8 explicit affected versions
8 explicit affected versions
21 explicit affected versions
6 explicit affected versions
13 explicit affected versions
12 explicit affected versions
7 explicit affected versions
12 explicit affected versions
5 explicit affected versions
26 explicit affected versions
2 explicit affected versions
1 explicit affected versions
2 explicit affected versions
8 explicit affected versions
23 explicit affected versions
5 explicit affected versions
3 explicit affected versions
26 explicit affected versions
12 explicit affected versions
44 explicit affected versions
2 explicit affected versions
4 explicit affected versions
4 explicit affected versions
16 explicit affected versions
9 explicit affected versions
12 explicit affected versions
13 explicit affected versions
5 explicit affected versions
7 explicit affected versions
7 explicit affected versions
10 explicit affected versions
14 explicit affected versions
6 explicit affected versions
18 explicit affected versions
3 explicit affected versions
16 explicit affected versions
43 explicit affected versions
9 explicit affected versions
2 explicit affected versions
11 explicit affected versions
35 explicit affected versions
12 explicit affected versions
7 explicit affected versions
6 explicit affected versions
12 explicit affected versions
50 explicit affected versions
12 explicit affected versions
27 explicit affected versions
12 explicit affected versions
7 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: usb: typec: tcpm: Correct the PDO counting in pd_set Off-by-one errors happen because nr_snk_pdo and nr_src_pdo are incorrectly added one. The index of the loop is equal to the number of PDOs to be updated when leaving the loop and it doesn't need to be added one. When doing the power negotiation, TCPM relies on the "nr_snk_pdo" as the size of the local sink PDO array to match the Source capabilities of the partner port. If the off-by-one overflow occurs, a wrong RDO might be sent and unexpected power transfer might happen such as over voltage or over current (than expected). "nr_src_pdo" is used to set the Rp level when the port is in Source role. It is also the array size of the local Source capabilities when filling up the buffer which will be sent as the Source PDOs (such as in Power Negotiation). If the off-by-one overflow occurs, a wrong Rp level might be set and wrong Source PDOs will be sent to the partner port. This could potentially cause over current or port resets.
05 / REFERENCES
Further evidence
- https://git.kernel.org/linus/c4128304c2169b4664ed6fb6200f228cead2ab70
- https://git.kernel.org/stable/c/c4128304c2169b4664ed6fb6200f228cead2ab70
- https://git.kernel.org/stable/c/f3da3192cdd3fefe213390e976eec424a8e270b5
- https://ubuntu.com/security/CVE-2024-26995
- https://ubuntu.com/security/notices/USN-6893-1
- https://ubuntu.com/security/notices/USN-6893-2
- https://ubuntu.com/security/notices/USN-6893-3
- https://ubuntu.com/security/notices/USN-6918-1
- https://www.cve.org/CVERecord?id=CVE-2024-26995