| From bippy-1.2.0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@kernel.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2025-37797: net_sched: hfsc: Fix a UAF vulnerability in class handling |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| net_sched: hfsc: Fix a UAF vulnerability in class handling |
| |
| This patch fixes a Use-After-Free vulnerability in the HFSC qdisc class |
| handling. The issue occurs due to a time-of-check/time-of-use condition |
| in hfsc_change_class() when working with certain child qdiscs like netem |
| or codel. |
| |
| The vulnerability works as follows: |
| 1. hfsc_change_class() checks if a class has packets (q.qlen != 0) |
| 2. It then calls qdisc_peek_len(), which for certain qdiscs (e.g., |
| codel, netem) might drop packets and empty the queue |
| 3. The code continues assuming the queue is still non-empty, adding |
| the class to vttree |
| 4. This breaks HFSC scheduler assumptions that only non-empty classes |
| are in vttree |
| 5. Later, when the class is destroyed, this can lead to a Use-After-Free |
| |
| The fix adds a second queue length check after qdisc_peek_len() to verify |
| the queue wasn't emptied. |
| |
| The Linux kernel CVE team has assigned CVE-2025-37797 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 5.4.293 with commit 28b09a067831f7317c3841812276022d6c940677 |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 5.10.237 with commit 39b9095dd3b55d9b2743df038c32138efa34a9de |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 5.15.181 with commit fcc8ede663569c704fb00a702973bd6c00373283 |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 6.1.136 with commit 20d584a33e480ae80d105f43e0e7b56784da41b9 |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 6.6.89 with commit 3aa852e3605000d5c47035c3fc3a986d14ccfa9f |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 6.12.26 with commit 86cd4641c713455a4f1c8e54c370c598c2b1cee0 |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 6.14.5 with commit bb583c88d23b72d8d16453d24856c99bd93dadf5 |
| Issue introduced in 4.14 with commit 21f4d5cc25ec0e6e8eb8420dd2c399e6d2fc7d14 and fixed in 6.15 with commit 3df275ef0a6ae181e8428a6589ef5d5231e58b5c |
| |
| 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-37797 |
| 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: |
| net/sched/sch_hfsc.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/28b09a067831f7317c3841812276022d6c940677 |
| https://git.kernel.org/stable/c/39b9095dd3b55d9b2743df038c32138efa34a9de |
| https://git.kernel.org/stable/c/fcc8ede663569c704fb00a702973bd6c00373283 |
| https://git.kernel.org/stable/c/20d584a33e480ae80d105f43e0e7b56784da41b9 |
| https://git.kernel.org/stable/c/3aa852e3605000d5c47035c3fc3a986d14ccfa9f |
| https://git.kernel.org/stable/c/86cd4641c713455a4f1c8e54c370c598c2b1cee0 |
| https://git.kernel.org/stable/c/bb583c88d23b72d8d16453d24856c99bd93dadf5 |
| https://git.kernel.org/stable/c/3df275ef0a6ae181e8428a6589ef5d5231e58b5c |