CVE-2026-97620
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: drm/xe: rcs/ccs batch işlemleri sonrası LSC untyped L1 dataport önbelleğini temizle emit_render_cache_flush(), çit sinyallemesi öncesinde L2/HDC veri önbelleğini temizlemek için PIPE_CONTROL0_HDC_PIPELINE_FLUSH ayarlarını yapar ancak PIPE_CONTROL DWord0[11]'deki 'Untyped Data-Port Cache Flush Enable' biti aracılığıyla LSC untyped L1 veri önbelleğinin temizlenmesini hiçbir zaman talep etmez. Bspec'e göre, 3D bor hattı modunda HDC Pipeline Flush'ın, yalnızca HDC_CHICKEN0[13:11] nasıl programlandığına bağlı olarak untyped L1 önbelleğini de temizlediği/geçersiz kıldığı belgelenmiştir. MTL ile başlayarak, HDC_CHICKEN0 nasıl programlanırsa programlansın, HDC Pipeline Flush ile untyped L1 önbellek temizliği arasındaki bu bağlantı pratikte artık geçerli değildir; dolayısıyla buna güvenmek BMG gibi daha yeni platformlarda güvenli değildir. Mesa'nın Vulkan sürücüsü (anv), çekirdeğin gönderimler arasında her iki önbelleği de temizlediğini varsaymış ve bu boşluk nedeniyle Llama.cpp gibi uygulamalarda kullanıcı tarafından fark edilen bozulmalarla karşılaşmıştır; şu anda her komut tamponunun sonunda kullanıcı alanından her iki önbelleği tekrar temizleyerek bunu aşmaktadır. Aynı kuyruk üzerindeki gönderimler arasındaki doğruluk kullanıcı alanının sorumluluğundadır ve çekirdeğe değil, Mesa'ya aittir. Ancak güvenlik açısından, bellek geri alındığında veya tahliye edildiğinde eski verilerin untyped L1 dataport önbelleği üzerinden sızmamasını sağlamalıyız; bu da KMD'nin belleği yeniden kullanım için serbest bırakmadan önce burayı temizlemesini gerektirir. MTL öncesinde, HDC_CHICKEN0 (zaten DG2 için Wa_22010960976/Wa_14013347512 aracılığıyla yapıldığı gibi) HDC Pipeline Flush'ı untyped L1 önbellek temizliğiyle güvenilir bir şekilde bağlı tutacak şekilde programlanabiliyordu, bu nedenle bu platformlar etkilenmemiştir. Mesa'nın kendi anv sürücüsü, MTL üzerinde donanımın HDC_CHICKEN0 nasıl programlanırsa programlansın ikisini birbirinden bağımsız hale getirdiğini ve yazmacı elle yazarak bile eski davranışı geri getiremediğini tespit etmiştir; bkz. Mesa commit 7c2ff46a4fc3 ("anv: don't prevent L1 untyped cache flush in 3D mode"). Çekirdek, MTL üzerinde CS'den temizleme işlemini güvenilir bir şekilde talep edemez, bu nedenle yeni PIPE_CONTROL bitini bunun güvenilebilir olduğu GRAPHICS_VERx100 >= 2000 (Xe2 ve sonrası) ile sınırlandırın. Belgeye dayanmayan platforma özgü HDC_CHICKEN0 davranışına bağlı kalmaksızın, belleğin yeniden kullanım için serbest bırakılmasından önce L1 veri önbelleğinin temiz olduğundan emin olmak için Xe2 ve sonrasında emit_render_cache_flush() fonksiyonunda PIPE_CONTROL0_UNTYPED_DATAPORT_CACHE_FLUSH değerini PIPE_CONTROL0_HDC_PIPELINE_FLUSH ile birlikte açıkça ayarlayın. Bspec: 56551 (commit 434514b6fe731e873808297c268fc52cdf4a1ce6 üzerinden cherry pick edilmiştir)
Nasıl düzeltilir
- Linux Linuxd73975c121f56fe3fcbbfcfe3ea8853b9f597ab3, fab569a69c3ae9beced68307e36048efa2709bec, 92393fc5227b2b701f2b1530c9cd6dac6ee90b71, f5fcf7e638b904397ec0f66d3ea6766ef0cfe25b ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 9f8f93bee3efdba3bf7853befe2219e3a300c305 ≤ v < d73975c121f56fe3fcbbfcfe3ea8853b9f597ab3, 9f8f93bee3efdba3bf7853befe2219e3a300c305 ≤ v < fab569a69c3ae9beced68307e36048efa2709bec, 9f8f93bee3efdba3bf7853befe2219e3a300c305 ≤ v < 92393fc5227b2b701f2b1530c9cd6dac6ee90b71, 9f8f93bee3efdba3bf7853befe2219e3a300c305 ≤ v < f5fcf7e638b904397ec0f66d3ea6766ef0cfe25b, 6.8 | d73975c121f56fe3fcbbfcfe3ea8853b9f597ab3, fab569a69c3ae9beced68307e36048efa2709bec, 92393fc5227b2b701f2b1530c9cd6dac6ee90b71, f5fcf7e638b904397ec0f66d3ea6766ef0cfe25b |
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.
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.