CVE-2024-57996

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: net_sched: sch_sfq: 1 paket limitinə icazə verməyin Mövcud implementasiya 1 limiti ilə düzgün işləmir. iproute2 əslində bunu yoxlayır və bu yamama (patch) həmin yoxlamanı nüvəyə də əlavə edir. Bu, syzkaller tərəfindən aşkar edilmiş aşağıdakı sistem çökməsini (crash) düzəldir: UBSAN: array-index-out-of-bounds in net/sched/sch_sfq.c:210:6 index 65535 is out of range for type 'struct sfq_head[128]' CPU: 0 PID: 2569 Comm: syz-executor101 Not tainted 5.10.0-smp-DEV #1 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024 Call Trace: __dump_stack lib/dump_stack.c:79 [inline] dump_stack+0x125/0x19f lib/dump_stack.c:120 ubsan_epilogue lib/ubsan.c:148 [inline] __ubsan_handle_out_of_bounds+0xed/0x120 lib/ubsan.c:347 sfq_link net/sched/sch_sfq.c:210 [inline] sfq_dec+0x528/0x600 net/sched/sch_sfq.c:238 sfq_dequeue+0x39b/0x9d0 net/sched/sch_sfq.c:500 sfq_reset+0x13/0x50 net/sched/sch_sfq.c:525 qdisc_reset+0xfe/0x510 net/sched/sch_generic.c:1026 tbf_reset+0x3d/0x100 net/sched/sch_tbf.c:319 qdisc_reset+0xfe/0x510 net/sched/sch_generic.c:1026 dev_reset_queue+0x8c/0x140 net/sched/sch_generic.c:1296 netdev_for_each_tx_queue include/linux/netdevice.h:2350 [inline] dev_deactivate_many+0x6dc/0xc20 net/sched/sch_generic.c:1362 __dev_close_many+0x214/0x350 net/core/dev.c:1468 dev_close_many+0x207/0x510 net/core/dev.c:1506 unregister_netdevice_many+0x40f/0x16b0 net/core/dev.c:10738 unregister_netdevice_queue+0x2be/0x310 net/core/dev.c:10695 unregister_netdevice include/linux/netdevice.h:2893 [inline] __tun_detach+0x6b6/0x1600 drivers/net/tun.c:689 tun_detach drivers/net/tun.c:705 [inline] tun_chr_close+0x104/0x1b0 drivers/net/tun.c:3640 __fput+0x203/0x840 fs/file_table.c:280 task_work_run+0x129/0x1b0 kernel/task_work.c:185 exit_task_work include/linux/task_work.h:33 [inline] do_exit+0x5ce/0x2200 kernel/exit.c:931 do_group_exit+0x144/0x310 kernel/exit.c:1046 __do_sys_exit_group kernel/exit.c:1057 [inline] __se_sys_exit_group kernel/exit.c:1055 [inline] __x64_sys_exit_group+0x3b/0x40 kernel/exit.c:1055 do_syscall_64+0x6c/0xd0 entry_SYSCALL_64_after_hwframe+0x61/0xcb RIP: 0033:0x7fe5e7b52479 Code: Unable to access opcode bytes at RIP 0x7fe5e7b5244f. RSP: 002b:00007ffd3c800398 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7 RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fe5e7b52479 RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000000 RBP: 00007fe5e7bcd2d0 R08: ffffffffffffffb8 R09: 0000000000000014 R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe5e7bcd2d0 R13: 0000000000000000 R14: 00007fe5e7bcdd20 R15: 00007fe5e7b24270 Çökmə həmçinin aşağıdakılarla da təkrarlana bilər (sfq limitlərinin 1 olmasına icazə vermək üçün yenidən kompilyasiya edilmiş tc ilə): tc qdisc add dev dummy0 handle 1: root tbf rate 1Kbit burst 100b lat 1s ../iproute2-6.9.0/tc/tc qdisc add dev dummy0 handle 2: parent 1:10 sfq limit 1 ifconfig dummy0 up ping -I dummy0 -f -c2 -W0.1 8.8.8.8 sleep 1 Çökməni tetikleyen ssenari: * birinci paket göndərilir və TBF və SFQ-da növbəyə alınır; qdisc qlen 1 olur. * TBF dequeue edir: o, SFQ-dan məlumatı oxuyur (peek), bu isə paketi gso_skb siyahısına köçürür və qdisc qlen-i 1 olaraq saxlayır. TBF-nin tokenləri bitdiyi üçün o, özünü sonraya planlaşdırır. * ikinci paket göndərilir və TBF onu SFQ-ya yerləşdirməyə çalışır. qdisc qlen indi 2-dir və SFQ limiti 1 olduğu üçün paket SFQ tərəfindən atılır. Bu nöqtədə qlen 1-dir və bütün SFQ slotları boşdur, lakin q->tail NULL deyil. Bu nöqtədə, daha çox paket növbəyə alınmadığı fərz edilərsə, sch_dequeue yenidən işə düşdükdə cari boş slot üçün qlen-i azaldacaq ki, bu da underflow-a və nəticədə sərhədlərdən kənar girişə (out of bounds access) səbəb olacaq.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc27 fev 2025
İlk görülmə27 fev 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.1.129, 6.6.76, 6.12.13, 6.13.2 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel2.6.12 ≤ v < 6.1.129, 6.2 ≤ v < 6.6.76, 6.7 ≤ v < 6.12.13, 6.13 ≤ v < 6.13.26.1.129, 6.6.76, 6.12.13, 6.13.2

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.

Intelligence 360 paketində

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.

CVE-2024-57996 · Linux Kernel · Dark Radar