CVE-2026-98580
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: nfc: llcp: accept_queue yaşam döngüsündeki yarış durumu düzeltildi nfc_llcp_socket_release() fonksiyonunda, soketler ve dinleyici kabul kuyrukları yerel soketlerin rwlock'u ve bh_lock_sock() altında taranır. Ancak, bh_lock_sock(), accept() sırasında nfc_llcp_accept_dequeue() tarafından tutulan işlem bağlamındaki lock_sock() ile senkronize olmaz. socket_release() fonksiyonu sock_owned_by_user() kontrolü yapmadığından, her iki yol da aynı alt soketi eşzamanlı olarak ayıklayabilir ve serbest bırakabilir; bu durum nfc_llcp_accept_unlink() içerisinde serbest bırakıldıktan sonra kullanım (use-after-free) veya child->parent üzerinde bir NULL işaretçi referansına yol açar. Bu senkronizasyon yarış durumu, nfc_llcp_socket_release() fonksiyonunun bh_lock_sock() yerine işlem bağlamındaki lock_sock() kullanmasıyla şu şekilde düzeltilmiştir: 1. lock_sock()'un rwlock tutulmadan alınabilmesi için nfc_llcp_sock_list_pop() kullanılarak yazma kilidi altında yerel soket listesinden soketler çıkarılır. 2. lock_sock() uyku moduna geçebileceği için, nfc_llcp_local yapısının nihai serbest bırakılması bir iş kuyruğuna (release_work) ertelenir. Bu, son yerel referans softirq bağlamından düşürüldüğünde ortaya çıkan atomic bağlamda uyuma (sleeping-in-atomic) hatasını önler. Ek olarak, kayıt aşamasından nihai imha aşamasına kadar local üzerinde tek bir cihaz referansı tutulur. 3. nfc_llcp_local_get() fonksiyonunda, yıkımı planlanmış bir yerel nesnenin yeniden canlandırılmasını önlemek için kref_get_unless_zero() kullanılır. 4. Dinleyicinin eşzamanlı olarak kapatılması durumunda askıda kalmaları önlemek için llcp_sock_accept() fonksiyonunda, schedule_timeout() sonrası uyanıldığında dinleyici soket durumunun hala LLCP_LISTEN olduğu doğrulanır. 5. Dinleyici serbest bırakılırken kabul edilmemiş alt soketler ayıklandığında, bunlar local->sockets üzerinden ayrılır, sock_orphan() çağrılır ve başlangıçtaki sk_alloc oluşturma referansları sock_put() aracılığıyla düşürülür. 6. Parent erişimi bir NULL kontrolü ile korunarak nfc_llcp_accept_unlink() fonksiyonu idempotent hale getirilir.
Nasıl düzeltilir
- Linux Linux54adcabb0f1deef1bdae5fc64779ed6d442721c9, 7c938aad5108382c6ad7453c4b5ee8ae3f3252ed, d2093a0981138876212bc5f473bdbfba0786e064, 41256821762a7114906b178826d17098e2fa5992, 53867f6acb1af7f12d6485fa8a2819318f89083b, da8a07757383614a8380a0f7dd54749d2687b82e, d5e1c92d09caed19f2988739695ce611a86ba6f8, c3eef2f988a3db9690369d7cef9a3344dd9788d3 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < 54adcabb0f1deef1bdae5fc64779ed6d442721c9, 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < 7c938aad5108382c6ad7453c4b5ee8ae3f3252ed, 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < d2093a0981138876212bc5f473bdbfba0786e064, 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < 41256821762a7114906b178826d17098e2fa5992, 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < 53867f6acb1af7f12d6485fa8a2819318f89083b, 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < da8a07757383614a8380a0f7dd54749d2687b82e, 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < d5e1c92d09caed19f2988739695ce611a86ba6f8, 50b78b2a6500d0e97c204c1b6c51df8c17358bbe ≤ v < c3eef2f988a3db9690369d7cef9a3344dd9788d3, 3.7 | 54adcabb0f1deef1bdae5fc64779ed6d442721c9, 7c938aad5108382c6ad7453c4b5ee8ae3f3252ed, d2093a0981138876212bc5f473bdbfba0786e064, 41256821762a7114906b178826d17098e2fa5992, 53867f6acb1af7f12d6485fa8a2819318f89083b, da8a07757383614a8380a0f7dd54749d2687b82e, d5e1c92d09caed19f2988739695ce611a86ba6f8, c3eef2f988a3db9690369d7cef9a3344dd9788d3 |
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.