CVE-2024-43880

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: mlxsw: spectrum_acl_erp: Nesne iç içe geçme uyarısı düzeltildi Spectrum-2 ve daha yeni ASIC'lerdeki ACL'ler, algoritmik TCAM (A-TCAM) veya sıradan devre TCAM (C-TCAM) içinde yer alabilir. İlki daha fazla ACL (yani tc filtreleri) içerebilir ancak her bölgedeki (yani tc zinciri) maske sayısı sınırlıdır. Yukarıdaki sınırlamanın etkilerini azaltmak için cihaz, maskeleri yalnızca ardışık 8 bite kadar farklılık gösteren filtrelerin tek bir maskeyi paylaşmasına izin verir. Örneğin, dst_ip/25, 1 bitlik bir delta ile dst_ip/24 kullanılarak temsil edilebilir. C-TCAM'de kullanılan maske sayısında bir sınır yoktur (ve bu nedenle maske toplulaştırmayı desteklemez), ancak sınırlı sayıda filtre içerebilir. Sürücü, farklı TCAM'lerdeki filtreler bir maskeyi paylaşamadığından; filtrenin maskesinden ve filtrenin A-TCAM'e mi yoksa C-TCAM'e mi ekleneceğinden oluşan nesneleri ona ileterek maske toplulaştırmasını gerçekleştirmek için "objagg" kitaplığını kullanır. Oluşturulan nesne kümesi, filtrelerin ekleme sırasına bağlıdır ve her zaman optimal değildir. Bu nedenle sürücü, mevcut tüm nesnelere bakarak daha optimal bir küme ("hints") hesaplaması için periyodik olarak kitaplıktan talepte bulunur. Kitaplık, iki nesnenin toplulaştırılıp toplulaştırılamayacağını sürücüye sorduğunda, sürücü yalnızca sağlanan maskeleri karşılaştırır ve A-TCAM / C-TCAM belirtimini yoksayar. Amaç mümkün olduğunca çok filtreyi A-TCAM'e taşımak olduğu için yapılması gereken doğru işlem budur. Sürücü ayrıca, iki özdeş maskenin toplulaştırılmasını da yasaklar çünkü bu durum yalnızca A-TCAM'deki bir çakışmayı önlemek için birinin kasıtlı olarak C-TCAM'e konulmuş olması durumunda gerçekleşebilir. Yukarıdakiler şu ipucu kümesine yol açabilir: H1: {mask X, A-TCAM} -> H2: {mask Y, A-TCAM} // X, Y + delta'dır H3: {mask Y, C-TCAM} -> H4: {mask Z, A-TCAM} // Y, Z + delta'dır Kitaplıktan ipuçlarını aldıktan sonra sürücü, hesaplanan ipuçlarına danışarak ve geçiş sırasında cihaza her iki bölgede de arama yapması talimatını vererek filtreleri bir bölgeden diğerine taşımaya başlar. Maskesi X olan bir filtrenin yeni bölgede A-TCAM'e taşındığı varsayıldığında, ipucu araması H1'i döndürecektir. H2, H1'in üst nesnesi olduğundan, kitaplık onunla ilişkili nesneyi bulmaya çalışacak ve gerekirse oluşturacaktır; bu durumda başka bir ipucu araması (özyinelemeli) gerçekleştirilecektir. {mask Y, A-TCAM} için yapılan bu ipucu araması, sürücü kitaplığa A-TCAM / C-TCAM belirtimini yoksayan bir nesne karşılaştırma fonksiyonu ilettiği için ya H2'yi ya da H3'ü döndürecektir. Bu durum sonunda, kitaplık tarafından desteklenmeyen iç içe geçmiş nesnelere yol açabilir [1]. Sürücü tek kullanıcı olduğu için hem sürücüden hem de kitaplıktan nesne karşılaştırma fonksiyonu kaldırılarak sorun düzeltilmiştir. Bu şekilde arama işlemi yalnızca tam eşleşmeleri döndürecektir. Sorunu zamanında yeniden üretebilen güvenilir bir reprodüksiyon yöntemine sahip değilim, ancak düzeltmeden önce sorun birkaç dakika içinde ortaya çıkıyordu ve düzeltme ile bir saatten uzun süredir ortaya çıkmamaktadır. İpuçlarının mevcut faydasının sınırlı olduğunu, çünkü C-TCAM belirtimini içerdiklerini ve gerçekte gerçekleşemeyecek toplulaştırmaları temsil ettiklerini unutmayın. Bu konu net-next sürümünde ele alınacaktır. [1] WARNING: CPU: 0 PID: 153 at lib/objagg.c:170 objagg_obj_parent_assign+0xb5/0xd0 Modules linked in: CPU: 0 PID: 153 Comm: kworker/0:18 Not tainted 6.9.0-rc6-custom-g70fbc2c1c38b #42 Hardware name: Mellanox Technologies Ltd. MSN3700C/VMOD0008, BIOS 5.11 10/10/2018 Workqueue: mlxsw_core mlxsw_sp_acl_tcam_vregion_rehash_work RIP: 0010:objagg_obj_parent_assign+0xb5/0xd0 [...] Call Trace: <TASK> __objagg_obj_get+0x2bb/0x580 objagg_obj_get+0xe/0x80 mlxsw_sp_acl_erp_mask_get+0xb5/0xf0 mlxsw_sp_acl_atcam_entry_add+0xe8/0x3c0 mlxsw_sp_acl_tcam_entry_create+0x5e/0xa0 mlxsw_sp_acl_tcam_vchunk_migrate_one+0x16b/0x270 mlxsw_sp_acl_tcam_vregion_rehash_work+0xbe/0x510 process_one_work+0x151/0x370

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın21 Ağu 2024
İlk görülme21 Ağu 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.4.282, 5.10.224, 5.15.165, 6.1.103, 6.6.44, 6.10.3 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.1 ≤ v < 5.4.282, 5.5 ≤ v < 5.10.224, 5.11 ≤ v < 5.15.165, 5.16 ≤ v < 6.1.103, 6.2 ≤ v < 6.6.44, 6.7 ≤ v < 6.10.35.4.282, 5.10.224, 5.15.165, 6.1.103, 6.6.44, 6.10.3

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.