[<prev] [day] [month] [year] [list]
Message-ID: <2025022235-CVE-2025-21704-7d61@gregkh>
Date: Sat, 22 Feb 2025 10:42:36 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2025-21704: usb: cdc-acm: Check control transfer buffer size before access
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
usb: cdc-acm: Check control transfer buffer size before access
If the first fragment is shorter than struct usb_cdc_notification, we can't
calculate an expected_size. Log an error and discard the notification
instead of reading lengths from memory outside the received data, which can
lead to memory corruption when the expected_size decreases between
fragments, causing `expected_size - acm->nb_index` to wrap.
This issue has been present since the beginning of git history; however,
it only leads to memory corruption since commit ea2583529cd1
("cdc-acm: reassemble fragmented notifications").
A mitigating factor is that acm_ctrl_irq() can only execute after userspace
has opened /dev/ttyACM*; but if ModemManager is running, ModemManager will
do that automatically depending on the USB device's vendor/product IDs and
its other interfaces.
The Linux kernel CVE team has assigned CVE-2025-21704 to this issue.
Affected and fixed versions
===========================
Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.1.129 with commit 7828e9363ac4d23b02419bf2a45b9f1d9fb35646
Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.6.79 with commit 6abb510251e75f875797d8983a830e6731fa281c
Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.12.16 with commit f64079bef6a8a7823358c3f352ea29a617844636
Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.13.4 with commit 383d516a0ebc8641372b521c8cb717f0f1834831
Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.14-rc3 with commit e563b01208f4d1f609bcab13333b6c0e24ce6a01
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2025-21704
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
drivers/usb/class/cdc-acm.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/7828e9363ac4d23b02419bf2a45b9f1d9fb35646
https://git.kernel.org/stable/c/6abb510251e75f875797d8983a830e6731fa281c
https://git.kernel.org/stable/c/f64079bef6a8a7823358c3f352ea29a617844636
https://git.kernel.org/stable/c/383d516a0ebc8641372b521c8cb717f0f1834831
https://git.kernel.org/stable/c/e563b01208f4d1f609bcab13333b6c0e24ce6a01
Powered by blists - more mailing lists