Güvenlik bildirisi 2018-12-13: resource/paket işleme DoS (CVSS 6.5)
Resource işleme ve ağ paketi ayrıştırmadaki bir açık, uzak bir saldırganın sunucuyu çökertmesine izin veriyordu ve aktif olarak suistimal ediliyordu. 923'te düzeltildi.
Resource işleme ve ağ paketi ayrıştırmadaki bir açık, uzak bir saldırganın sunucuyu çökertmesine izin veriyordu ve aktif olarak suistimal ediliyordu. 923'te düzeltildi.
Bağlantı el sıkışması, HTTP istek ayrıştırıcısı ve latent event birleştirmede sınır kontrolleri eksikti. Özel hazırlanmış veri gelince sunucu çökebiliyordu ve sunucu portuna ulaşabilen herkes bunu tetikleyebiliyordu. 38435 veya üstüne geç.
37262 öncesinde netGameEvent paketlerine çekirdekte bir hız sınırı yoktu. Tek bir oyuncu weaponDamageEvent gibi eventleri yağdırıp ana thread'i kilitleyebiliyor, txAdmin de sunucuyu yeniden başlatmak zorunda kalıyordu. Sorun 35636 ve 36727'de raporlandı. 37262 ile yeni 'netGameEvent' hız sınırını aşan oyuncu sunucudan atılıyor.
Oyuncudan sunucuya gelen büyük latent eventlerin birleştirilmesine kesin sınırlar ve 'latent ACK overflow' için teşhis kaydı eklendi. Eski sürümlerde bir oyuncu gereğinden fazla yarım event durumu tutturabiliyordu, bu da bellek ve CPU yiyordu.
Oyunculardan gelen latent (TriggerLatentServerEvent) trafiğinin hız sınırı, reassembly paket işleyicisinde sıkılaştırıldı. Eski sürümlerde bir oyuncu latent event trafiğini olması gerekenden fazla zorlayabiliyordu.
9635 öncesinde bir oyuncu sunucuda sınırsız sayıda yarım kalmış latent event açık tutabiliyordu. Artık varsayılan sınır 100. Sınırı sv_netEventReassemblyMaxPendingEvents ile ayarlayabilirsin, sv_netEventReassemblyUnlimitedPendingEvents ise sınırı kapatır.
OneSync'te modlu bir istemci kendisi için birden fazla ağ oyuncu objesi (CNetObjPlayer) kaydedebiliyordu. Bu, desync ve çökme için bilinen bir suistimal yolu. 23984'ten beri sunucu fazlalarını reddediyor.
Sunucu sahipleri artık block_net_game_event ile oyunculardan gelen belirli net game event türlerini engelleyebiliyor, unblock_net_game_event ile de geri açabiliyor. Bir event türü suistimal ediliyorsa işe yarar. Komut 16541'de sadeleştirildi.
Varsayılanı kapalı olan bu yeni replicated convar, sunucu scriptlerinin oluşturduğu entity'leri oyuncuların silmesine karşı korur. Hileciler sunucunun spawnladığı araç, ped ya da propları siliyorsa 14317 veya üstüne geç ve sv_protectServerEntities true yap.
Sunucu artık bir oyuncunun sahibi olmadığı entity'ler üzerinde başlattığı network synchronized scene'leri kontrol ediyor. Bu, başka oyunculara zorla animasyon oynatmanın yaygın bir yolu. 13174 ayrıca bunu entity bazında yönetmek için SET/GET_ENTITY_REMOTE_SYNCED_SCENES_ALLOWED native'lerini ekliyor.
setr sv_stateBagStrictMode true yaparsan oyuncular replicated state bag'leri hiç değiştiremez, onları yalnızca sunucu yazar. Scriptlerin istemciden yazılan state bag'e ihtiyaç duymuyorsa aç, çünkü hileciler bunları sık sık suistimal ediyor.
7375 öncesinde sunucu, oyuncudan gelen state bag güncellemelerini sınırsız kabul ediyordu. Bir oyuncu sunucunun belleğini bitirebiliyor ya da state bag üzerinden herkese veri yağdırabiliyordu. Artık sınır var, rateLimiter_stateBagSize_rate ve rateLimiter_stateBagSize_burst ile daha da düşürebilirsin.
Gelen state bag paketlerinin doğrulaması sıkılaştırıldı, bozuk istemci paketleri işlenmeden reddediliyor. Eski sürümler bozuk girdiyi daha rahat kabul ediyor.
İstemcinin gönderdiği boş ya da sınır dışı veri içeren state bag mesajları güvensiz şekilde ayrıştırılıyordu. Commit acil olarak işaretlendi ('update pls'). 5102 öncesi sürümler açık.
initConnect sırasında geçersiz bir ticket uzunluğu sunucunun sınır dışı okuma yapmasına yol açabiliyordu ve bağlanmaya çalışan herkes bunu tetikleyebiliyordu. 7290, Cfx.re sürüm API'sinde hâlâ 'critical' minimum sürüm, yani bunun altı asla kullanılmamalı.
Sahte peer'lar UDP bağlantı denemeleri yağdırıp hiç gerçek bağlantı kurmadan sunucu kaynaklarını meşgul edebiliyordu. 4489'dan beri peer açılmadan önce bağlantıdan türetilen bir token kontrol ediliyor, 4492 de token'ın tekrar kullanımını sınırlıyor.
Herkese açık /players.json eskiden her oyuncunun kimliklerini (license, Steam, Discord vb.) herkese gösteriyordu. CVE-2024-46310 bu sorunu takip ediyor ve v9601 ile öncesini sayıyor. 10188'den beri sv_exposePlayerIdentifiersInHttpEndpoint true yapmadıkça kimlikler gizli, sv_playersToken ile de endpoint'i kısıtlayabilirsin.
Sunucunun performans ve profiler HTTP endpoint'leri kimlik bilgisi olmadan okunabiliyordu. 'TCP endpoint hardening' kapsamında /perf artık basic auth, profileData.json ise token istiyor. Eski sürümler bu iç verileri URL'yi bilen herkese açıyor.
/perf'e gelen istekler spamlenebiliyordu. 5429 http_perf hız sınırlayıcısını ekledi, bu da 5562 ile recommended kanala geldi.
Kötüye kullanımı önlemek için rcon_password salt okunur bir convar yapıldı. Örneğin bir resource artık uzaktan konsol şifresini çalışırken değiştiremiyor. Hâlâ RCON kullanıyorsan 9813 veya üstünü kullan.
Ortak ağ kodundaki bir boyut hesabı beklenmedik değerlerde taşabiliyordu, bu da bellek hatalarına yol açabilir. 10048'de düzeltildi.
Ağ kodu bir buffer'ın sonunu aşıp okuduğunda çıktının yalnızca birkaç baytı temizleniyor, gerisinde bellekten kalan veri duruyordu. 7776'da düzeltildi.
Oyuncular array update paketlerini hiç hız sınırı olmadan gönderebiliyordu. 8151 bir sınır ekledi ve böylece bir flood yolu kapandı.
Client HTTP endpoint'lerine gelen POST gövdelerinin ayrıştırılması değişti ve bir maksimum istek boyutu (sv_maxClientEndpointRequestSize) eklendi. Aşırı büyük istekler artık sunucunun belleğini ve CPU'sunu harcatmıyor.
Dahili HTTP/2 sunucusunda raporlanan bir bellek bozulması çökmesi giderildi. 5562 recommended duyurusu bunu güvenlik başlığı altında listeliyor.
Bu yeni convar, sunucunun oyuncuların 'request control' eventlerini engellemesini sağlıyor. Bu eventler başkalarının entity'lerini ele geçirmek için sık suistimal ediliyor. Uyumluluk için varsayılan olarak kapalı, kendin açman gerekiyor.
Uzak konsol paket ayrıştırması, kimlik doğrulaması olmayan uzak bir saldırgan tarafından çökertilebiliyordu ve Cfx.re bunun aktif olarak suistimal edildiğini bildirdi. Windows düzeltmesi 957. Linux için ayrı bir hotfix build çıktı, normal master build'ler 960'tan itibaren yeniden çalıştı.
Mumble sunucusu kanal adlarını, açıklamalarını ve şifrelerini serbest bırakmıyordu. Kötü niyetli bir istemci sürekli kanal açıp çıkarak sunucunun belleğini bitirebiliyordu. 5504'te düzeltildi. 5848 recommended duyurusu, birkaç Mumble DoS ve bellek tükenmesi açığının kapatıldığını söylüyor.
Bu susturma native'lerini çağırmak FXServer'ı ara sıra çökertebiliyordu. 5483'te düzeltildi.
Dahili uMurmur sunucusu ses şifreleme anahtarını yanlış değerden kuruyor ve resync'te yanlış nonce gönderiyordu. 5152 uMurmur'un kendi düzeltmesini uyguluyor.
Ses istemcisi başına varsayılan maksimum bant genişliği artırıldı, bu da bazı oyuncularda sesin gitmesini düzeltti. Dinleyici sınırı da 256'ya çıkarıldı.
Aşırı büyük ya da geçersiz giden ses mesajları eskiden bir assertion'a takılıyordu. Artık sessizce atılıyorlar ve gönderim kuyruğu düzgün boşaltılıyor. Ses sunucusunun kötü trafik altında takılma veya çökme ihtimali azalıyor.