CVE-2026-98299
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: tcp: tcp_rmem dəyərinin 4096-dan aşağı təyin edilməsinə icazə verməyin tcp_rcvbuf_grow() və tcp_rcv_space_adjust() funksiyalarında sıfıra bölmə səbəbi ilə sistemin çökməsi (crash) baş verə bilər: divide error: 0000 [#1] PREEMPT SMP RIP: 0010:tcp_rcvbuf_grow+0x187/0x450 net/ipv4/tcp_input.c:939 ... grow = div_u64(((u64)rcvwin << 1) * (newval - oldval), oldval); Bölmə əməliyyatında bölən kimi oldval = tp->rcvq_space.space istifadə olunur. tp->rcvq_space.space sıfır olduqda, bu, sıfıra bölmə istisnasına (divide-by-zero exception) səbəb olur. tp->rcvq_space.space dəyəri tcp_init_buffer_space() funksiyasında başladılır: tp->rcvq_space.space = min3(tp->rcv_ssthresh, tp->rcv_wnd, (u32)TCP_INIT_CWND * tp->advmss); Əgər tcp_rmem[1] çox kiçik dəyərlərə (məsələn, 1) konfiqurasiya edilibsə, sk->sk_rcvbuf 1 olaraq başladılır. Sonra (sk->sk_rcvbuf * scaling_ratio) >> 8 hesablamasını aparan tcp_full_space(sk) funksiyası bunu 0-a endirir. Bu isə tp->window_clamp = 0, tp->rcv_ssthresh = 0 və tp->rcvq_space.space = 0 dəyərlərini təyin edir. Daha sonra məlumat gəldikdə və DRS çağırıldıqda, tcp_rcvbuf_grow() funksiyası oldval == 0 dəyərinə bölmə əməliyyatı yerinə yetirir. 2015-ci ildə b1cb59cf2efe ("net: sysctl_net_core: check SNDBUF and RCVBUF for min length") kommiti net.core.rmem_default və net.core.rmem_max dəyərlərinin SOCK_MIN_RCVBUF-dan aşağı təyin edilə bilməyəcəyini təmin etmişdir. Eynilə SO_RCVBUF setsockopt max_t(int, val * 2, SOCK_MIN_RCVBUF) şərtini tətbiq edir. Lakin net.ipv4.tcp_rmem hələ də .extra1 = SYSCTL_ONE dəyərinə malik idi və bu, ixtiyari dərəcədə kiçik dəyərlərin təyin edilməsinə imkan verirdi. SOCK_MIN_RCVBUF dəyəri sizeof(struct sk_buff)-dən və keş sətiri hizalanmasından (cacheline alignment) asılı olduğu üçün onun qiyməti müxtəlif arxitekturalar və konfiqurasiya seçimləri üzrə dəyişir. Sabit 4096 konstantının istifadəsi, hər yerdə SOCK_MIN_RCVBUF-dan təhlükəsiz şəkildə yuxarı olan və sənədləşdirilmiş 4K standartına uyğun, arxitekturadan asılı olmayan proqnozlaşdırıla bilən aşağı həddi təmin edir. Bu problem tcp_rmem.extra1 dəyərinin 4096 olaraq təyin edilməsi və sənədləşmənin yenilənməsi ilə həll edilmişdir.
Necə düzəltmək olar
- Linux Linux879907631b9e70eedb62d76461b29afa106ebe7a, 8e32532d0fa3191ecf9524b0e6bafa0832e712ba, 67b83c15bed9eeeb8d1a6dbf88a5f79525970173, 9a4f49bf8d2da4e52e904f60c29cca317bab9b3a, 60df201dbb19a1bf6478b56d100f7ae1fe90e46a, 7898bda1ebc198f5559b301a96dd5398edd4d4d3, 1c4bb940c3bb4325bb88ac1b7eaf5faaa39e7d63, 83a945a529d6e002dd7339c532288a931f463dba və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 879907631b9e70eedb62d76461b29afa106ebe7a, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 8e32532d0fa3191ecf9524b0e6bafa0832e712ba, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 67b83c15bed9eeeb8d1a6dbf88a5f79525970173, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 9a4f49bf8d2da4e52e904f60c29cca317bab9b3a, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 60df201dbb19a1bf6478b56d100f7ae1fe90e46a, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 7898bda1ebc198f5559b301a96dd5398edd4d4d3, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 1c4bb940c3bb4325bb88ac1b7eaf5faaa39e7d63, 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ≤ v < 83a945a529d6e002dd7339c532288a931f463dba, 2.6.12 | 879907631b9e70eedb62d76461b29afa106ebe7a, 8e32532d0fa3191ecf9524b0e6bafa0832e712ba, 67b83c15bed9eeeb8d1a6dbf88a5f79525970173, 9a4f49bf8d2da4e52e904f60c29cca317bab9b3a, 60df201dbb19a1bf6478b56d100f7ae1fe90e46a, 7898bda1ebc198f5559b301a96dd5398edd4d4d3, 1c4bb940c3bb4325bb88ac1b7eaf5faaa39e7d63, 83a945a529d6e002dd7339c532288a931f463dba |
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.