CVE-2024-46704
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: workqueue: __flush_work() funksiyasındakı yanlış data race probleminin düzəldilməsi Ləğv edilməsi üçün iş elementi (work item) təmizlənərkən, __flush_work() onun PENDING biti vasitəsilə həmin iş elementinin eksklüziv sahib olduğunu bilir. 134874e2eee9 ("workqueue: Allow cancel_work_sync() and disable_work() from atomic contexts on BH work items") commit-i ləğv edilən BH iş elementləri üçün busy wait istifadə edilib-edilməyəcəyini müəyyən etmək məqsədilə @work->data oxunusunu əlavə etmişdir. Oxuma prosesi @from_cancel olduqda təhlükəsiz olsa da, kod strukturunu sadələşdirmək üçün @from_cancel yoxlanılmamışdan əvvəl @work->data oxunmuşdur: data = *work_data_bits(work); if (from_cancel && !WARN_ON_ONCE(data & WORK_STRUCT_PWQ) && (data & WORK_OFFQ_BH)) { Oxunan məlumatlar !@from_cancel halında heç vaxt istifadə edilməsə də, bu, KCSAN data race aşkarlanmasını yanlış şəkildə tetikləyə bilərdi: ================================================================== BUG: KCSAN: data-race in __flush_work / __flush_work write to 0xffff8881223aa3e8 of 8 bytes by task 3998 on cpu 0: instrument_write include/linux/instrumented.h:41 [inline] ___set_bit include/asm-generic/bitops/instrumented-non-atomic.h:28 [inline] insert_wq_barrier kernel/workqueue.c:3790 [inline] start_flush_work kernel/workqueue.c:4142 [inline] __flush_work+0x30b/0x570 kernel/workqueue.c:4178 flush_work kernel/workqueue.c:4229 [inline] ... read to 0xffff8881223aa3e8 of 8 bytes by task 50 on cpu 1: __flush_work+0x42a/0x570 kernel/workqueue.c:4188 flush_work kernel/workqueue.c:4229 [inline] flush_delayed_work+0x66/0x70 kernel/workqueue.c:4251 ... value changed: 0x0000000000400000 -> 0xffff88810006c00d Kod elə yenidən təşkil edilmişdir ki, @work->data-ya müraciət etməzdən əvvəl @from_cancel yoxlansın. Yeganə problem KCSAN aşkarlanmasının yanlış şəkildə tetiklənməsidir. Bu, READ_ONCE() və ya digər giriş kvalifikatorlarını tələb etməməlidir. Funksional dəyişiklik yoxdur.
Necə düzəltmək olar
- linux linux_kernel6.10.7 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 | 6.10 ≤ v < 6.10.7, 6.11 | 6.10.7 |
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.