bcache: avoid oversized read request in cache missing code path
Noroxi değerlendirmesi
Öncelik: İzleyin (aksiyon skoru 22/100)
- İzlediğimiz kaynaklarda (CISA KEV, Exploit-DB, Metasploit, Nuclei, GitHub) herkese açık istismar kodu ya da sahada sömürü kaydı yok.
- Önümüzdeki 30 günde sömürülme olasılığı %0,19 (FIRST EPSS).
- 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.
- Düzeltilmiş sürüm: Linux Linux 41fe8d088e96472f63164e213de44ec77be69478, 555002a840ab88468e252b0eedf0b05e2ce7099c.
- Ulusal siber güvenlik bildirimlerinde (siberguvenlik.gov.tr) 1 kez anıldı.
Şimdilik düşük öncelik. Linux Linux 41fe8d088e96472f63164e213de44ec77be69478, 555002a840ab88468e252b0eedf0b05e2ce7099c ya da daha yeni sürüme yükseltin.
Kaydın verisinden otomatik üretilir: CVSS (NVD ve CNA), CISA KEV ve SSVC, FIRST EPSS, istismar kaynakları, düzeltme sürümleri. Nasıl hesaplıyoruz
Birincil kaynaklar: NVD · CVE.org · FIRST EPSS
In the Linux kernel, the following vulnerability has been resolved: bcache: avoid oversized read request in cache missing code path In the cache missing code path of cached device, if a proper location from the internal B+ tree is matched for a cache miss range, function cached_dev_cache_miss() will be called in cache_lookup_fn() in the following code block, [code block 1] 526 unsigned int sectors = KEY_INODE(k) == s->iop.inode 527 ? min_t(uint64_t, INT_MAX, 528 KEY_START(k) - bio->bi_iter.bi_sector) 529 : INT_MAX; 530 int ret = s->d->cache_miss(b, s, bio, sectors); Here s->d->cache_miss() is the call backfunction pointer initialized as cached_dev_cache_miss(), the last parameter 'sectors' is an important hint to calculate the size of read request to backing device of the missing cache data. Current calculation in above code block may generate oversized value of 'sectors', which consequently may trigger 2 different potential kernel panics by BUG() or BUG_ON() as listed below, 1) BUG_ON() inside bch_btree_insert_key(), [code block 2] 886 BUG_ON(b->ops->is_extents && !KEY_SIZE(k)); 2) BUG() inside biovec_slab(), [code block 3] 51 default: 52 BUG(); 53 return NULL; All the above panics are original from cached_dev_cache_miss() by the oversized parameter 'sectors'. Inside cached_dev_cache_miss(), parameter 'sectors' is used to calculate the size of data read from backing device for the cache missing. This size is stored in s->insert_bio_sectors by the following lines of code, [code block 4] 909 s->insert_bio_sectors = min(sectors, bio_sectors(bio) + reada); Then the actual key inserting to the internal B+ tree is generated and stored in s->iop.replace_key by the following lines of code, [code block 5] 911 s->iop.replace_key = KEY(s->iop.inode, 912 bio->bi_iter.bi_sector + s->insert_bio_sectors, 913 s->insert_bio_sectors); The oversized parameter 'sectors' may trigger panic 1) by BUG_ON() from the above code block. And the bio sending to backing device for the missing data is allocated with hint from s->insert_bio_sectors by the following lines of code, [code block 6] 926 cache_bio = bio_alloc_bioset(GFP_NOWAIT, 927 DIV_ROUND_UP(s->insert_bio_sectors, PAGE_SECTORS), 928 &dc->disk.bio_split); The oversized parameter 'sectors' may trigger panic 2) by BUG() from the agove code block. Now let me explain how the panics happen with the oversized 'sectors'. In code block 5, replace_key is generated by macro KEY(). From the definition of macro KEY(), [code block 7] 71 #define KEY(inode, offset, size) \ 72 ((struct bkey) { \ 73 .high = (1ULL << 63) | ((__u64) (size) << 20) | (inode), \ 74 .low = (offset) \ 75 }) Here 'size' is 16bits width embedded in 64bits member 'high' of struct bkey. But in code block 1, if "KEY_START(k) - bio->bi_iter.bi_sector" is very probably to be larger than (1<<16) - 1, which makes the bkey size calculation in code block 5 is overflowed. In one bug report the value of parameter 'sectors' is 131072 (= 1 << 17), the overflowed 'sectors' results the overflowed s->insert_bio_sectors in code block 4, then makes size field of s->iop.replace_key to be 0 in code block 5. Then the 0- sized s->iop.replace_key is inserted into the internal B+ tree as cache missing check key (a special key to detect and avoid a racing between normal write request and cache missing read request) as, [code block 8] 915 ret = bch_btree_insert_check_key(b, &s->op, &s->iop.replace_key); Then the 0-sized s->iop.replace_key as 3rd parameter triggers the bkey size check BUG_ON() in code block 2, and causes the kernel panic 1). Another ke ---truncated---
- Yayın
- 21 May 2024
- Güncelleme
- 17 Haz 2026
- EPSS
- %0,1 · 8. yüzdelik
- CWE
- —
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,1
CISA SSVC kararı
- Sömürü
- yok
- Otomatikleştirilebilir
- hayır
- Teknik etki
- kısmi
Vulnrichment: CISA'nın karar ağacı girdileri.
Bu kayıt değişirse haber alın
- KEV'de değil: sahada sömürü kaydı yok
- Herkese açık istismar kodu kaydı yok
- Düzeltme yayımlandı
Bunlardan biri değişirse günlük e-posta özetinde haber veririz.
WordPress siteniz mi var? WP Lens ile ücretsiz tarayın
Noroxi analizi
Sizin ortamınızda ne anlama geliyor?
Yukarıdaki değerlendirme kaydın verisinden otomatik üretilir; ortamınızı bilmez. Bu açığın sizde gerçekten sömürülebilir olup olmadığını ve hangi önlemin yeteceğini ekibimiz sizin sistemlerinizde doğrular.
Bu ürünü kullanıyoruz, yardım isteyinEtkilenen sistemler
Sürümünüz etkileniyor mu?
Ürünü seçip kullandığınız sürümü yazın. Bu kaydın sürüm aralıklarıyla tarayıcınızda karşılaştırılır; sürüm hiçbir yere gönderilmez.
| Ü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’inize sürümle eklerseniz eşleşme bunlarla yapılır.
- linux linux kernel5.12.11 ö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
- 3.10etkilenir
- cafe563591446cf80bfbc2fe3bc72a2e36cf1060 ve sonrası · 555002a840ab88468e252b0eedf0b05e2ce7099c öncesietkilenir · git
- cafe563591446cf80bfbc2fe3bc72a2e36cf1060 ve sonrası · 41fe8d088e96472f63164e213de44ec77be69478 öncesietkilenir · git
- 3.10 öncesietkilenmez · semver
- 5.12.11 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 |
|---|---|---|---|
| Debian:12 | linux | 5.14.6-1 öncesi | 5.14.6-1 |
| SUSE:Linux Enterprise High Availability Extension 12 SP5 | kernel-default | 4.12.14-122.222.1 öncesi | 4.12.14-122.222.1 |
| SUSE:Linux Enterprise Live Patching 12 SP5 | kgraft-patch-SLE12-SP5_Update_58 | 1-8.3.1 öncesi | 1-8.3.1 |
| SUSE:Linux Enterprise Real Time 12 SP5 | kernel-rt | 4.12.14-10.194.1 öncesi | 4.12.14-10.194.1 |
| SUSE:Linux Enterprise Real Time 12 SP5 | kernel-rt_debug | 4.12.14-10.194.1 öncesi | 4.12.14-10.194.1 |
| SUSE:Linux Enterprise Real Time 12 SP5 | kernel-source-rt | 4.12.14-10.194.1 öncesi | 4.12.14-10.194.1 |
| SUSE:Linux Enterprise Real Time 12 SP5 | kernel-syms-rt | 4.12.14-10.194.1 öncesi | 4.12.14-10.194.1 |
| SUSE:Linux Enterprise Server 12 SP5 | kernel-azure | 4.12.14-16.194.1 öncesi | 4.12.14-16.194.1 |
| SUSE:Linux Enterprise Server 12 SP5 | kernel-source | 4.12.14-122.222.1 öncesi | 4.12.14-122.222.1 |
| SUSE:Linux Enterprise Server 12 SP5 | kernel-source-azure | 4.12.14-16.194.1 öncesi | 4.12.14-16.194.1 |
| SUSE:Linux Enterprise Server 12 SP5 | kernel-syms | 4.12.14-122.222.1 öncesi | 4.12.14-122.222.1 |
| SUSE:Linux Enterprise Server 12 SP5 | kernel-syms-azure | 4.12.14-16.194.1 öncesi | 4.12.14-16.194.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | kernel-docs | 4.12.14-122.222.1 öncesi | 4.12.14-122.222.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | kernel-obs-build | 4.12.14-122.222.1 öncesi | 4.12.14-122.222.1 |
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
Bu üründe bundan önce ve sonra yayımlananlar
- ← ÖncekiCVE-2021-4727321 May 2024 · usb: dwc3-meson-g12a: fix usb2 PHY glue init when phy0 is disabled22İzleyin
- ← ÖncekiCVE-2021-4727421 May 2024 · tracing: Correct the length check which causes memory corruption31İzleyin
- Sonraki →CVE-2021-4727621 May 2024 · ftrace: Do not blindly read the ip address in ftrace_bug()22İzleyin
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 | 41fe8d088e96472f63164e213de44ec77be69478 | Üretici (CNA) |
| Linux Linux | 555002a840ab88468e252b0eedf0b05e2ce7099c | Üretici (CNA) |
| debian:linux | 5.14.6-1 · Debian:12 | Paket deposu (OSV) |
| suse:kernel-azure | 4.12.14-16.194.1 · SUSE:Linux Enterprise Server 12 SP5 | Paket deposu (OSV) |
| suse:kernel-default | 4.12.14-122.222.1 · SUSE:Linux Enterprise High Availability Extension 12 SP5 | Paket deposu (OSV) |
| suse:kernel-docs | 4.12.14-122.222.1 · SUSE:Linux Enterprise Software Development Kit 12 SP5 | Paket deposu (OSV) |
| suse:kernel-obs-build | 4.12.14-122.222.1 · SUSE:Linux Enterprise Software Development Kit 12 SP5 | Paket deposu (OSV) |
| suse:kernel-rt | 4.12.14-10.194.1 · SUSE:Linux Enterprise Real Time 12 SP5 | Paket deposu (OSV) |
| suse:kernel-rt_debug | 4.12.14-10.194.1 · SUSE:Linux Enterprise Real Time 12 SP5 | Paket deposu (OSV) |
| suse:kernel-source | 4.12.14-122.222.1 · SUSE:Linux Enterprise Server 12 SP5 | Paket deposu (OSV) |
| suse:kernel-source-azure | 4.12.14-16.194.1 · SUSE:Linux Enterprise Server 12 SP5 | Paket deposu (OSV) |
| suse:kernel-source-rt | 4.12.14-10.194.1 · SUSE:Linux Enterprise Real Time 12 SP5 | Paket deposu (OSV) |
| suse:kernel-syms | 4.12.14-122.222.1 · SUSE:Linux Enterprise Server 12 SP5 | Paket deposu (OSV) |
| suse:kernel-syms-rt | 4.12.14-10.194.1 · SUSE:Linux Enterprise Real Time 12 SP5 | Paket deposu (OSV) |
| suse:kgraft-patch-SLE12-SP5_Update_58 | 1-8.3.1 · SUSE:Linux Enterprise Live Patching 12 SP5 | Paket deposu (OSV) |
İ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ıklayın, aynı araştırmacının diğer kayıtlarını görün.
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.
Gece hesaplanan ilişki yok.
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-0519 · 22 May 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.
- Ö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)
—
CVSS 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ı.
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
Tüm referansları göster (1 daha)Daha az göster
Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.