CVE-2026-98070
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net/rds: rds_tcp_reset_callbacks() fonksiyonunda RDS_IN_XMIT ediniliyor rds_tcp_reset_callbacks(), yol durumunu RDS_CONN_RESETTING olarak ayarlayarak iletim yolunu sakinleştirir ve ardından temel soketi değiştirmeden ve rds_send_path_reset() fonksiyonunu çağırmadan önce RDS_IN_XMIT değerinin temizlendiğinin örneklenmesini bekler. Bitin temiz olduğunu örneklemek, ona sahip olmakla aynı şey değildir: rds_send_xmit(), wait_event() döndükten hemen sonra RDS_IN_XMIT değerini yeniden edinebilir. Kilidi aldıktan sonraki durum yeniden kontrolü bir depolama tamponlama (store-buffering) desenidir (sıfırlayıcı durumu yazar ve biti okur, gönderici biti yazar ve durumu okur) ve acquire_in_xmit() yalnızca bir edinme işlemidir; bu nedenle zayıf sıralı mimarilerde her iki taraf da birbirinin yazma işlemini kaçırabilir ve böylece iletim yolu, rds_send_path_reset() tarafından cp_xmit_* durumunun yeniden yazılmasıyla eşzamanlı olarak çalışır - ki bu tam olarak rds_send_path_reset() üzerindeki yorumun çağırıcılara önlemesi gerektiğini söylediği durumdur. Bunun yerine kilidi alın, soket değişimi ve rds_send_path_reset() boyunca kilitli tutun ve sonunda bir uyandırma işlemiyle serbest bırakın. Bekleme işleminin üzerinde belgelenen kilit sıralama kısıtlaması hala geçerlidir: kilit lock_sock() işleminden önce edinilir, dolayısıyla tcp_sendmsg() içindeki bir gönderici için biz soket kilidini tutarken asla beklenemez. Eski kodun iki detayı aynı değişiklikle ortadan kalkmaktadır: - t_sock artık yalnızca kilit edinildikten sonra okunur. Eski kod bunu beklemeden önce önbelleğe alıyordu; rds_conn_shutdown() içerisindeki yıkım işlemi o soketi serbest bırakır ve t_sock değerini temizler, bu nedenle bekleme öncesinde önbelleğe alınan bir işaretçi, kabul yolu devam ettiğinde güncelliğini yitirmiş olabilir. Bunu RDS_IN_XMIT altında okumak, yıkım işlemi aynı kilide sahip olduğunda dışlamayı tamamlayan unsurdur (bir sonraki yama bunu düzenleyecektir); o zamana kadar yıkım işlemi hala yalnızca biti örnekler ve iki yol bugün olduğu gibi birbirine açık kalmaya devam eder. - Eski !osock erken yolu, hiçbir serileştirme olmadan rds_send_path_reset() fonksiyonunu çağırıyordu. Artık normal yol gibi kilit altında çalışıyor. Önceki yamadaki koşullu RDS_CONN_RESETTING geçişi, her iki durumda da soket kontrolünden önce gerçekleşir: soket bulunamayan bir yol ya hala bağlanıyordur (yeniden bağlantı işçisi t_conn_path_lock üzerinde engellenmiştir) ve meşru olarak yeni sokette RESETTING -> UP durumuna geçer veya bu sırada yıkılmıştır ve düşürülür. Eski bekleme tabanlı sakinleştirmeyi açıklayan fonksiyon içi yorum, kilit tabanlı olanı açıklayacak şekilde yeniden yazılmış ve fonksiyonun üzerindeki güncelliğini yitirmiş blok yorumu (hala bir dönüş değerini ve eksik bir t_sock yazıcılar listesini tanımlıyordu), dört yazıcının tamamını -bağlantı, kabul, yıkım ve değişim yolları- ve her birini neyin serileştirdiğini belirtecek şekilde yenilenmiştir.
Nasıl düzeltilir
- Linux Linux670af4e4a4de5e6bb5daee3838485571a0caa5fa, 830a2e21b200c6b6fdccc63dd3f23932bf7a894b, a05790cb4ff03f797d76906990b148d83f63e7a3, d184e6dd4b8f3c20c018595fd09795a66b46c8ef, d625112564c3e980e02504270222b49b82690cee, 8e4c3b7844c906c7097b4cfedd9dd1f48c9a6a92, 062d9e008c67289e8e1b221ecdd8f9d60566d012, 02c5f9dc2efd823e061954d564ce00bacd1bebeb ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < 670af4e4a4de5e6bb5daee3838485571a0caa5fa, 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < 830a2e21b200c6b6fdccc63dd3f23932bf7a894b, 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < a05790cb4ff03f797d76906990b148d83f63e7a3, 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < d184e6dd4b8f3c20c018595fd09795a66b46c8ef, 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < d625112564c3e980e02504270222b49b82690cee, 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < 8e4c3b7844c906c7097b4cfedd9dd1f48c9a6a92, 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < 062d9e008c67289e8e1b221ecdd8f9d60566d012, 335b48d980f631fbc5b233cbb3625ac0c86d67cb ≤ v < 02c5f9dc2efd823e061954d564ce00bacd1bebeb, 4.7 | 670af4e4a4de5e6bb5daee3838485571a0caa5fa, 830a2e21b200c6b6fdccc63dd3f23932bf7a894b, a05790cb4ff03f797d76906990b148d83f63e7a3, d184e6dd4b8f3c20c018595fd09795a66b46c8ef, d625112564c3e980e02504270222b49b82690cee, 8e4c3b7844c906c7097b4cfedd9dd1f48c9a6a92, 062d9e008c67289e8e1b221ecdd8f9d60566d012, 02c5f9dc2efd823e061954d564ce00bacd1bebeb |
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.