CVE-2026-74658
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: futex: Sağlam futex çıkış yarışını biraz daha önle Sağlam bir futex kilidinin açılması, futex değerinin tamamı üzerine 0 yazar - FUTEX_WAITERS bitini siler - ve tek bir bekleyeni uyandırır. Bu uyandırma tek seferlik bir bildirimdir: protokol, alıcısının ya futex'i edinmesine (ve sonunda kalan çekişmenin farkında olarak kilidi açmasına) ya da tekrar uyumadan önce FUTEX_WAITERS bitini yeniden kurmasına dayanır. Uyandırılan bekleyen, bunlardan birini yapamadan öldürülürse, çekirdeğin devreye girip sıradaki görevi uyandırması gerekir. Bu, futex protokolünün bilinen bir komplikasyonudur ve daha önce ca16d5bee598 ("futex: Prevent robust futex exit race") commit'i ile kısmi bir düzeltme yapılmıştır. Ne yazık ki bu düzeltme yetersizdir. Bu arada üçüncü bir görev futex'i çekişmesiz hızlı yol üzerinden yeniden edinmişse, bildirim kaybolur: sağlam çıkış işleme, futex'in başka bir görev tarafından sahiplenildiğini görür ve hiçbir şey yapmaz; yeni sahip ise kilidi açarken FUTEX_WAITERS bitini görmez ve kimseyi uyandırmaz. Kalan bekleyenler, boş bir futex'in arkasında sonsuza kadar uyur: A futex'i sahiplenir, B ve C FUTEX_WAIT içinde uyur uval == A | FUTEX_WAITERS A sağlam kilit açma: 0 yaz, FUTEX_WAKE(1) B'yi uyandırır uval == 0 D hızlı yol edinme: cmpxchg(0 -> D) uval == D, FUTEX_WAITERS yok B uyandırmaya göre hareket etmeden öldürülür B çıkış taraması, bekleyen işlem: sahip D != B -> işlem yok D kilit açma: FUTEX_WAITERS yok -> uyandırma yok C sonsuza kadar uyur Bu, FUTEX_WAITERS bitini tutarlı tutmayı başaramayan uygulamadaki açık bir eksikliktir. Futex sözcüğü başka bir iş parçacığı tarafından sahiplenilmiş ancak FUTEX_WAITERS biti ayarlanmamışsa, sağlam liste çıkış işlemesini ek uyandırmayı da gerçekleştirecek şekilde genişleterek bu sorunu geçici olarak giderin. Bu, yıllardır tartışılan ve 3ca9595d9fb6 ("futex: Add support for unlocking robust futexes") commit'i ve sonraki değişikliklerle ele alınan, ancak yukarıda açıklanan sorunu hesaba katmayan çekişmesiz devralma/bırakma ve serbest bırakma dizisi sorununu düzeltmez. Çekişmeli sağlam futex'lerin çekirdek içinde kilidinin açılmasına dayanan daha eksiksiz bir çözüm bu değişiklik bağlamında tartışılmıştır ve ana hatta en kısa sürede görünmelidir. [ tglx: Değişiklik günlüğünü hafifçe düzeltti ve kodlama stilini düzeltti ]
Nasıl düzeltilir
- Linux Linux83b0f71d5a313a765754acab51d2ecc5de76e0b9, a1c2b7b86a946b6b172bce44d74553da2323a36c, 33bfa85458105d6169ebdb697f692b8bb8025bae, aa5c571901c6b22b58373693a4bf889ecab11ff5, 925628656b73b70930972ccde421de4f758d8650, 7b8c53263f8878bdd12c87e147ac6feca5c05211, 7cf710e70f9bb8ea75f759ebed09871801315992, 6d4514ca9cdf61fec4ec634cf50386f6f7e69748, 3.17, 4.10, 4.15, 4.20, 5.4, 5.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 | ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < 83b0f71d5a313a765754acab51d2ecc5de76e0b9, ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < a1c2b7b86a946b6b172bce44d74553da2323a36c, ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < 33bfa85458105d6169ebdb697f692b8bb8025bae, ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < aa5c571901c6b22b58373693a4bf889ecab11ff5, ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < 925628656b73b70930972ccde421de4f758d8650, ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < 7b8c53263f8878bdd12c87e147ac6feca5c05211, ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < 7cf710e70f9bb8ea75f759ebed09871801315992, ca16d5bee59807bf04deaab0a8eccecd5061528c ≤ v < 6d4514ca9cdf61fec4ec634cf50386f6f7e69748, 8dd558881e0f4d6942c19bd8f7b1a7c19becb59e, b90aa237f469c3575190a5e6a855b76ad1d2ce94, 3e24098da750991f75819069c79e090dfd029219, 2819f4030f43057238992a4adcd950d7c95aff65, 2c60b44d8ba9d62c2693d2692f118177f212b1a8, 82ca3ab31b9cf23b86436a85381e4c5757bc6b80, 3.16.82 ≤ v < 3.17, 4.9.264 ≤ v < 4.10, 4.14.158 ≤ v < 4.15, 4.19.87 ≤ v < 4.20, 5.3.14 ≤ v < 5.4, 5.4.1 ≤ v < 5.5, 5.5 | 83b0f71d5a313a765754acab51d2ecc5de76e0b9, a1c2b7b86a946b6b172bce44d74553da2323a36c, 33bfa85458105d6169ebdb697f692b8bb8025bae, aa5c571901c6b22b58373693a4bf889ecab11ff5, 925628656b73b70930972ccde421de4f758d8650, 7b8c53263f8878bdd12c87e147ac6feca5c05211, 7cf710e70f9bb8ea75f759ebed09871801315992, 6d4514ca9cdf61fec4ec634cf50386f6f7e69748, 3.17, 4.10, 4.15, 4.20, 5.4, 5.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.