CVE-2022-49916
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: rose: rose_send_frame() funksiyasında NULL göstəricisinin istifadəsi (NULL pointer dereference) düzəldildi syzkaller tərəfindən problem aşkar edilmişdir: KASAN: null-ptr-deref in range [0x0000000000000380-0x0000000000000387] CPU: 0 PID: 4069 Comm: kworker/0:15 Not tainted 6.0.0-syzkaller-02734-g0326074ff465 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022 Workqueue: rcu_gp srcu_invoke_callbacks RIP: 0010:rose_send_frame+0x1dd/0x2f0 net/rose/rose_link.c:101 Call Trace: <IRQ> rose_transmit_clear_request+0x1d5/0x290 net/rose/rose_link.c:255 rose_rx_call_request+0x4c0/0x1bc0 net/rose/af_rose.c:1009 rose_loopback_timer+0x19e/0x590 net/rose/rose_loopback.c:111 call_timer_fn+0x1a0/0x6b0 kernel/time/timer.c:1474 expire_timers kernel/time/timer.c:1519 [inline] __run_timers.part.0+0x674/0xa80 kernel/time/timer.c:1790 __run_timers kernel/time/timer.c:1768 [inline] run_timer_softirq+0xb3/0x1d0 kernel/time/timer.c:1803 __do_softirq+0x1d0/0x9c8 kernel/softirq.c:571 [...] </IRQ> Bu problem rose_send_frame() daxilində 'neigh->dev->dev_addr' çağırıldıqda NULL göstəricisinin istifadəsinə səbəb olur. `neigh`-in ilk rast gəlindiyi yer rose_loopback_timer() funksiyasındakı `rose_loopback_neigh` obyektidir və 'rose_loopback_neigh' daxilindəki 'dev' nullptr olaraq başladılır. Bu problem əvvəllər 3b3fd068c56e3fbea30090859216a368398e39bf ("rose: Fix Null pointer dereference in rose_send_frame()") commit-i ilə düzəldilmişdi. Lakin 3c53cd65dece47dd1f9d3a809f32e59d1d87b2b8 ("rose: check NULL rose_loopback_neigh->loopback") commit-i ilə yenidən ortaya çıxmışdı. Problem rose_transmit_clear_request() funksiyasına NULL yoxlamasının əlavə edilməsi ilə həll edilir. 'neigh' daxilindəki 'dev' NULL olduqda, sorğuya cavab verilmir və sadəcə təmizlənir. syzkaller təkrar istehsal (repro) təmin etmir, mən isə aşağıdakı kimi syz repro təqdim edirəm: r0 = syz_init_net_socket$bt_sco(0x1f, 0x5, 0x2) ioctl$sock_inet_SIOCSIFFLAGS(r0, 0x8914, &(0x7f0000000180)={'rose0\x00', 0x201}) r1 = syz_init_net_socket$rose(0xb, 0x5, 0x0) bind$rose(r1, &(0x7f00000000c0)=@full={0xb, @dev, @null, 0x0, [@null, @null, @netrom, @netrom, @default, @null]}, 0x40) connect$rose(r1, &(0x7f0000000240)=@short={0xb, @dev={0xbb, 0xbb, 0xbb, 0x1, 0x0}, @remote={0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x1}, 0x1, @netrom={0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x0, 0x0}}, 0x1c)
Necə düzəltmək olar
- linux linux_kernel4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154, 5.15.78, 6.0.8 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 | 4.9.327 ≤ v < 4.9.333, 4.14.292 ≤ v < 4.14.299, 4.19.257 ≤ v < 4.19.265, 5.4.212 ≤ v < 5.4.224, 5.10.140 ≤ v < 5.10.154, 5.15.64 ≤ v < 5.15.78, 5.19.6 ≤ v < 6.0.8, 6.1 | 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154, 5.15.78, 6.0.8 |
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.