CVE-2025-68232
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: veth: txq-nin ilişib qalmasının qarşısını almaq üçün yarış vəziyyətinin daha etibarlı idarə edilməsi dc82a33297fc ("veth: apply qdisc backpressure on full ptr_ring to reduce TX drops") commit-i, TXQ-nin daimi olaraq dayanmasına səbəb ola biləcək bir yarış vəziyyəti (race condition) yaratmışdır. Bu, ARM64 sistemlərində (Ampere Altra Max) istehsalat mühitində müşahidə edilmişdir. Yarış vəziyyəti veth_xmit() funksiyasında baş verir. Producer dolu ptr_ring-i müşahidə edir və növbəni dayandırır (netif_tx_stop_queue()). Əgər consumer onu yeni boşaltdısa, növbəni yenidən oyatmaq üçün nəzərdə tutulmuş növbəti şərti məntiq (if (__ptr_ring_empty(...)) netif_tx_wake_queue()) uğursuz ola bilər. Bu, TXQ-nin dayalı qaldığı (QUEUE_STATE_DRV_XOFF) və trafikin kəsildiyi "itmiş oyanma"ya (lost wakeup) gətirib çıxarır. Bu xəta, producer tərəfindən __ptr_ring_empty() API-nın yanlış istifadəsi səbəbindən yaranır. Kernel şərhlərində qeyd edildiyi kimi, əgər consumer digər CPU-da fəaliyyət göstərirsə, bu yoxlamanın düzgünlüyünə zəmanət verilmir. Boşluq testi ptr_ring->consumer_head əsasında qurulduğu üçün yalnız consumer üçün etibarlıdır. Bu yoxlamanın producer tərəfindən istifadəsi fundamental olaraq yarış vəziyyətinə meyillidir. Bu yamama (patch), patchset-in əvvəlki V4 versiyasındakı həmçinin peer-i həmişə təmizləyən (flush) daha etibarlı məntiqi tətbiq etməklə yarış vəziyyətini düzəldir: (1) veth_xmit()-də yarış vəziyyətinə meyilli şərti oyatma məntiqi və onun yaddaş baryeri (memory barrier) silinib. Bunun əvəzinə, növbəni dayandırdıqdan sonra biz şərtsiz olaraq __veth_xdp_flush(rq) çağırırıq. Bu, NAPI consumer-in planlaşdırılmasını təmin edir və TXQ-ni yenidən oyatmaq üçün onu tam məsuliyyətli edir. Bu, producer tərəfdə veth_xmit() netif_tx_stop_queue çağırmazdan əvvəl veth_poll()-un bütün paketləri istehlak etdiyi və NAPI-ni tamamladığı yarış vəziyyətini həll edir. __veth_xdp_flush(rq) rx_notify_masked-in false olduğunu görəcək və NAPI-ni planlaşdıracaq. (2) Consumer tərəfdə, peer TXQ-ni oyatmaq üçün olan məntiq veth_xdp_rcv()-dən çıxarılaraq veth_poll() funksiyasının sonuna yerləşdirilib. Bu yerləşdirmə yarış vəziyyətinin düzəldilməsinin bir hissəsidir, çünki netif_tx_queue_stopped() yoxlaması, NAPI tamamlanması zamanı rx_notify_masked potensial olaraq false təyin edildikdən sonra baş verməlidir. Bu, veth_poll()-un bütün paketləri istehlak etdiyi, lakin hələ bitirmədiyi (rx_notify_masked hələ də true olduğu) yarış vəziyyətini həll edir. Producer veth_xmit() TXQ-ni dayandırır və __veth_xdp_flush(rq) rx_notify_masked-in true olduğunu görür, yəni NAPI-ni başlatmır. Sonra veth_poll() rx_notify_masked-i false-a dəyişir və NAPI-ni dayandırır. veth_poll()-dan çıxmazdan əvvəl TXQ-nin dayandığını müşahidə edəcək və onu oyadacaq.
Necə düzəltmək olar
- Linux Linuxdd419a3f2ebc18cc00bc32c57fd052d7a188b78b, 6c8a8b9257a660e622689e23c8fbad4ba2b561b9, 5442a9da69789741bfda39f34ee7f69552bf0c56 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 9fe31b3f314534e238aa6d0b6fb492134cbcf8be ≤ v < dd419a3f2ebc18cc00bc32c57fd052d7a188b78b, dc82a33297fc2c58cb0b2b008d728668d45c0f6a ≤ v < 6c8a8b9257a660e622689e23c8fbad4ba2b561b9, dc82a33297fc2c58cb0b2b008d728668d45c0f6a ≤ v < 5442a9da69789741bfda39f34ee7f69552bf0c56, 6.16 | dd419a3f2ebc18cc00bc32c57fd052d7a188b78b, 6c8a8b9257a660e622689e23c8fbad4ba2b561b9, 5442a9da69789741bfda39f34ee7f69552bf0c56 |
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.
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.