ipc/mqueue, msg, sem: avoid relying on a stack reference past its expiry
In the Linux kernel, the following vulnerability has been resolved: ipc/mqueue, msg, sem: avoid relying on a stack reference past its expiry do_mq_timedreceive calls wq_sleep with a stack local address. The sender (do_mq_timedsend) uses this address to later call pipelined_send. This leads to a very hard to trigger race where a do_mq_timedreceive call might return and leave do_mq_timedsend to rely on an invalid address, causing the following crash: RIP: 0010:wake_q_add_safe+0x13/0x60 Call Trace: __x64_sys_mq_timedsend+0x2a9/0x490 do_syscall_64+0x80/0x680 entry_SYSCALL_64_after_hwframe+0x44/0xa9 RIP: 0033:0x7f5928e40343 The race occurs as: 1. do_mq_timedreceive calls wq_sleep with the address of `struct ext_wait_queue` on function stack (aliased as `ewq_addr` here) - it holds a valid `struct ext_wait_queue *` as long as the stack has not been overwritten. 2. `ewq_addr` gets added to info->e_wait_q[RECV].list in wq_add, and do_mq_timedsend receives it via wq_get_first_waiter(info, RECV) to call __pipelined_op. 3. Sender calls __pipelined_op::smp_store_release(&this->state, STATE_READY). Here is where the race window begins. (`this` is `ewq_addr`.) 4. If the receiver wakes up now in do_mq_timedreceive::wq_sleep, it will see `state == STATE_READY` and break. 5. do_mq_timedreceive returns, and `ewq_addr` is no longer guaranteed to be a `struct ext_wait_queue *` since it was on do_mq_timedreceive's stack. (Although the address may not get overwritten until another function happens to touch it, which means it can persist around for an indefinite time.) 6. do_mq_timedsend::__pipelined_op() still believes `ewq_addr` is a `struct ext_wait_queue *`, and uses it to find a task_struct to pass to the wake_q_add_safe call. In the lucky case where nothing has overwritten `ewq_addr` yet, `ewq_addr->task` is the right task_struct. In the unlucky case, __pipelined_op::wake_q_add_safe gets handed a bogus address as the receiver's task_struct causing the crash. do_mq_timedsend::__pipelined_op() should not dereference `this` after setting STATE_READY, as the receiver counterpart is now free to return. Change __pipelined_op to call wake_q_add_safe on the receiver's task_struct returned by get_task_struct, instead of dereferencing `this` which sits on the receiver's stack. As Manfred pointed out, the race potentially also exists in ipc/msg.c::expunge_all and ipc/sem.c::wake_up_sem_queue_prepare. Fix those in the same way.
- Yayın
- 1 Mar 2024
- Güncelleme
- 5 Ağu 2026
- EPSS
- %0,3 · 16. yüzdelik
- CWE
- CWE-672
Takip etmek için giriş yap · Takip ettiğin kayıt KEV’e girer, istismarı çıkar ya da güncellenirse bildirim alırsın.
Rapor araçları
Aksiyon skoru
28
İzleyin
Şimdilik düşük öncelik.
- CVSS
- 28 / 40 · 7.0 / 10
- CISA KEV
- 0 / 30 · Listede değil
- EPSS
- 0 / 30 · %0,3
CISA SSVC kararı
- Sömürü
- yok
- Otomatikleştirilebilir
- hayır
- Teknik etki
- kısmi
Vulnrichment: CISA'nın karar ağacı girdileri.
CNA ile NVD puanı
- NVD
- 7,0
- CNA · Linux
- 7,8
- 0,8 puan fark
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Kaydı açan otoritenin puanı ile NVD’nin bağımsız puanı. İki puan arasındaki fark ciddiyetin tartışmalı olduğunu gösterir.
Noroxi analizi
Bu kayıt için henüz Noroxi analizi yok
Veritabanındaki yüz binlerce zafiyetin tamamına elle analiz yazmıyoruz; bu dürüst olmazdı. Öne çıkan ve sahada etkisi olan zafiyetler için mekanizma, tespit ve kapatma adımlarını ekibimiz yazıyor.
Bu ürünü kullanıyoruz, yardım isteyinEtkilenen sistemler
| Üretici | Ürün | CPE |
|---|---|---|
| linux | linux kernel | cpe:2.3:o:linux:linux_kernel |
Etkilenen sürümler
NVD sürüm aralıkları (katalogdaki ürünler için). Stack’ine sürümle eklersen eşleşme bunlarla yapılır.
- linux linux kernel5.6 ve sonrası · 5.10.40 öncesi
- linux linux kernel5.11 ve sonrası · 5.12.7 öncesi
- linux linux kernel5.13
Üreticinin bildirdiği sürümler
Kaydı açan otorite (Linux) tarafından bildirilen etkilenen sürüm aralıkları. NVD'nin CPE analizinden bağımsızdır ve genellikle ondan önce gelir.
Linux Linux
- 5.6etkilenir
- c5b2cbdbdac563f46ecd5e187253ab1abbd6fc04 ve sonrası · 4528c0c323085e645b8765913b4a7fd42cf49b65 öncesietkilenir · git
- c5b2cbdbdac563f46ecd5e187253ab1abbd6fc04 ve sonrası · 807fa14536b26803b858da878b643be72952a097 öncesietkilenir · git
- c5b2cbdbdac563f46ecd5e187253ab1abbd6fc04 ve sonrası · a11ddb37bf367e6b5239b95ca759e5389bb46048 öncesietkilenir · git
- 5.6 öncesietkilenmez · semver
- 5.10.40 ve sonrası · 5.10.* dahil öncesietkilenmez · semver
- 5.12.7 ve sonrası · 5.12.* dahil öncesietkilenmez · semver
- 5.13 ve sonrasıetkilenmez · original_commit_for_fix
Paket düzeyi etkilenme
OSV ve GitHub Advisory verisi: ekosistem, paket ve aralık. SBOM eşleşmesi bu tabloyu kullanır.
| Ekosistem | Paket | Etkilenen aralık | Düzeltme |
|---|---|---|---|
| AlmaLinux:8 | kernel-rt | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-core | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-debug | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-core | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-devel | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-kvm | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-modules | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-modules-extra | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-devel | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-kvm | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-modules | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| AlmaLinux:8 | kernel-rt-modules-extra | 4.18.0-553.8.1.rt7.349.el8_10 öncesi | 4.18.0-553.8.1.rt7.349.el8_10 |
| Debian:12 | linux | 5.10.40-1 öncesi | 5.10.40-1 |
| Red Hat:enterprise_linux:8::baseos | bpftool | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | bpftool-debuginfo | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-abi-stablelists | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-core | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-core | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-debuginfo | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-devel | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-modules | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-modules-extra | 0:4.18.0-553.8.1.el8_10 öncesi | 0:4.18.0-553.8.1.el8_10 |
+96
Aynı üründe
linux: tüm kayıtlarAynı birincil ürünün en yüksek skorlu diğer kayıtları.
- CVE-2022-0847A flaw was found in the way the "flags" member of the new pipe buffer structure was lacking proper initialization in copy_page_to_iter_pipe KEV89Hemen
- CVE-2021-22555Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACEKEV85Hemen
- CVE-2016-5195Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by leveraging incorrect haKEV83Hemen
- CVE-2019-13272In the Linux kernel before 5.1.17, ptrace_link in kernel/ptrace.c mishandles the recording of the credentials of a process that wants to creKEV77Bu hafta
- CVE-2013-6282The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the v6k and v7 ARM platforms do not validate certain addKEV77Bu hafta
- CVE-2013-2094The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9 uses an incorrect integer data type, which allows loKEV77Bu hafta
Düzeltme
Hangi sürüme geçmeli
Üretici, paket deposu ve Microsoft kayıtlarından derlenen düzeltme sürümleri. Yükseltmeden önce üreticinin notunu doğrulayın.
| Ürün / paket | Düzeltilmiş sürüm | Kaynak |
|---|---|---|
| Linux Linux | 4528c0c323085e645b8765913b4a7fd42cf49b65 | Üretici (CNA) |
| Linux Linux | 807fa14536b26803b858da878b643be72952a097 | Üretici (CNA) |
| Linux Linux | a11ddb37bf367e6b5239b95ca759e5389bb46048 | Üretici (CNA) |
| almalinux:kernel-rt | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-core | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-debug | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-debug-core | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-debug-devel | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-debug-kvm | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-debug-modules | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-debug-modules-extra | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-devel | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-kvm | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-modules | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:kernel-rt-modules-extra | 4.18.0-553.8.1.rt7.349.el8_10 · AlmaLinux:8 | Paket deposu (OSV) |
| debian:linux | 5.10.40-1 · Debian:12 | Paket deposu (OSV) |
| red hat:bpftool | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:bpftool-debuginfo | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-abi-stablelists | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-core | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-core | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-debuginfo | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-devel | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-modules | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-modules-extra | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| red hat:kernel-debuginfo | 0:4.18.0-553.8.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Paket deposu (OSV) |
| rocky linux:kernel | 0:4.18.0-553.8.1.el8_10 · Rocky Linux:8 | Paket deposu (OSV) |
| rocky linux:kernel-rt | 0:4.18.0-553.8.1.rt7.349.el8_10 · Rocky Linux:8 | Paket deposu (OSV) |
+11
İstismar durumu
Bilinen kamuya açık istismar yok
Şu an kamuya açık bir istismar görülmedi. Bu, güvende olduğunuz anlamına gelmez; yalnızca eşiğin biraz daha yüksek olduğunu gösterir.
Araştırma bağlamı
Pentester ve araştırmacı için: saldırı profili, puan anlaşmazlığı, zaman çizelgesi, yama commit’leri, kredi, varyant ve zincir adayları, bug bounty kapsamı. Hepsi mevcut veriden türetilir; istismar kodu içermez.
Zaman çizelgesi
Yayından bugüne: kavram kanıtı, Metasploit modülü, CISA KEV ve düzeltme kaydı. Tarihler kaynakların bildirdiği tarihlerdir.
Yayın dışında tarihli olay yok.
FIRST EPSS günlük puanı; yalnızca 0,01 ve üstü değişimler kaydedilir (adım grafiği).
Yama ve commit bağlantıları
Referanslardaki commit, PR ve diff adresleri. Patch-diff ve varyant avı için başlangıç noktası; istismar değil, düzeltmedir.
Referanslarda commit ya da PR bağlantısı yok.
Kredi
Tüm araştırmacılarCNA kaydında adı geçen bulan, bildiren ve analistler. Ada tıkla, aynı araştırmacının diğer kayıtlarını gör.
CNA kaydında kredi yok.
Varyant adayları
Aynı üründe aynı zafiyet sınıfı, 18 ay içinde. Yama kök nedeni kapatmadıysa kardeş hata burada olur.
- CVE-2024-57929324 gün arayladm array: fix releasing a faulty array block twice in dm_array_cursor_end28İzleyin
- CVE-2021-4729481 gün araylanetrom: Decrease sock refcount when sock timers expire22İzleyin
- CVE-2024-49953234 gün araylanet/mlx5e: Fix crash caused by calling __xfrm_state_delete() twice22İzleyin
- CVE-2024-49955234 gün araylaACPI: battery: Fix possible crash when unregistering a battery hook22İzleyin
- CVE-2024-56674301 gün araylavirtio_net: correct netdev_tx_reset_queue() invocation point22İzleyin
Zincir adayları
Aynı üründe kimlik doğrulama atlatma ile yetki isteyen bir açık kısa aralıkla yayımlanmış: birlikte kimlik doğrulamasız bir yola dönüşebilir.
—
Bug bounty kapsamı
Bilinen herkese açık program yok.
Kaynak: bounty-targets-data (HackerOne, Bugcrowd, Intigriti, YesWeHack herkese açık listeleri).
Ulusal bildirim (Siber Güvenlik Başkanlığı / USOM)
Bu kaydı anan resmi güvenlik bildirimleri; çözüm önerisi kurumun sayfasında.
- TR-24-0160 · 4 Mar 2024(Linux Kernel Güncellemesi)
Teknik detay
Saldırı koşulları
- Sisteme yerel erişimi olan biri tetikleyebilir.
- Düşük yetkili bir hesap yeterli.
- Kullanıcının bir şey yapması gerekmez.
- Zamanlama ya da yapılandırma gibi özel koşullar gerekir.
Başarılı olursa
- Gizlilik
- yüksek · veriler okunabilir
- Bütünlük
- yüksek · veri ya da yapılandırma değiştirilebilir
- Erişilebilirlik
- yüksek · hizmet durdurulabilir
- Saldırı vektörü
- Yerel
- Karmaşıklık
- Yüksek
- Gereken yetki
- Düşük
- Kullanıcı etkileşimi
- Gerekmez
- Kapsam
- Değişmez
- Gizlilik etkisi
- Yüksek
- Bütünlük etkisi
- Yüksek
- Erişilebilirlik etkisi
- Yüksek
Zayıflık sınıfı (CWE)
CWE-672 · Operation on a Resource after Expiration or ReleaseCVSS vektörü
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
nvd-primary
Saldırı bağlamı
Bu zafiyet sınıfının (CWE) MITRE CAPEC saldırı desenleri ve ATT&CK teknikleri. Tespit kuralı ve tehdit avı için başlangıç noktası.
Bu CWE için MITRE'de CAPEC/ATT&CK eşlemesi yok.
Değişiklik günlüğü
- Düzeltme✗ → ✓
Takip ettiğiniz kayıtlarda bu değişiklikler bildirim olarak da gelir. →
Referanslar
- git.kernel.org/stable/c/4528c0c323085e645b8765913b4a7fd42cf49b65
- git.kernel.org/stable/c/807fa14536b26803b858da878b643be72952a097
- git.kernel.org/stable/c/a11ddb37bf367e6b5239b95ca759e5389bb46048
Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.