- #1
Konu Sahibi
: serkankacan
[REHBER] vSRO Temel Exploit & Paket Güvenliği Fix Kodları
Filter / Guard Altyapınız İçin Shard & GameServer Çökertme Saldırılarını Önleme Yöntemleri
Filter / Guard Altyapınız İçin Shard & GameServer Çökertme Saldırılarını Önleme Yöntemleri
Merhaba değerli forum sakinleri,
vSRO sunucularında en sık karşılaşılan güvenlik zafiyetlerinin başında, istemci (client) tarafından sunucuya gönderilen manipüle edilmiş veya hatalı yapılandırılmış paketlerin ShardManager veya GameServer bileşenlerini çökertmesi (crash exploit) gelmektedir.
Aşağıda paylaşılan kontrolleri, C# tabanlı özel Guard veya Filter projenizin paket ayrıştırma (
PacketHandler / OnPacketReceived) döngüsüne entegre ederek bu zafiyetlerin büyük çoğunluğunu sunucuya ulaşmadan engelleyebilirsiniz.Önemli Uyarı' Alıntı:Lütfen Dikkat: Kodları doğrudan projenize kopyala-yapıştır yapmayınız! Her Guard yazılımının paket okuma kütüphanesi (PacketReader,Packet), değişken isimleri ve oturum sonlandırma (Disconnect) metotları farklılık gösterebilir. Kod mantığını kendi yapınıza uyarlayınız.
1. Opcode 0x7005 (Karakter / Sunucu Seçim Ekranı Kontrolü)
- Tehdit: İstemci bu pakette geçersiz bayrak (flag) değerleri enjekte ederek Shard tarafında beklenmedik durum oluşturabilir ve belleği kitleyebilir.
- Mantık: İlk bayt değerinin 2'den büyük olmaması gerekir. Geçersiz bir aralıkta ise paket derhal sonlandırılmalıdır.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
2. Opcode 0x7007 (Karakter Yönetim İşlemleri Kontrolü)
- Tehdit: Karakter oluşturma, silme veya geri getirme isteklerinde eksik/fazla bayt gönderildiğinde sunucu tarafında
IndexOutOfRangeExceptionhatası ile crash oluşur. - Mantık: Alt işlem kimliğine (
actionType) göre paket gövdesi katı uzunluk ve tip kontrolünden geçirilir; olası taşmalara karşıtry-catchbloğuna alınır.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
3. Opcode 0x750E (Boş Payload Doğrulaması)
- Tehdit: Normal şartlarda boş olması gereken bu bildirime sahte veri enjekte edilerek sunucu tampon belleği (buffer) taşırılmaya çalışılır.
- Mantık: Paket içeriğinde 0 bayttan fazla veri varsa paket doğrudan reddedilir.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
4. Opcode 0x3012 (Durum / Keep-Alive Sorgu Kontrolü)
- Tehdit: Canlılık veya durum sorgularına yetkisiz payload yerleştirilerek bağlantı protokolünün bozulması hedeflenir.
- Mantık: Gövde uzunluğu sıfırdan büyük olan tüm istekler düşürülür.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
5. Opcode 0x3510 (Geçersiz / Güvenilmeyen Paket Engelleme)
- Tehdit: Normal şartlarda istemci tarafından gönderilmemesi gereken bir sistem paketidir. GameServer'a iletilmesi durumunda kilitlenmelere yol açabilir.
- Mantık: Paket Shard veya GameServer'a ulaştırılmadan döngüden atlanır (Drop edilir).
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
Geliştirici Notu & Güvenlik Tavsiyesi:
Tüm paket okuma adımlarınızda mutlaka
try-catch blokları kullanın. Saldırganların en çok başvurduğu yöntem, beklenen türden daha kısa bayt dizisi göndermektir. Eğer kodunuzda koruma bloğu yoksa istemci değil, doğrudan sizin Guard uygulamanız çöker.Sorularınızı ve eklemek istediğiniz diğer opcode kontrollerini konu altından paylaşabilirsiniz. Herkese iyi forumlar!
Moderatör tarafında düzenlendi:

