CVE-2025-21702
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: pfifo_tail_enqueue: sch->limit == 0 olduqda yeni paket atılsın Gözlənilən davranış: Sceduler-in limitinə çatdıqda, pfifo_tail_enqueue() sceduler-in növbəsindəki bir paketi atacaq və sceduler-in qlen dəyərini bir vahid azaldacaq. Sonra pfifo_tail_enqueue() yeni paketi növbəyə əlavə edəcək və sceduler-in qlen dəyərini bir vahid artıracaq. Sonda pfifo_tail_enqueue() `NET_XMIT_CN` status kodunu qaytaracaq. Anomal davranış: `sch->limit == 0` təyin etdikdə və heç bir paketi olmayan sceduler-də pfifo_tail_enqueue() funksiyasını tetikledikdə, 'paketin atılması' mərhələsi heç bir iş görmür. Bu o deməkdir ki, sceduler-in qlen dəyəri hələ də 0-a bərabərdir. Daha sonra biz yeni paketi növbəyə əlavə etməyə davam edirik və sceduler-in qlen dəyərini bir vahid artırırıq. Xülasə, biz pfifo_tail_enqueue()-dan istifadə edərək qlen dəyərini bir vahid artıra və `NET_XMIT_CN` status kodunu qaytara bilərik. Problem budur: Tutaq ki, iki qdisc-imiz var: Qdisc_A və Qdisc_B. - Qdisc_A-nın tipi valideyn/övlad münasibətini yaratmaq üçün '->graft()' funksiyasına malik olmalıdır. Tutaq ki, Qdisc_A-nın tipi `hfsc`-dir. Bu qdisc-ə paketin əlavə edilməsi `hfsc_enqueue` funksiyasını tetikləyəcək. - Qdisc_B-nin tipi pfifo_head_drop-dur. Bu qdisc-ə paketin əlavə edilməsi `pfifo_tail_enqueue` funksiyasını tetikləyəcək. - Qdisc_B, `sch->limit == 0` olmaqla konfiqurasiya edilib. - Qdisc_A, əlavə edilmiş paketi Qdisc_B-yə yönləndirmək üçün konfiqurasiya edilib. Paketin Qdisc_A vasitəsilə əlavə edilməsi buna səbəb olacaq: - hfsc_enqueue(Qdisc_A) -> pfifo_tail_enqueue(Qdisc_B) - Qdisc_B->q.qlen += 1 - pfifo_tail_enqueue() `NET_XMIT_CN` qaytarır - hfsc_enqueue() `NET_XMIT_SUCCESS` yoxlayır və `NET_XMIT_CN` görür => hfsc_enqueue() Qdisc_A-nın qlen dəyərini artırmır. Bütün bu proses Qdisc_A->q.qlen == 0 və Qdisc_B->q.qlen == 1 olan vəziyyətə gətirib çıxarır. 'hfsc'-ni digər tiplərlə (məsələn: 'drr') əvəz etmək də eyni problemlə nəticələnir. Bu, valideynin qlen dəyəri onun övladlarının qlen dəyərlərinin cəminə bərabər olmalı olduğu dizayna ziddir. Xətanın təsiri: Bu problem, əlçatan olduqda, user->kernel imtiyazlarının yüksəldilməsi üçün istifadə edilə bilər.
Necə düzəltmək olar
- linux linux_kernel5.4.291, 5.10.235, 5.15.179, 6.1.130, 6.6.83, 6.12.14, 6.13.3 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 2.6.34 ≤ v < 5.4.291, 5.5 ≤ v < 5.10.235, 5.11 ≤ v < 5.15.179, 5.16 ≤ v < 6.1.130, 6.2 ≤ v < 6.6.83, 6.7 ≤ v < 6.12.14, 6.13 ≤ v < 6.13.3, 6.14 | 5.4.291, 5.10.235, 5.15.179, 6.1.130, 6.6.83, 6.12.14, 6.13.3 |
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.