CVE-2025-39677

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: net/sched: qdisc_dequeue_internal funksiyasında backlog uçotunun düzəldilməsi Bu problem hhf, fq, fq_codel və fq_pie qdisc-lərinə şamil edilir və yeni limitə uyğunlaşma zamanı onların dəyişiklik idarəedicilərində (change handlers) baş verir. Tbf valideyni olduqda, növbəti qdisc_tree_reduce_backlog çağırışına ötürülən dəyərlərdəki problem aşağıdakıdır: Tbf valideyninin tokenləri bitdikdə, bu qdisc-lərin skb-ləri gso_skb-yə yerləşdirilir. Onların peek idarəediciləri həm qlen, həm də backlog-u uçota alan qdisc_peek_dequeued funksiyalarıdır. Lakin, qdisc_dequeue_internal halında, gso_skb-dən məlumat çəkilərkən YALNIZ qlen uçota alınır. Bu o deməkdir ki, həmin qdisc-lər öz dəyişiklik idarəedicilərində yeni limiti təmin etmək üçün paketləri atarkən qdisc_qstats_backlog_dec əməliyyatını yerinə yetirmirlər. Bu problemi aşağıdakılarla müşahidə etmək olar (tc 0 limitini dəstəkləmək üçün yamalanmışdır): 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 ikinci show əmri 0 paket göstərir, lakin müsbət backlog baytları sayı (74) görünür. Problem sonuncu show əmrində daha aydın olur; burada qdisc_purge_queue müsbət backlog ilə qdisc_tree_reduce_backlog funksiyasını tetikləyir və tbf valideyninin backlog-unda underflow-ya səbəb olur (0 əvəzinə 4096 Mb). Bu problemi həll etmək üçün qdisc_dequeue_internal istifadəçilərinin hamısı üçün kod yolu sadələşdirilmişdir: codel, pie, hhf, fq, fq_pie və fq_codel. qdisc_dequeue_internal dequeue idarəedicisindən birbaşa istifadə etməyən bütün hallar üçün backlog tənzimləmələrini idarə edir. Köhnə fq_codel_change limit tənzimləmə dövrü, növbəti qdisc_tree_reduce_backlog çağırışı üçün arqumentləri cstats sahəsi vasitəsilə toplayırdı. Lakin, fq_codel_dequeue funksiyası da potensial olaraq bu sahəni dəyişə bildiyi üçün (hansı ki, qdisc_dequeue_internal non gso_skb halında onu çağırır), bu yanaşma qarışıqlığa və xətalara yol açırdı; buna görə də buradakı kod digər qdisc-lərlə vahidləşdirilmişdir.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc5 sen 2025
İlk görülmə5 sen 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.16.4 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel3.5 ≤ v < 6.16.4, 6.176.16.4

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.