CVE-2026-64044
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: ovpn: CMD_NEW_PEER hata yolunda eş referans sayısına (peer refcount) uyulması ovpn_nl_peer_new_doit()'in hata yolu, ovpn_peer_put() yerine doğrudan ovpn_peer_release() fonksiyonunu çağırarak kref mekanizmasını baypas etmektedir. İlgili yorum ("eş henüz hashlenmedi, dolayısıyla herhangi bir bağlamda kullanılmıyor"), UDP için geçerli olsa da TCP için geçerli değildir. UDP için, ovpn_socket birleşimi (union) .ovpn kolunu kullanır ve asla bir eşe geri işaret etmez; UDP encap_recv, henüz doldurulmamış hash tabloları üzerinden eşleri arar, bu nedenle yeni eş, ovpn_peer_add() onu yayınlayana kadar erişilemez durumdadır. TCP için, ovpn_socket_new() ovpn_sock->peer değerini ayarlar ve ovpn_tcp_socket_attach() rcu_assign_sk_user_data() aracılığıyla ovpn_sock'u yayınlar. Bu andan itibaren, hata yolundaki ovpn_socket_release() bağlantıyı kesene kadar TCP fd tamamen yapılandırılmıştır: kullanıcı alanındaki fd üzerindeki recvmsg / sendmsg / close / poll işlemleri ile strparser tarafından yönlendirilen ovpn_tcp_rcv() yolu, sk_user_data -> ovpn_sock->peer üzerinden eşe ulaşabilir ve ovpn_peer_hold() aracılığıyla onun referans sayısını artırabilir. (ovpn_socket_release() içinde çağrılan) ovpn_tcp_socket_wait_finish(), strparser'ı ve tx işlerini boşaltır ancak halihazırda bir eş referansı tutan kullanıcı alanı sistem çağrısı çağrılarıyla senkronize olmaz. Eğer böyle bir çağrı devam ederken -özellikle peer->tcp.user_queue üzerinde __skb_recv_datagram() içerisinde bloke olmuş bir ovpn_tcp_recvmsg()- ovpn_nl_peer_modify() veya ovpn_peer_add() bir hata döndürürse, doğrudan yapılan ovpn_peer_release() çağrısı, çağrı hala referansı tutarken eşi yok eder ve o çağrıdan gelen nihai ovpn_peer_put() işlemi serbest bırakılmış bellek üzerinde çalışır. Doğrudan yıkıcı (destructor) çağrısını, kref'in imha işlemini son referans bırakılana kadar doğru şekilde ertelemesi için ovpn_peer_put() ile değiştirin. Eşzamanlı bir kullanıcının bulunmadığı yaygın durumda davranış değişmez: kref hemen sıfıra iner ve ovpn_peer_release_kref() aynı yıkıcıyı çalıştırır. Bu dönüşümle birlikte ovpn_peer_release() fonksiyonunun peer.c dışında hiçbir çağırıcısı kalmamıştır -aynı çeviri birimindeki ovpn_peer_release_kref() tek kalan kullanıcıdır- bu nedenle fonksiyonu static yapın ve peer.h dosyasındaki bildirimini kaldırın.
Nasıl düzeltilir
- linux linux_kernel6.18.34, 7.0.11 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.16 ≤ v < 6.18.34, 6.19 ≤ v < 7.0.11, 7.1 | 6.18.34, 7.0.11 |
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.