CVE-2021-47304
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: tcp: icsk_ca_initialized dəyişənini sıfırlamamaq üçün tcp_init_transfer() funksiyası düzəldildi Bu commit, tıxaclığın idarə edilməsi (congestion control) modulları üçün yalançı ikiqat başlatmalara səbəb ola bilən bir xətanı (syzkaller tərəfindən tapılmış) düzəldir. Bu, init funksiyalarında yaddaş ayıran tıxaclığın idarə edilməsi modulları (məsələn, CDG) üçün yaddaş sızmasına və ya digər problemlərə yol aça bilərdi. syzkaller tərəfindən qurulmuş xətalı ssenari təxminən belə idi: (1) TCP soketi yaradılır (2) sendto() vasitəsilə TFO qoşulması başladılır (3) soket TCP_SYN_SENT vəziyyətində olduğu zaman setsockopt(TCP_CONGESTION) çağırılır, bu isə aşağıdakıları çağırır: tcp_set_congestion_control() -> tcp_reinit_congestion_control() -> tcp_init_congestion_control() (4) ACK alınır, bağlantı qurulur, tcp_init_transfer() çağırılır, icsk_ca_initialized=0 təyin edilir (cc->release() çağırılmadan), yenidən tcp_init_congestion_control() çağırılır. Qeyd edək ki, bu ardıcıllıqda tcp_init_congestion_control() arasında heç bir cc->release() çağırışı olmadan iki dəfə çağırılır. Beləliklə, init() funksiyasında yaddaş ayıran CC modulları (məsələn, CDG) üçün yaddaş sızması baş verə bilər. syzkaller aləti CDG-də belə bir sızmanı tetikləyən reproduser tapa bildi. Xəta, 8919a9b31eb4 ("tcp: Only init congestion control if not initialized already") commit-i ilə icsk_ca_initialized tətbiq edildiyi və tcp_init_transfer()-də icsk_ca_initialized 0-a təyin edildiyi zaman ortaya çıxmışdı. Burada prosesin TCP_SYN_SENT vəziyyətində (yəni connect() və ya TFO open sendmsg()-dən sonra) setsockopt(TCP_CONGESTION) çağıra biləcəyi və bununla tcp_init_congestion_control()-i işə salacağı ehtimalı nəzərə alınmamışdı. Məqsəd istifadəçinin artıq açıq şəkildə etdiyi heç bir başlatmanı sıfırlamaq deyildi; sadəcə həmin konkret ardıcıllığın (hansını ki, syzkaller tapa bildi) ehtimalı gözə alınmamışdı.
Necə düzəltmək olar
- linux linux_kernel5.10.53, 5.13.5 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 | 5.10 ≤ v < 5.10.53, 5.11 ≤ v < 5.13.5, 5.14 | 5.10.53, 5.13.5 |
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.