CVE-2026-99281
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: tun: Sahipsiz bir aygıta bağlanmak için CAP_NET_ADMIN gereksinimi Yirmi yıl önce, ca6bb5d7ab22 ("[NET]: Require CAP_NET_ADMIN to create tuntap devices.") commit'i ile bir tuntap aygıtı oluşturmanın CAP_NET_ADMIN gerektirmesi sağlanmıştı. Buradaki fikir, /dev/net/tun üzerindeki izinlerin 0666 olarak gevşetilmesine olanak tanımak ve böylece TUNSETOWNER ile atanan tun aygıtlarının sahiplerinin aygıtı gerçekten açabilmelerini ve kendi aygıtlarına erişebilmelerini sağlamaktı. O dönemde gözden kaçan nokta, sahibi *olmayan* kalıcı aygıtların zaten esasen herkes tarafından tüketilebilir olduğu ve aygıt düğümünü açabilen herkesin bunlara da bağlanabileceğiydi. O zaman bile, bunların açılması için CAP_NET_ADMIN gerekeceği yönündeki (hatalı) varsayımla, açıkça belirlenmiş bir sahibi olmayan kalıcı aygıtları kullanmak vahim bir kullanıcı alanı hatası değildi. Netdevice'ın oluşturulmasını/yapılandırılmasını, içine paketleri aktaran işlemden ayırmanın mantıklı olduğu durumlar mevcuttur. Daha sonra, bir yıl sonra 8c644623fe7e ("[NET]: Allow group ownership of TUN/TAP devices.") commit'i ile TUNSETGROUP eklendi. Commit mesajında, hem uid hem de gid ayarlanmışsa her ikisinin de eşleşmesi gerektiği belirtilmişti (bu başlı başına tuhaf bir seçimdi) ancak yine de *hiçbirinin* ayarlanmadığı durumda hiçbir iznin gerekmediği belirtilmemişti. Ardından 2012 yılında c8d68e6be1c3 ("tuntap: multiqueue support") commit'i, yeni kuyrukların oluşturulma anından itibaren bir aygıta eklenmesine izin verdi; bu durum, kullanıcı alanının oluşturma işlemi ile sonraki TUNSET{OWNER,GROUP} arasındaki yarışı kapatmasının önünde bir engel teşkil etti. 2024 yılında, 3ca459eaba1bf ("tun: fix group permission check") commit'i durumu daha makul hale getirmeye çalıştı: standart POSIX izinlerine uygun olarak yalnızca kullanıcının *veya* grubun eşleşmesini şart koştu ve ne kullanıcının ne de grubun erişime yetki vermediği durumlarda CAP_NET_ADMIN gereksinimini getirdi (ancak CAP_NET_ADMIN kontrolünü başa koyduğu için, yetenek kullanılmadığında bile yanlışlıkla kullanılmış gibi raporlayacaktı). Bu düzeltme, kullanıcı, grup veya CAP_NET_ADMIN tarafından yetkilendirilmediğinde bağlantının başarılı olmasını *bekleyen* bir selinux test paketinde gerilemeye neden olduğu iddiasıyla a70c7b3cbc06 ("tun: revert fix group permission check") commit'i ile geri alındı: https://lore.kernel.org/netdev/CAFqZXStkCBT4f+PwyVRmQGoT3p1eVa01fCG_aNtpt6dakXncUg@mail.gmail.com/ UAPI'yi bozmamalıyız. Ancak, kasıtlı olarak bir güvenlik açığını kullanan bir selinux test vakasını korumaya değer bir UAPI olarak değerlendirmek zorunda değiliz. Bu amaçla, sorun selinux-testsuite b2f894f0016b ("tests/tun_tap: set an owner on the device for the relabel tests") commit'i ile düzeltilmiştir. Sonuç olarak: Bir sahip veya grup atanmamış aygıtlardaki CAP_NET_ADMIN kontrolü eksikliği giderilirken, tuhaf tun sahiplik modeli (her ikisi de ayarlanmışsa kullanıcı *ve* grubun eşleşmesi zorunluluğu) olduğu gibi bırakılmıştır. Eğer birileri hala ikincisini düzeltmek isterse (ki önceki girişimin geri alınma nedeni aslında bu değildi), bunu ayrı bir çalışma kapsamında yapabilirler. Mevcut bir aygıta bağlanmaya yalnızca bir sahip ve/veya grup ayarlanmışsa ve çağıran taraf ayarlanan tüm kriterlerle eşleşiyorsa veya çağıran taraf CAP_NET_ADMIN yetkisine sahipse izin verilir. Tek davranışsal değişiklik, sahibi veya grubu olmayan bir aygıtın artık bağlanmak için CAP_NET_ADMIN gerektirmesidir; ki bu tam olarak kapatmak istediğimiz açıktır. Ve bu kez CAP_NET_ADMIN kontrolü doğru yere yerleştirilmiştir.
Nasıl düzeltilir
- Linux Linux2f92c0286cfd58bff9d6d54c01a771073d5eb775, e53d1cf05da8ea58a5743b7ce5894fb51b0b9700, ffdf678dd16610e3f006dac904bd37c09684673c ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | ca6bb5d7ab22ac79f608fe6cbc6b12de6a5a19f0 ≤ v < 2f92c0286cfd58bff9d6d54c01a771073d5eb775, ca6bb5d7ab22ac79f608fe6cbc6b12de6a5a19f0 ≤ v < e53d1cf05da8ea58a5743b7ce5894fb51b0b9700, ca6bb5d7ab22ac79f608fe6cbc6b12de6a5a19f0 ≤ v < ffdf678dd16610e3f006dac904bd37c09684673c, 2.6.18 | 2f92c0286cfd58bff9d6d54c01a771073d5eb775, e53d1cf05da8ea58a5743b7ce5894fb51b0b9700, ffdf678dd16610e3f006dac904bd37c09684673c |
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.