bpf: Fix overrunning reservations in ringbuf
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix overrunning reservations in ringbuf The BPF ring buffer internally is implemented as a power-of-2 sized circular buffer, with two logical and ever-increasing counters: consumer_pos is the consumer counter to show which logical position the consumer consumed the data, and producer_pos which is the producer counter denoting the amount of data reserved by all producers. Each time a record is reserved, the producer that "owns" the record will successfully advance producer counter. In user space each time a record is read, the consumer of the data advanced the consumer counter once it finished processing. Both counters are stored in separate pages so that from user space, the producer counter is read-only and the consumer counter is read-write. One aspect that simplifies and thus speeds up the implementation of both producers and consumers is how the data area is mapped twice contiguously back-to-back in the virtual memory, allowing to not take any special measures for samples that have to wrap around at the end of the circular buffer data area, because the next page after the last data page would be first data page again, and thus the sample will still appear completely contiguous in virtual memory. Each record has a struct bpf_ringbuf_hdr { u32 len; u32 pg_off; } header for book-keeping the length and offset, and is inaccessible to the BPF program. Helpers like bpf_ringbuf_reserve() return `(void *)hdr + BPF_RINGBUF_HDR_SZ` for the BPF program to use. Bing-Jhong and Muhammad reported that it is however possible to make a second allocated memory chunk overlapping with the first chunk and as a result, the BPF program is now able to edit first chunk's header. For example, consider the creation of a BPF_MAP_TYPE_RINGBUF map with size of 0x4000. Next, the consumer_pos is modified to 0x3000 /before/ a call to bpf_ringbuf_reserve() is made. This will allocate a chunk A, which is in [0x0,0x3008], and the BPF program is able to edit [0x8,0x3008]. Now, lets allocate a chunk B with size 0x3000. This will succeed because consumer_pos was edited ahead of time to pass the `new_prod_pos - cons_pos > rb->mask` check. Chunk B will be in range [0x3008,0x6010], and the BPF program is able to edit [0x3010,0x6010]. Due to the ring buffer memory layout mentioned earlier, the ranges [0x0,0x4000] and [0x4000,0x8000] point to the same data pages. This means that chunk B at [0x4000,0x4008] is chunk A's header. bpf_ringbuf_submit() / bpf_ringbuf_discard() use the header's pg_off to then locate the bpf_ringbuf itself via bpf_ringbuf_restore_from_rec(). Once chunk B modified chunk A's header, then bpf_ringbuf_commit() refers to the wrong page and could cause a crash. Fix it by calculating the oldest pending_pos and check whether the range from the oldest outstanding record to the newest would span beyond the ring buffer size. If that is the case, then reject the request. We've tested with the ring buffer benchmark in BPF selftests (./benchs/run_bench_ringbufs.sh) before/after the fix and while it seems a bit slower on some benchmarks, it is still not significantly enough to matter.
- Yayın
- 17 Tem 2024
- Güncelleme
- 5 Ağu 2026
- EPSS
- %0,3 · 18. yüzdelik
- CWE
- CWE-770
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
22
İzleyin
Şimdilik düşük öncelik.
- CVSS
- 22 / 40 · 5.5 / 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
- 5,5
- CNA · Linux
- 7,8
- 2,3 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.
Etkilenen 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.8 ve sonrası · 6.1.97 öncesi
- linux linux kernel6.2 ve sonrası · 6.6.37 öncesi
- linux linux kernel6.7 ve sonrası · 6.9.8 öncesi
Ü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.8etkilenir
- 457f44363a8894135c85b7a9afd2bd8196db24ab ve sonrası · be35504b959f2749bab280f4671e8df96dcf836f öncesietkilenir · git
- 457f44363a8894135c85b7a9afd2bd8196db24ab ve sonrası · 0f98f40eb1ed52af8b81f61901b6c0289ff59de4 öncesietkilenir · git
- 457f44363a8894135c85b7a9afd2bd8196db24ab ve sonrası · d1b9df0435bc61e0b44f578846516df8ef476686 öncesietkilenir · git
- 457f44363a8894135c85b7a9afd2bd8196db24ab ve sonrası · 511804ab701c0503b72eac08217eabfd366ba069 öncesietkilenir · git
- 457f44363a8894135c85b7a9afd2bd8196db24ab ve sonrası · 47416c852f2a04d348ea66ee451cbdcf8119f225 öncesietkilenir · git
- 457f44363a8894135c85b7a9afd2bd8196db24ab ve sonrası · cfa1a2329a691ffd991fcf7248a57d752e712881 öncesietkilenir · git
- 5.8 öncesietkilenmez · semver
- 5.10.223 ve sonrası · 5.10.* dahil öncesietkilenmez · semver
- 5.15.164 ve sonrası · 5.15.* dahil öncesietkilenmez · semver
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:9 | bpftool | 7.4.0-503.15.1.el9_5 öncesi | 7.4.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-core | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-debug | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-debug-core | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-debug-devel | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-debug-devel-matched | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-debug-modules | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-debug-modules-core | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-debug-modules-extra | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-devel | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-devel-matched | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-modules | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-modules-core | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-64k-modules-extra | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-abi-stablelists | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-core | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-cross-headers | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-debug | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-debug-core | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-debug-devel | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-debug-devel-matched | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
| AlmaLinux:9 | kernel-debug-modules | 5.14.0-503.15.1.el9_5 öncesi | 5.14.0-503.15.1.el9_5 |
+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 | 0f98f40eb1ed52af8b81f61901b6c0289ff59de4 | Üretici (CNA) |
| Linux Linux | 47416c852f2a04d348ea66ee451cbdcf8119f225 | Üretici (CNA) |
| Linux Linux | 511804ab701c0503b72eac08217eabfd366ba069 | Üretici (CNA) |
| Linux Linux | be35504b959f2749bab280f4671e8df96dcf836f | Üretici (CNA) |
| Linux Linux | cfa1a2329a691ffd991fcf7248a57d752e712881 | Üretici (CNA) |
| Linux Linux | d1b9df0435bc61e0b44f578846516df8ef476686 | Üretici (CNA) |
| almalinux:bpftool | 7.4.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-core | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-debug | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-debug-core | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-debug-devel | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-debug-devel-matched | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-debug-modules | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-debug-modules-core | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-debug-modules-extra | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| almalinux:kernel-64k-devel | 5.14.0-503.15.1.el9_5 · AlmaLinux:9 | Paket deposu (OSV) |
| debian:linux | 6.1.98-1 · Debian:12 | Paket deposu (OSV) |
| red hat:bpftool | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:bpftool-debuginfo | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-abi-stablelists | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-core | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-core | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-debuginfo | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-devel | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-modules | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-modules-extra | 0:4.18.0-477.81.1.el8_8 · Red Hat:rhel_eus:8.8::baseos | Paket deposu (OSV) |
+1
İ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-2021-47137114 gün araylanet: lantiq: fix memory corruption in RX ring39İzleyin
- CVE-2024-3596958 gün araylaipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr35İzleyin
- CVE-2024-3402723 gün araylaf2fs: compress: fix to cover {reserve,release}_compress_blocks() w/ cp_rwsem lock31İzleyin
- CVE-2021-4755154 gün arayladrm/amd/amdkfd: Fix kernel panic when reset failed and been triggered again31İzleyin
- CVE-2021-47130124 gün araylanvmet: fix freeing unallocated p2pmem30İzleyin
- CVE-2024-2689491 gün araylaACPI: processor_idle: Fix memory leak in acpi_processor_power_exit()24İ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).
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.
- Özel bir koşul gerekmez; tekrarlanabilir.
Başarılı olursa
- Gizlilik
- yok
- Bütünlük
- yok
- Erişilebilirlik
- yüksek · hizmet durdurulabilir
- Saldırı vektörü
- Yerel
- Karmaşıklık
- Düşük
- Gereken yetki
- Düşük
- Kullanıcı etkileşimi
- Gerekmez
- Kapsam
- Değişmez
- Gizlilik etkisi
- Yok
- Bütünlük etkisi
- Yok
- Erişilebilirlik etkisi
- Yüksek
Zayıflık sınıfı (CWE)
CWE-770 · Allocation of Resources Without Limits or ThrottlingCVSS vektörü
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/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ı.
Saldırı desenleri (CAPEC)
- FloodingCAPEC-125olasılık: High · Medium
- Excessive AllocationCAPEC-130olasılık: Medium · Medium
- XML Ping of the DeathCAPEC-147olasılık: Low · Medium
- Exponential Data ExpansionCAPEC-197olasılık: High · Medium
- Serialized Data Parameter BlowupCAPEC-229olasılık: High · High
- Serialized Data with Nested PayloadsCAPEC-230olasılık: Medium · High
- Oversized Serialized Data PayloadsCAPEC-231olasılık: Medium · High
- HTTP DoSCAPEC-469Low
ATT&CK teknikleri
- Network Denial of Service:Direct Network FloodT1498.001
- Network Denial of Service:Reflection AmplificationT1498.002
- Endpoint Denial of ServiceT1499
- Endpoint Denial of Service: OS Exhaustion FloodT1499.001
- Endpoint Denial of Service:Service Exhaustion FloodT1499.002
- Endpoint Denial of Service:Application Exhaustion FloodT1499.003
Noroxi analizi
Bu kayıt için henüz Noroxi analizi yok
385 binden fazla 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 isteyinDeğ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/0f98f40eb1ed52af8b81f61901b6c0289ff59de4
- git.kernel.org/stable/c/47416c852f2a04d348ea66ee451cbdcf8119f225
- git.kernel.org/stable/c/511804ab701c0503b72eac08217eabfd366ba069
- git.kernel.org/stable/c/be35504b959f2749bab280f4671e8df96dcf836f
- git.kernel.org/stable/c/cfa1a2329a691ffd991fcf7248a57d752e712881
- git.kernel.org/stable/c/d1b9df0435bc61e0b44f578846516df8ef476686
- lists.debian.org/debian-lts-announce/2025/01/msg00001.html
Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.