CVE-2025-39821
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: perf: Etkin olmayan olayların durdurulması/başlatılmasından kaynaklanan tanımsız davranışın önlenmesi PERF_EVENT_STATE_OFF durumundaki perf olaylarında pmu->start()/stop() çağrılması, event->hw.idx değerini -1 olarak bırakabilir. PMU sürücüleri daha sonra bu negatif indeksi bit düzeyinde işlemlerde kaydırma üssü olarak kullanmaya çalıştığında, UBSAN shift-out-of-bounds raporlarına yol açar. Sorun, olay gruplarının bazı üyeleri kasıtlı olarak devre dışı bırakıldığında kısıtlamayı (throttling) nasıl ele aldığındaki mantıksal bir kusurdur. Mark Rutland tarafından sağlanan analize ve yeniden üreticiye dayanmaktadır (bu sorun hem arm64 hem de x86-64 üzerinde). Senaryo şu şekilde gelişir: 1. Bir grup lideri olayı çok agresif bir örnekleme periyoduyla (ör. sample_period = 1) yapılandırılır. Bu, sık kesmelere neden olur ve kısıtlama mekanizmasını tetikler. 2. Aynı gruptaki bir alt olay devre dışı durumda (.disabled = 1) oluşturulur. Bu olay PERF_EVENT_STATE_OFF durumunda kalır. PMU'ya zamanlanmadığı için event->hw.idx değeri -1 olarak başlatılmış halde kalır. 3. Kısıtlama gerçekleştiğinde, perf_event_throttle_group() ve ardından perf_event_unthrottle_group(), devre dışı alt olay da dahil olmak üzere tüm kardeş olaylar üzerinde yinelenir. 4. Bu etkin olmayan alt olay üzerinde perf_event_throttle()/unthrottle() çağrılır ve bunlar da event->pmu->start()/stop() çağırır. 5. PMU sürücüsü olayı hw.idx == -1 ile alır ve bunu kaydırma üssü olarak kullanmaya çalışır. Ör. PMCNTENSET(idx) gibi makrolarda, UBSAN raporuna yol açar. Kısıtlama mekanizması, donanım üzerinde etkin olarak zamanlanmamış olayları başlatmaya/durdurmaya çalışır. Durum denetimini perf_event_throttle()/perf_event_unthrottle() içine taşıyarak etkin olmayan olayların tamamen atlanmasını sağlayın. Bu, yalnızca geçerli bir hw.idx değerine sahip etkin olayların işlenmesini sağlar, tanımsız davranışı önler ve UBSAN uyarılarını susturur. Düzeltilmiş denetim, PMU işlemlerine devam etmeden önce koşulun doğru olmasını sağlar. Sorun syzkaller yeniden üreticisiyle yeniden üretilebilir:
Nasıl düzeltilir
- linux linux_kernel6.16.5 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.16 ≤ v < 6.16.5, 6.17 | 6.16.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.
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.