CVE-2026-98068

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net/rds: rds_conn_shutdown()'ın eşzamanlı bir drop işlemini tüketmesine izin vermeyin rds_conn_shutdown(), yolu RDS_CONN_DISCONNECTING durumundan RDS_CONN_DOWN durumuna taşıyarak sona erer ve bu son geçişin başlangıç durumu olarak RDS_CONN_ERROR durumunu da kabul eder; böylece kapatma işlemi sırasında softirq bağlamında işlenen bir FIN, kapatma sürecini gürültülü bir hata yoluna saptırmaz. Ancak bu RDS_CONN_ERROR durumunun tüketilmesi, beraberinde gelen kapatma geçişinin de tüketilmesine neden olur: rds_conn_path_drop() fonksiyonu RDS_CONN_ERROR durumunu ayarlar ve ardından cp_down_w kuyruğa ekler; halihazırda RDS_CONN_DOWN durumunda olan bir yolda başlayan bir geçiş ise hiçbir işlem yapmaz (no-op). FIN durumu için bu zararsızdır çünkü FIN'in geldiği soket, kapatma işleminin az önce serbest bıraktığı soketin kendisidir. Ancak, yola önceden bir şey eklemiş olan bir dropper için bu durum zararlıdır. rds_tcp_accept_one() böyle bir dropper'dır. rds_tcp_accept_one_path() içerisindeki yol talebi, RDS_CONN_DOWN -> RDS_CONN_CONNECTING geçişini gerçekleştirir ve eşzamanlı bir drop işlemi —softirq bağlamındaki önceki bir soketteki FIN veya idari bir sıfırlama— bu talep ile onu takip eden ve RDS_CONN_ERROR durumunu kabul eden durum kontrolü arasında yolu RDS_CONN_ERROR durumuna getirebilir. Ardından accept işlemi, taze kabul edilen soketi rds_tcp_set_callbacks() ile kurarken, bu soket henüz mevcut değilken tc->t_sock örneğini almış olan kuyruktaki kapatma işlemi hala çalışmaya devam eder. rds_connect_path_complete() fonksiyonu RDS_CONN_UP durumuna geçişte başarısız olur ve yolu tekrar düşürerek, yeni kurulan soketi temizlemesi gereken geçişi kuyruğa ekler. Eğer yürütülmekte olan kapatmanın son geçişi, söz konusu drop işleminin RDS_CONN_ERROR durumunu tüketirse, kuyruktaki geçiş yolu RDS_CONN_DOWN durumunda bulur ve hiçbir işlem yapmaz. Kurulan soket asla kapatılmaz: geri çağrıları etkinleştirilmiş ve rds_tcp_connection bileşeni rds_tcp_tc_list üzerinde olacak şekilde kurulu kalır, karşı taraf hiçbir zaman okunmayan bir bağlantı görür ve yol, daha sonraki bir olay onu tekrar düşürene kadar RDS_CONN_DOWN durumunda takılı kalır. Bu durum, genişletilmiş yarış pencereleriyle, RDS_CONN_DOWN durumunda takılmış bir yola ait bir sokette sürekli büyüyen bir alma kuyruğu ve karşı tarafın gönderme yolunun bunun arkasında tıkanması şeklinde yeniden üretilmiştir. Son geçişi yalnızca DISCONNECTING -> DOWN olacak şekilde düzenleyin. Yol RDS_CONN_ERROR durumunda olduğu için bu işlem başarısız olursa, bir drop işlemi kapatma işlemiyle yarışmış demektir: yeniden bağlanma zamanlayıcısını iptal edin ve atlanan kuyruk kısmının geride bırakılmaması gereken tek parçası olan RDS_RECONNECT_PENDING değerini temizleyip geri dönün; böylece drop işleminin kuyruğa eklediği geçişin işi bitirmesine izin verin: bu işlem o sırada yola eklenmiş olan her şeyi kapatır, RDS_CONN_DOWN geçişini tamamlar ve kendi kuyruk kısmından yeniden bağlanmayı tekrar etkinleştirir. Bu daldaki zamanlayıcıyı susturma işlemi önemlidir çünkü yarışan drop işlemi her zaman o geçişi kuyruğa eklemez: rds_conn_path_drop(), bir imha (destroy) işlemi bekliyorken kuyruğa ekleme yapmadan döner; bu tam olarak netns kapatma veya modül kaldırma sırasında, rds_conn_path_destroy() cp_down_w içeriğini boşaltırken ölen soketteki bir FIN'in işlendiği durumdur. Boşaltılan geçiş bu dönüşü alan geçişse, daha sonra herhangi bir geçiş mevcut olmaz ve rds_conn_path_destroy() cp_conn_w'nin hala etkin olduğunu (WARN_ON) tespit eder ve ardından yeniden bağlanma zamanlayıcısı hala tetiklenebilen bir yolu serbest bırakır. Daldaki iptal işlemiyle, hangi geçiş tamamlanırsa tamamlansın, bir kapatma geçişinin her çıkışı zamanlayıcıyı susturulmuş halde bırakır. FIN durumu, bir geçiş sonra ve hala gürültülü günlük kayıtları olmadan ilerlemeye devam eder. Diğer tüm durumlar güncel rds_conn_path_error() yönetimini korur; mevcut hiçbir cp_state yazanı, DISCONNECTING durumundaki bir yolu RDS_CONN_ERROR dışında bir durumda bırakamaz (diğer tüm yazanlar DISCONNECTING olmayan bir durumdan cmpxchg yapar), dolayısıyla bu dal savunmacı niteliktedir. Önceki yamaların olmadığı çekirdeklerde aynı risk örnek tabanlı susturma ile mevcuttur; düzeltme orada da aynı şekilde uygulanır.

ÖnemYüksek
CVSS7.0
İstismar olasılığı—
ÜrünMicrosoft Azl3 Kernel
Yayın25 Eyl 2026
İlk görülme25 Eyl 2026

Nasıl düzeltilir

Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
microsoft azl3_kernel_6.6.157.1-1Aralık belirtilmemiş—

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.

Intelligence 360 paketinde

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.