CVE-2026-90338
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: serial: amba-pl011: atomik yazmalar için konsol saatinin etkin tutulması pl011_console_write_atomic(), uyumanın izin verilmediği nbcon atomik bağlamından çalışır. Bu fonksiyon, common-clk enable_lock kilidini alan clk_enable() fonksiyonunu çağırır. PREEMPT_RT altında bu, uyuyan bir kilittir: clk_enable_lock() önce spin_trylock_irqsave()'i dener ancak çakışma durumunda spin_lock_irqsave()'e geri döner. Bu nedenle, clk destekli bir pl011 ile RT çekirdek üzerinde atomik bağlamda yapılan bir printk şu hatayı tetikleyebilir: BUG: sleeping function called from invalid context at spinlock_rt.c:48 __might_resched from rt_spin_lock rt_spin_lock from clk_enable_lock clk_enable_lock from clk_enable clk_enable from pl011_console_write_atomic ... from vprintk_emit Bu durum PREEMPT_RT üzerinde tespit edilmiş ve yeniden üretilmiştir; Arm32 ve arm64 DT SoC'lar etkilenmektedir; arm64 SBSA/ACPI'da clk bulunmadığından clk_enable(NULL) kilit öncesinde kısa devre yapar. Ek olarak, write_atomic() NMI bağlamından çağrılabilir ve kilitlemeden kaçınacağı belgelenmiştir. Geri çağırma işleminden clk_enable()'ın kaldırılması, common-clock enable_lock'un potansiyel olarak güvensiz NMI edinimini de önler. nbcon atomik yetenekli bir konsol her bağlamdan yazdırılabilir olmalıdır, bu nedenle saat yazımlar arasında kapatılamaz. Konsol çıktıya uygun olduğunda saati etkinleştirin: pl011_console_setup() içinde clk_prepare_enable() kullanın, bunu konsol .exit() geri çağırmasında clk_disable_unprepare() aracılığıyla serbest bırakın ve write_atomic() ile write_thread() içindeki yazım başına düşen clk_enable()/clk_disable() çiftlerini kaldırın. printk konsolları askıya aldığında, uart_suspend_port() konsol erişimini durdurduktan sonra referansı bırakın ve uart_resume_port() öncesinde geri yükleyin -- ancak yalnızca askıya alma işlemi portu gerçekten askıya alınmış olarak işaretlediyse (uyandırma yeteneğine sahip bir tty çalışmaya devam eder ve saatini korumalıdır) ve no_console_suspend işlevinin çalışması için console_suspend_enabled yanlış olduğunda referansı koruyun. Saatin etkin tutulmasının aktif güç maliyeti platforma bağlıdır: UART saatinin sabit, her zaman açık bir osilatör olduğu yerlerde maliyet yoktur; kapatılabilir bir saat dalı olduğu yerlerde ise gerçek bir maliyet vardır ve bu durumda konsol çıktıya uygunken saat (ve muhtemelen üst saatleri) kapatılamaz. Serial core portu gerçekten askıya aldığında, saat sağlayıcısının saat ağacını kapatabilmesi için referans serbest bırakılır.
Nasıl düzeltilir
- Linux Linux5b77848423f4a5a362dcc3caedcdc1a75d0758c3, 2ad24c1d0b939d814a3020f96a667ac2d0394289, c0e8cfef754645856374e82c8effd54b7d82002b ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 2eb2608618ce5878e11bbe68cc8d2699c8f3a81a ≤ v < 5b77848423f4a5a362dcc3caedcdc1a75d0758c3, 2eb2608618ce5878e11bbe68cc8d2699c8f3a81a ≤ v < 2ad24c1d0b939d814a3020f96a667ac2d0394289, 2eb2608618ce5878e11bbe68cc8d2699c8f3a81a ≤ v < c0e8cfef754645856374e82c8effd54b7d82002b, 6.15 | 5b77848423f4a5a362dcc3caedcdc1a75d0758c3, 2ad24c1d0b939d814a3020f96a667ac2d0394289, c0e8cfef754645856374e82c8effd54b7d82002b |
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.