CVE-2025-39901

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: i40e: debugfs dosyalarına olan okuma erişimini kaldırın 'command' ve 'netdev_ops' debugfs dosyaları, 02e9c290814c ("i40e: debugfs interface") commit'inden beri i40e sürücüsü tarafından desteklenen eski bir hata ayıklama arayüzüdür. Bu iki debugfs dosyası da çoğunlukla işlevsiz olan ve şüpheli bir mantıkla uygulanan bir okuma işleyicisi sağlar. Her ikisi de boş dize olarak başlatılan statik bir 256 baytlık tampon kullanır. 'command' dosyası durumunda bu tampon kelimenin tam anlamıyla hiçbir zaman kullanılmaz ve sadece yer kaplar. 'netdev_ops' dosyası durumunda ise yazılan son komut burada saklanır. Okuma sırasında, dosya içerikleri cihaz adının ardından gelen bir iki nokta üst üste ve ardından ilgili statik tamponun içeriği şeklinde sunulur. 'command' için bu her zaman "<device>: " olacaktır. 'netdev_ops' için ise "<device>: <yazılan son komut>" olacaktır. Ancak tamponun, bu modül tarafından işletilen tüm cihazlar arasında paylaşıldığını unutmayın. En iyi ihtimalle çoğu zaman anlamsız bilgilerdir; en kötü ihtimalle, herhangi bir kilitleme mekanizması görünmediğinden aynı anda erişilebilirler. Ayrıca yakın zamanda, her iki okuma fonksiyonunun snprintf kullanımı ve rastgele çekirdek belleğinin okunmasına neden olabilecek potansiyel taşmalar hakkında birden fazla rapor aldık. 'command' dosyası için statik tampon her zaman sıfırdır ve hiçbir zaman üzerine yazılmadığından bu kesinlikle imkansızdır. 'netdev_ops' dosyası için ise kullanıcı komut girişini dikkatlice oluşturursa bunun mümkün olduğu görülmektedir; girdi tampona kopyalanacak ve bu, snprintf'in kırpma yapmasına neden olacak kadar büyük olabilir, bu da copy_to_user'ın kzalloc tarafından tahsis edilen tampon uzunluğunun ötesini okumasına yol açar. Minimum düzeltme, snprintf()'yi geri dönüş değerini yazılan bayt sayısıyla sınırlayan ve böylece taşmayı önleyen scnprintf() ile değiştirmek olurdu. Daha kapsamlı bir düzeltme ise çoğunlukla işlevsiz olan statik tamponları kaldırarak 512 bayt tasarruf etmek ve okuma fonksiyonlarını bunları girdi olarak istemeyecek şekilde değiştirmek olurdu. Bunun yerine, bu dosyalara olan okuma erişimini tamamen kaldıralım. Bunlar debugfs'in bir parçası olarak sunulan hata ayıklama arayüzleridir ve sağlanan çıktı oldukça işlevsiz olduğundan, okuma erişiminin kaldırılmasının herhangi bir betiği bozacağına inanmıyorum. Netdev adı diğer daha standart arayüzler aracılığıyla bulunabilir ve 'netdev_ops' arayüzü, birden fazla cihaza aynı anda yazma işlemi gerçekleştirildiğinde kolayca hatalı sonuçlar verebilir. i40e_dbg_netdev_ops_buf bileşenini düzgün bir şekilde kaldırmak için, statik tampon kullanımından kaçınmak amacıyla yazma fonksiyonunu yeniden yapılandırmamız gerekir. Bunun yerine, tahsis edilmiş bir tampon ile i40e_dbg_command_write ile aynı mantığı kullanın. Kodu statik tampon yerine bunu kullanacak şekilde güncelleyin ve çıkışta tamponu serbest bıraktığımızdan emin olun. Bu işlem, birden fazla cihazda 'netdev_ops' dosyasına yapılan eşzamanlı yazmaları düzeltir ve artık kullanılmayan statik tamponun okuma erişimiyle birlikte kaldırılmasına olanak tanır.

ÖnemYüksek
CVSS7.1
İstismar olasılığı—
ÜrünLinux Kernel
Yayın1 Eki 2025
İlk görülme1 Eki 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.12.46, 6.16.6 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel3.12 ≤ v < 6.12.46, 6.13 ≤ v < 6.16.6, 6.176.12.46, 6.16.6

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.