Godot oyun sunucusu tek paket ile istemciyi çökertebiliyor
Godot 4.0 ve sonraki sürümlerde ağ üzerinden oyun oynayan oyuncuların başına ciddi bir sorun çıkabiliyor: kötü niyetli bir sunucu, tek bir hazırlanmış paket göndererek bağlı tüm istemcileri çökertebiliyor.
Sorunun kökü, Godot'un varsayılan ağ spawning sisteminde yatıyor. Sunucu (veya spawner üzerine yetki sahibi herhangi bir peer), nesneleri yaratmak ve yönetmek için geniş bir otoriteye sahip. Bu tasarımda, sunucu bir oyuncuya özel olarak hazırlanmış bir ağ paketi gönderdiğinde, istemci tarafı bunu doğrulamadan işlemeye çalışıyor. Eğer paket beklenmedik veri içeriyorsa veya motorun beklemediği bir formatta hazırlanmışsa, istemcinin Godot uygulaması çöküyor.
Bu, oyun sunucularında özellikle tehlikeli çünkü sunucu operatörü (hatta kötü niyetli bir üçüncü taraf sunucuyu ele geçirirse) herhangi bir oyuncuyu istediği zaman oyundan çıkarabiliyor. Oyuncu, sunucuya bağlandığı anda bu saldırıya maruz kalabilir. Deneyimli bir saldırgan, sunucu kodu yazmadan sadece ağ trafiğini manipüle ederek aynı etkiyi oluşturabilir.
Eğer Godot ile ağ oyunu geliştiriyorsan, gelen spawner paketlerini doğrulamak kritik. Sunucu tarafında gönderilen veriyi sınırlandır, tür kontrolü yap ve beklenmedik değerleri reddet. İstemci tarafında ise gelen nesnelerin özelliklerini (sayısal değerler, dizi uzunlukları, string boyutları) kontrol et. Ayrıca, spawn işlemlerini sunucu tarafında da doğrula; istemci gelen veriyi kör bir şekilde kabul etmek yerine, mantık kontrollerinden geçir.
Godot topluluğu bu sorunu bildiği için, sonraki sürümlerde ağ güvenliği iyileştirmeleri gelebilir. Şu an için, açık sunucular çalıştırıyorsan ya da çok oyunculu oyun geliştiriyorsan, ağ paketlerine karşı savunma katmanı eklemek zorunlu.
0 yorum