CVE-2021-46989

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: hfsplus: küçültücü truncate işlemindeki bozulmaların önlenmesi commit 31651c607151 ("hfsplus: avoid deadlock on file truncation") ile bazı sorunların ortaya çıktığı düşünülmektedir. HFS+, her zaman 8 extent içeren extent kayıtlarına sahiptir. Katalog dosyasındaki ilk extent kaydının dolması durumunda, yenileri extents overflow dosyasından tahsis edilir. Küçültücü truncate işlemi, extents overflow dosyasında bulunan bir extent kaydının ortasında gerçekleştiğinde, hfsplus_file_truncate() içerisindeki mantık değiştirilmiş ve hfs_brec_remove() çağrısı artık koruma altına alınmamıştır. Doğru işlem, hfsplus_free_extents() çağrılarak extent kaydı içindeki yeni boyutu aşan extentlerin serbest bırakılması ve ardından tüm extent kaydının kaldırılıp kaldırılmaması gerektiğinin kontrol edilmesidir. Ancak koruma mekanizması (blk_cnt > start) artık hfs_brec_remove() çağrısından sonra geldiği için, eşleşen son extent kaydının koşulsuz olarak kaldırılması gibi istenmeyen bir etki oluşmaktadır. Bu sorunu yeniden üretmek için, en az 10 extent'e sahip bir dosya oluşturun ve ardından son extent kaydının ortasına küçültücü truncate işlemi uygulayın; böylece kalan extent sayısı 8'in altında kalmasın veya 8'e tam bölünmesin. Bu durum, son extent kaydının (8 extent) ortadan kısaltılması yerine tamamen kaldırılmasına neden olur. Bu da veri bozulmasına ve veri kaybına yol açar. Bunun çözümü, yeni kırpılmış son noktanın bu extent kaydının başlangıcının altında olup olmadığını kontrol ederek tüm extent kaydını kaldırmayı güvenli hale getirmektir. Ancak, ->tree_lock kilidini bıraktığımız için hfs_brec_remove() çağrısı eski yerine taşınamaz; aksi takdirde bir yarış durumu (race condition) oluşabilir ve önbelleğe alınan bilgilerin geçersiz kılınması düğüm verilerini bozabilir. Bir diğer sorun ise bununla ilişkilidir. (blk_cnt > start) bloğuna girildiğinde ->tree_lock kilidi tutulmamaktadır. Döngüden kilit tutulmadan çıkılmakta ancak hfs_find_exit() kilidi açmaktadır. Başka birinin kilidi bizden önce almasının mümkün olup olmadığı kesin olmasa da, bu durum hata ayıklaması zor hatalara ve erken kilit açmaya neden olabilir. Gerçek bir risk olmasa bile, kilitleme işlemleri her zaman dengeli tutulmalıdır. Bu nedenle, kontrolden hemen önce kilit alınmaktadır.

ÖnemYüksek
CVSS7.1
İstismar olasılığı—
ÜrünLinux Kernel
Yayın28 Şub 2024
İlk görülme28 Şub 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel4.19.191, 5.4.120, 5.10.38, 5.11.22, 5.12.5 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel4.19 ≤ v < 4.19.191, 4.20 ≤ v < 5.4.120, 5.5 ≤ v < 5.10.38, 5.11 ≤ v < 5.11.22, 5.12 ≤ v < 5.12.5, 5.134.19.191, 5.4.120, 5.10.38, 5.11.22, 5.12.5

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.