Güvenlik
Bozuk bağlantı, HTTP ve latent event verisiyle sunucu çökmesi
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ç.
Ses
Mumble sunucusu ağ dayanıklılığı
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.
Güvenlik
Latent event birleştirmeye sınır getirildi
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.
Ağ
Reliable kuyruk baskısında network thread takılmaları ve toplu timeout
Son recommended sürümlerde sunucularda network ve sync thread takılmaları ile toplu 'Timed out after 60 seconds' kopmaları görüldü (GitHub #4244). 38004 birkaç düzeltmeyi bir arada getiriyor: ENet pencere doluyken reliable kuyruğu taramayı bırakıyor, latent event parçaları unreliable fragment olarak gidiyor ve sync kodu frame'leri istemcinin sessizliğine göre tutuyor. Bir kullanıcı 38004'te hâlâ timeout bildirdi, 38164 de ilgili bir backlog düzeltmesi ekliyor.
Güvenlik
Tek bir oyuncu game event yağdırarak sunucuyu kilitleyebiliyordu
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.
Güvenlik
Windows sunucu weaponDamageEvent flood'unda donabiliyor
Ağ
OneSync frame-backlog değişikliğinden kaynaklı timeout'lar
28814'teki bir OneSync 'improvements' değişikliği, 5 saniyeden uzun sessiz kalan istemciler için tutulan büyük frame backlog'unu kaldırdı. Bu değişiklik 31602'de 'timeout sorununu düzeltmek için' geri alındı. Oyuncular timeout yiyorsa 28814 ile 31550 arasından uzak dur.
Güvenlik
Oyuncu latent eventlerinde daha sıkı hız sınırı
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.
Güvenlik
Oyuncular artık birden fazla oyuncu objesi oluşturamıyor
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.
Güvenlik
Yeni block_net_game_event komutu
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.
Ses
Ses sunucusu dış bağlantıları varsayılan olarak engelliyor
15859 öncesinde oyun sunucusunda oyuncu olmasa bile herkes dahili Mumble (ses) sunucusuna bağlanabiliyordu. Artık mumble_allowExternalConnections varsayılanı false ve ses istemcisinin bağlı, routing'i tamamlanmış bir oyuncuyla eşleşmesi gerekiyor. Bilerek dış bir Mumble istemcisi kullanıyorsan true yap.
Ağ
Event gecikme birimi nanosaniyeye geçince timeout'lar
14583 net event gecikme birimini nanosaniyeye çevirdi, ardından birçok sunucu sahibi timeout bildirdi. 14901 milisaniyeye geri döndü.
Güvenlik
sv_protectServerEntities: sunucu entity'lerini oyuncular silemesin
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.
Ses
Dış ses bağlantıları habersiz engellendi (geri alındı)
13759 ile 13890 arası sürümler dış Mumble engelinin ilk halini içeriyordu ve dış ses istemcisi kullanan kurulumları bozdu. 13930'da geri alındı, 15859'da daha güvenli bir şekilde geri geldi.
Güvenlik
Başkalarının entity'lerinde synchronized scene artık filtreleniyor
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.
Ses
Boş ses mesajlarıyla voip-server-mumble çökmesi
Sunucu, istemcilerden gelen boş Mumble mesajlarını kabul ediyordu ve bu FXServer'ı voip-server-mumble içinde çökertebiliyordu (GitHub #3054, 12180'de raporlandı). 12906'dan beri bir mesajın en az bir bayt taşıması gerekiyor.
Güvenlik
State bag sıkı modu (sv_stateBagStrictMode)
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.
Güvenlik
/perf ve profileData.json endpoint'lerine kimlik doğrulama
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.
Ağ
Deneysel net game event v2 varsayılan açık gelince çökmeler
10268 deneysel state bag, population ve net game event v2 işleyicilerini varsayılan olarak açtı. Bazı sunucular çöktü ya da eski sürüme dönmekte sorun yaşadı. 10367 net game event v2'yi varsayılan olarak tekrar kapattı. Daha fazla çalışmanın ardından 16973'te yeniden varsayılan açık oldu.
Güvenlik
players.json artık oyuncu kimliklerini açık etmiyor (CVE-2024-46310)
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.
Güvenlik
Ağ bileşeni boyut hesabında integer overflow
Ortak ağ kodundaki bir boyut hesabı beklenmedik değerlerde taşabiliyordu, bu da bellek hatalarına yol açabilir. 10048'de düzeltildi.
Güvenlik
rcon_password salt okunur yapıldı
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.
Güvenlik
State bag paket doğrulaması
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.
Güvenlik
Oyuncu başına bekleyen latent event sınırı
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.
Ağ
Boşta kalan TCP/HTTP bağlantılarına timeout
Veri alıp göndermeyen TCP bağlantıları artık sv_tcpConnectionTimeoutSeconds (varsayılan 5 sn) sonunda kapatılıyor. Bir HTTP işleyici çalışırken ek süre veriliyor (sv_httpHandlerConnectionTimeoutSeconds). 8883 öncesinde boşta bağlantılar açık kalıp sunucu kaynaklarını tutabiliyordu.
Güvenlik
Array handler güncellemelerine (msgArrayUpdate) hız sınırı
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ı.
Güvenlik
Ağ buffer'ında taşma/doldurma hatası
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.
Güvenlik
Oyuncudan gelen büyük/sık state bag yazımlarına hız sınırı
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.
Güvenlik
Client endpoint isteklerine boyut sınırı (sv_maxClientEndpointRequestSize)
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.
Güvenlik
Bağlantı el sıkışmasında sınır dışı okuma (mevcut 'critical' taban)
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ı.
Ses
Düşük Mumble bant limiti yüzünden ses kopmaları
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ı.
Güvenlik
HTTP/2 sunucusunda bellek bozulması kaynaklı çökme
Dahili HTTP/2 sunucusunda raporlanan bir bellek bozulması çökmesi giderildi. 5562 recommended duyurusu bunu güvenlik başlığı altında listeliyor.
Güvenlik
sv_filterRequestControl: entity kontrol isteklerini engelleme
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.
Ses
Kanallar üzerinden ses sunucusu bellek tükenmesi
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.
Ses
MumbleSetPlayerMuted / MumbleIsPlayerMuted kullanınca sunucu çökmesi
Bu susturma native'lerini çağırmak FXServer'ı ara sıra çökertebiliyordu. 5483'te düzeltildi.
Güvenlik
/perf HTTP endpoint'ine hız sınırı
/perf'e gelen istekler spamlenebiliyordu. 5429 http_perf hız sınırlayıcısını ekledi, bu da 5562 ile recommended kanala geldi.
Ses
Ses şifrelemesi yanlış anahtar verisi kullanıyordu (uMurmur düzeltmesi)
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.
Güvenlik
State bag mesaj ayrıştırma açığı (Aralık 2021 acil güncelleme)
İ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.
Ağ
Sunucuya giren oyuncuya şimdiye kadarki tüm state bag'ler gidiyordu
Yeni gelen oyunculara yalnızca ilgili olanlar değil, sunucudaki tüm state bag'ler gönderiliyordu. Bu, kalabalık sunucularda bant genişliğini boşa harcıyor ve girişleri yavaşlatıyordu. 5077'de düzeltildi.
Güvenlik
ENet peer açmadan önce bağlantı token'ı zorunlu
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.
Güvenlik
Güvenlik bildirisi 2019-01-02: uzak konsol DoS (CVSS 7.5)
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ı.
Güvenlik
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.