· kaynak Hacker News – Front Page (native)
Linux kernel TCP el sıkışma use-after-free açığı CVE-2026-98432, RCU ile geciktirilen serbest bırakmalarla giderildi
Linux kernel'in IPv4 TCP el sıkışma yolundaki bir use-after-free hatası, IP seçenekleri belleğini başka bir CPU hâlâ okurken serbest bırakıyor. Bir red team, MPTCP dinleyicisi üzerinde uzaktan root elde etti; operasyon ekipleri sürüm dizgelerine değil yamaları doğrulamalı.

Linux kernel'in IPv4 TCP el sıkışma yolunda izlenen CVE-2026-98432 use-after-free hatası, bir CPU'nun başka bir CPU'nun çoktan serbest bıraktığı IP seçenekleri belleğini okumasına yol açabiliyor. e3f33b0a1d89 commit'i olarak birleştirilen upstream düzeltme, bu nesnelerin geri kazanımını bir RCU grace period tamamlanana kadar geciktiriyor; sorunu ortaya çıkaran analiz ise operasyon ekiplerinin kernel sürüm dizgilerine güvenmek yerine yamalanmış derlemelerini doğrulamaları gerektiğini vurguluyor.
Yarış durumu nasıl oluşuyor
Penligent'te yayımlanan bir yazıya göre, bir TCP sunucusu gelen SYN'e tam bir bağlantı yerine kompakt bir request socket ile yanıt veriyor ve el sıkışma sürerken kaynak maliyetini düşük tutuyor. El sıkışma tamamlandığında tcp_v4_syn_recv_sock(), request'in ireq_opt işaretçisini yeni oluşturulan child socket'e inet_opt olarak devrediyor — bu bir aktarım, kopyalama değil.
Bu sırada ikinci bir CPU, aynı request için yeniden iletilmiş bir SYN işleyip tcp_check_req() üzerinden yeni bir SYN-ACK gönderebilir. Bu yol, request'in IP seçeneklerine tcp_v4_send_synack(), inet_csk_route_req() ve ip_options_build() gibi yardımcılar aracılığıyla bir RCU read-side critical section içinde erişiyor. Yaşam süresi uyumsuzluğu asıl hata: okuyan taraf nesneyi RCU koruyor gibi davranıyor, ancak yıkıcı onu düz kfree() ile serbest bırakıyor ve bu da anında yeniden kullanıma izin veriyor. Child socket, yeniden iletim yolu devam ederken kaldırılırsa, o CPU artık options nesnesine ait olmayan belleği referans kaldırmaya devam ediyor.
Yama, hem inet_sock_destruct() hem de tcp_v4_reqsk_destructor() işlevlerini kfree_rcu()'ya taşıyor. Ayrıca bir request-migration varyantını da kapsıyor: net.ipv4.tcp_migrate_req=1 olduğunda ya da bir BPF_SK_REUSEPORT_SELECT_OR_MIGRATE programı geçişi yönlendirdiğinde, klonlanmış bir request options nesnesini ebeveyniyle kısa süreliğine paylaşabiliyor ve eski request'i tutan bir CPU, klonun serbest bırakılmasından sonra da yaşayabiliyor.
Temel sahiplik hatası IPv4'e özgü. Karşılık gelen IPv6 işlevi işaretçiyi taşımak yerine seçenekleri çoğaltıyor, dolayısıyla olağan IPv6 child oluşturma yolu etkilenmiyor — ancak upstream metni, CALIPSO etiketlemesi varken ipv6_opt ile ilgili ayrı bir IPv6 kaygısına da dikkat çekiyor; o konu başka bir yerde ele alınıyor.
Önem düzeyine üç bakış
CVE kaydı 9.8'lik bir CVSS 3.1 taban puanı taşıyor ve kimlik doğrulaması gerektirmeyen, ağdan erişilebilen, gizlilik, bütünlük ve erişilebilirlik üzerinde yüksek etkili bir en kötü senaryoyu tanımlıyor. Penligent'in aktardığına göre Red Hat'in ürün analizi bunu 5.9 olarak puanlıyor; sömürmeyi kazanması zor bir yarış durumu olarak değerlendiriyor ve desteklenen derlemeler üzerindeki sonuçları daha temkinli tartıyor. Anthropic'in Frontier Red Team'ı ise kontrollü bir laboratuvar ortamında, Multipath TCP dinleyicisi bulunan bir Linux sunucusuna karşı çalışan bir uzaktan root kod yürütme zinciri gösterdi.
Penligent'in çerçevesine göre bunlar çelişki değil, birbirini tamamlayan veri noktaları: upstream kaydı bellek yaşam süresi hatasını ve kuramsal üst sınırını tanımlıyor, satıcı puanı dağıtılan kodu ve beklenen koşulları yansıtıyor, exploit ise somut bir yolu kanıtlıyor. Herhangi birini görmezden gelmek ya da kapsamının ötesine genişletmek yanıltıcı olur.
Kanıtlanmamış olanlar
Alıntılanan hiçbir kaynak, genel internet üzerinde sömürmeyi göstermiyor. Laboratuvar sonucu, savunmasız MPTCP dinleyicilerinin ne kadar yaygın olduğunu, genel bir başarı oranını ya da aynı zincirin kernel derlemeleri, CPU mimarileri, allocator'lar ve sağlamlaştırma profilleri arasında sorunsuz aktarıldığını kanıtlamıyor. Paket kaybı, aşırı yüklenmiş servisler ve istemci yeniden denemelerinden doğal olarak ortaya çıkan yoğun SYN yeniden iletim trafiği de tek başına bir saldırı kanıtı değil; savunmasız bir ana makine ve kernel belirtileriyle ilişkilendirilmesi gerekiyor.
Yamanın doğrulanması
Önerilen yanıt operasyonel: internete dönük Linux ağ ana makinelerini — ağ geçitleri, load balancer'lar, Kubernetes node'ları, VPN uç noktaları, reverse proxy'ler ve cihazlar — envanterleyin, MPTCP dinleyicileri sıranın başına koyun, ardından satıcının düzeltilmiş derlemesini kurun, yeniden başlatın ve çalışan kernel'in düzeltmeyi içerdiğine dair kanıt tutun. Debian'ın güvenlik takipçisi sorunu düzeltilmiş paketlerle eşleştiriyor, Ubuntu'nun CVE sayfası ise her kernel varyantını ayrı ayrı izliyor; bu da uname -r karşılaştırmalarının upstream sürümlerine göre hem yanlış pozitif hem yanlış negatif ürettiği yönündeki makale vurgusunu destekliyor. Savunulabilir kanıt; satıcı danışma belgesi, package changelog, derleme üst verisi, VEX bildirimi veya düzeltme commit'inin teyit edilmiş bir backport'idir.
MPTCP'yi devre dışı bırakmak, araştırmadaki sömürü zincirinde kullanılan tam yapılandırmayı ortadan kaldırıyor ve kısa vadeli maruziyeti azaltabilir; ancak altta yatan IPv4 yaşam süresi hatası olağan request ve child socket yollarını da kapsıyor. Kalıcı düzeltme yamalamaktır.
Neden önemli
Hata, herhangi bir kimlik doğrulaması tamamlanmadan önce sıradan trafik tarafından erişilen kernel kodunda yer aldığından, maruziyet zayıf bir uygulamaya değil, erişilebilir bir TCP dinleyicisine sahip olmaya bağlı. MPTCP'li bir ana makinedeki uzaktan root gösterimi, hatanın yalnızca bir çökme vektörü olmadığını ortaya koyuyor; 9.8 ile 5.9 arasındaki puan farkı ise tek bir sayının yama kararını yönlendiremeyeceğinin bir hatırlatıcısı. Doğrulama önerisi de genellenebilir: dağıtımlar düzeltmeleri eski görünümlü sürümlere backport ettiği için, bir filon korunduğunun tek güvenilir sinyali kanıta dayalı teyittir.
- #linux-kernel
- #security
- #cve
- #tcp
- #patching