CVE-2026-45842
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: slip: rstate massivi olmayan nümunələrdə VJ qəbul paketlərini rədd edin slhc_init() funksiyası rslots == 0 dəyərini 'qəbul sıxılmasının olmaması' sənədləşdirilmiş mənası ilə etibarlı konfiqurasiya kimi qəbul edir. Bu halda slhc_init()-dəki ayırma dövrü ötürülür, buna görə də comp->rstate NULL və comp->rslot_limit 0 (struct slcompress-in kzalloc-undan gələn) olaraq qalır. Qəbul köməkçiləri bu konfiqurasiyaya qarşı mühafizəyə malik deyil. VJ başlığı açıq şəkildə bağlantı ID-si daşıdıqda slhc_uncompress() comp->rstate[x]-i dereference edir və daha sonra slhc_remember(), paketin slot nömrəsini yalnız comp->rslot_limit ilə müqayisə etdikdən sonra cs = &comp->rstate[...] təyin edir. rslot_limit 0 olduğu üçün slot 0 diapazon yoxlamasından keçir və kod NULL olan rstate-i dereference edir. Bu konfiqurasiyaya PPP vasitəsilə daxili kod üzərindən çatmaq mümkündür. PPPIOCSMAXCID öz arqumentini imzalı tam ədəd (signed int) kimi saxlayır və (val >> 16) aritmetik sürüşdürmədən istifadə edir. Buna görə də 0xffff0000 ötürülməsi işarənin genişlənməsi nəticəsində -1 olur, beləliklə val2 + 1 sıfıra bərabər olur və ppp_generic.c sonda slhc_init(0, 1) çağırır. /dev/ppp açılması ns_capable(CAP_NET_ADMIN) ilə məhdudlaşdırıldığı üçün bütün yol imtiyazsız istifadəçi ad sahəsindən (user namespace) əlçatandır. Yanlış formalaşmış VJ vəziyyəti quraşdırıldıqdan sonra, slot 0-ı seçən hər hansı daxil olan VJ-sıxılmış və ya VJ-sıxılmamış freym softirq kontekstində kernel-in çökməsinə səbəb olur: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] RIP: 0010:slhc_uncompress (drivers/net/slip/slhc.c:519) Call Trace: <TASK> ppp_receive_nonmp_frame (drivers/net/ppp/ppp_generic.c:2466) ppp_input (drivers/net/ppp/ppp_generic.c:2359) ppp_async_process (drivers/net/ppp/ppp_async.c:492) tasklet_action_common (kernel/softirq.c:926) handle_softirqs (kernel/softirq.c:623) run_ksoftirqd (kernel/softirq.c:1055) smpboot_thread_fn (kernel/smpboot.c:160) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:164) </TASK> Belə nümunələrdə rstate-ə toxunmaq əvəzinə qəbul tərəfini rədd edin. slhc_uncompress() mövcud 'bad' etiketine keçid edir, bu da sls_i_error sayğacını artırır və toss vəziyyətinə daxil olur. slhc_remember() bunu açıq sls_i_error artımı və ardınca slhc_toss() ilə təkrarlayır; burada sls_i_runt sayğacı istifadə edilmir, çünki çatışmayan rstate daxili konfiqurasiya vəziyyətidir, runt paket deyil. Ötürmə yolu təsirlənmir: istifadəçi sahəsindən rslots seçən yeganə daxili çağırıcı (ppp_generic.c) hələ də tslots >= 1 təmin edir və slip.c həmişə slhc_init(16, 16) çağırır, buna görə də comp->tstate etibarlı qalır və slhc_compress() işləməyə davam edir.
Necə düzəltmək olar
- linux linux_kernel2.6.33, 3.3, 3.5, 3.11, 3.13, 3.15, 3.19, 4.2, 5.10.258, 5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 və ya daha yeni versiya
- git.kernel.org/stable/c/3d71c961febddd855d3ae9a519eeb96c8023f430
- git.kernel.org/stable/c/4aa9eca6fda2919027dfd7a7cc69334982d89586
- git.kernel.org/stable/c/72304fec672e8aac9ee7b9c475db96b37cca8d8d
- git.kernel.org/stable/c/7b0d9e878ec2b21d99ae8051b3dda59cdb66c152
- git.kernel.org/stable/c/9e1ff0eead073c4f46d874ad2526b7dda5465faf
- git.kernel.org/stable/c/c6980e8b1a86288167f34966fa5219031999b6f1
- git.kernel.org/stable/c/de42f86e2cf5028a97e74c25869d1a962b13c301
- git.kernel.org/stable/c/e76607442d5b73e1ba6768f501ef815bb58c2c0e
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 2.6.32.70 ≤ v < 2.6.33, 3.2.75 ≤ v < 3.3, 3.4.111 ≤ v < 3.5, 3.10.96 ≤ v < 3.11, 3.12.53 ≤ v < 3.13, 3.14.60 ≤ v < 3.15, 3.18.27 ≤ v < 3.19, 4.1.17 ≤ v < 4.2, 4.3.5 ≤ v < 5.10.258, 5.11 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.141, 6.7 ≤ v < 6.12.91, 6.13 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.10 | 2.6.33, 3.3, 3.5, 3.11, 3.13, 3.15, 3.19, 4.2, 5.10.258, 5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 |
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.