CVE-2025-39677
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net/sched: qdisc_dequeue_internal içerisindeki backlog muhasebesi düzeltildi Bu sorun şu qdisc'ler için geçerlidir: hhf, fq, fq_codel ve fq_pie; yeni limite uyum sağlarken çalışan değişiklik işleyicilerinde meydana gelir. Sorun, bir tbf ebeveyni verildiğinde, ardından gelen qdisc_tree_reduce_backlog çağrısına iletilen değerlerde şudur: tbf ebeveyninin tokenları tükendiğinde, bu qdisc'lerin skb'leri gso_skb içine yerleştirilir. Bunların peek işleyicileri hem qlen hem de backlog hesaplaması yapan qdisc_peek_dequeued fonksiyonudur. Ancak, qdisc_dequeue_internal durumunda, gso_skb üzerinden veri çekilirken YALNIZCA qlen hesaplanır. Bu durum, söz konusu qdisc'lerin, değişiklik işleyicilerinde yeni limiti karşılamak için paketleri düşürürken bir qdisc_qstats_backlog_dec işlemini eksik yaptıkları anlamına gelir. Bu sorun, aşağıdakilerle gözlemlenebilir (tc, 0 limitini destekleyecek şekilde yamalanmışsa): export TARGET=fq tc qdisc del dev lo root tc qdisc add dev lo root handle 1: tbf rate 8bit burst 100b latency 1ms tc qdisc replace dev lo handle 3: parent 1:1 $TARGET limit 1000 echo ''; echo 'add child'; tc -s -d qdisc show dev lo ping -I lo -f -c2 -s32 -W0.001 127.0.0.1 2>&1 >/dev/null echo ''; echo 'after ping'; tc -s -d qdisc show dev lo tc qdisc change dev lo handle 3: parent 1:1 $TARGET limit 0 echo ''; echo 'after limit drop'; tc -s -d qdisc show dev lo tc qdisc replace dev lo handle 2: parent 1:1 sfq echo ''; echo 'post graft'; tc -s -d qdisc show dev lo Sondan bir önceki show komutu 0 paket ancak pozitif bir backlog baytı sayısı (74) gösterir. Sorun, son show komutunda daha belirgin hale gelir; burada qdisc_purge_queue, pozitif backlog ile qdisc_tree_reduce_backlog'u tetikler ve tbf ebeveyninin backlog'unda bir underflow'a neden olur (0 yerine 4096 Mb). Bu sorunu gidermek için qdisc_dequeue_internal kullanan tüm istemcilerin kod yolu basitleştirilmiştir: codel, pie, hhf, fq, fq_pie ve fq_codel. qdisc_dequeue_internal, dequeue işleyicisini doğrudan kullanmayan tüm durumlar için backlog ayarlamalarını yönetir. Eski fq_codel_change limit ayarlama döngüsü, sonraki qdisc_tree_reduce_backlog çağrısının argümanlarını cstats alanı aracılığıyla biriktiriyordu. Ancak bu durum kafa karıştırıcıdır ve hataya açıktır çünkü fq_codel_dequeue da potansiyel olarak bu alanı değiştirebilirdi (qdisc_dequeue_internal, non gso_skb durumunda bunu çağırır); bu nedenle buradaki kod diğer qdisc'lerle birleştirilmiştir.
Nasıl düzeltilir
- linux linux_kernel6.16.4 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 3.5 ≤ v < 6.16.4, 6.17 | 6.16.4 |
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.
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.