Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Son 7 gün

CVE-2026-99054

Linux çekirdeğinde TIPC topsrv iş kuyrukları bağlantılar kapatılmadan yıkılmadığı için yarış durumu

Linux

Yüksek 7,8 CVSS 3.1
Yayımlandı
Güncellendi
24 Eki 2026
Açık yaşı
5 gün
Kaydı açan
Linux

ÖzetTürkçe

Linux çekirdeğinde, tipc_topsrv_stop fonksiyonu topoloji sunucusunun gönderme ve alma iş kuyrukları hâlâ çalışırken abone bağlantılarını kapatıyordu. Bu sırada soket geri çağrıları ve abonelik olayları daha fazla iş kuyruğa alabiliyor, çalışan gönderme/alma işleri ise conn_idr taraması sırasında bir bağlantının son referansını düşürebiliyordu. Bu yarış durumu, birden fazla kapatma hatasına yol açtı: idr_lock üzerinde serbest bırakılması engellenen bir bağlantıda conn_get çağrısından kaynaklanan refcount_t sıfıra eklemesi, tipc_conn_close içinde ardından gelen kullanım sonrası serbest bırakma (use-after-free), dinleyicinin veri hazır geri çağrısından yok edilmiş bir iş kuyruğuna queue_work çağrısı ve tarama idr_lock altında dönerken tipc_topsrv_exit_net içinde RCU takılması. Düzeltmede srv->listener, idr_lock altında temizlenerek bir kapanış bayrağı gibi kullanılıyor; NULL olduğunda queue_work atlanıyor, iş kuyrukları çalışan işleri boşaltmak için yok ediliyor ve ancak bundan sonra kalan bağlantılar kapatılıyor. Bu bayrak temizlendikten sonra tipc_conn_lookup reddediliyor ve kapatma taramasında bağlantı bulunamadığında idr_lock serbest bırakılıyor; böylece çalışan bir abonelik olayı taramanın kilidi tutduğu sırada idr_in_use değerini kilitleyemiyor. Sürüm 3, Tung Quang Nguyen'in 2026-09-23 tarihinde iş parçacığı içinde paylaştığı daha dar kapsamlı yamanın yerini alıyor; onun kapatma sırasını koruyor ve arama reddi ile boş idr kilidi açma adımlarını ekliyor. Etkilenen sürüm aralığı: = 3.11 (3.11 öncesi sürümler etkilenmiyor; 6.6.160, 6.12.113, 6.18.57 ve 7.2.11 ve sonrası etkilenmiyor). CVSS 3.1 skoru 7.8 (YÜKSEK), vektör: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H.

Kaynaktaki açıklama (İngilizce)

In the Linux kernel, the following vulnerability has been resolved:

tipc: destroy topsrv workqueues before closing connections

tipc_topsrv_stop() closed subscriber connections while the topology
server's send and receive workqueues were still running. Socket
callbacks and subscription events could then queue more work, and
in-flight send/recv work could drop the last connection reference
during the conn_idr walk.

That race produced several teardown failures: refcount_t addition on
0 from conn_get() on a connection whose release was blocked on
idr_lock, a subsequent use-after-free in tipc_conn_close(),
queue_work() on an already destroyed workqueue from the listener
data-ready callback, and an RCU stall in tipc_topsrv_exit_net()
while the walk spun under idr_lock.

Clear srv->listener under idr_lock so it acts as a shutdown flag,
skip queue_work() once it is NULL, destroy the workqueues to flush
in-flight work, and only then close the remaining connections.
Refuse tipc_conn_lookup() after that flag is cleared, and drop
idr_lock when the teardown walk finds no connection, so an
in-flight subscription event cannot pin idr_in_use while the
walk holds the lock.

v3 supersedes the narrower in-thread diff Tung Quang Nguyen
posted on 2026-09-23. It keeps his teardown order and adds the
lookup refusal and the empty-idr unlock.

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
Linux 3.11 –
< 3.11 Etkilenmiyor –
≥ 6.6.160 Etkilenmiyor –
≥ 6.12.113 Etkilenmiyor –
≥ 6.18.57 Etkilenmiyor –
≥ 7.2.11 Etkilenmiyor –

Kaynaklar7 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.