DoS Güvenlik Açığı Düzeltmesi ( HEADER_CG_CHARACTER_SELECT )
HEADER_CG_CHARACTER_SELECT'i geçersiz bir karakter kimliği ile spamlayarak db'nin aşırı yüklenmesine ve çökmesine neden olan DoS saldırısı olmuştur;
db syslog'unda birçok [PLAYER_LOAD] Load from PlayerDB pid[0] girdisi bulacaksınız. Bunu düzeltmek için:
goto input_login.cpp
yukarıya ekleyin.
db syslog'unda birçok [PLAYER_LOAD] Load from PlayerDB pid[0] girdisi bulacaksınız. Bunu düzeltmek için:
goto input_login.cpp
yukarıya ekleyin.
Kod:
db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));
Kod:
if (player_load_packet.player_id == 0) { sys_err("invalid player_id from account %d\n",c_r.id); d->DelayedDisconnect(0); return; }
Kod:
if (player_load_packet.player_id == 0) { sys_err("invalid player_id from account %d\n",c_r.id); d->DelayedDisconnect(0); return; } db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));
Bu düzeltme, geçersiz bir karakter seçildiğinde oyuncunun bağlantısının kesilmesini sağlayarak spam yapmayı zorlaştıracak ve oran sınırlarını tekrar etkili hale getirecektir.
Thank You; LTGT
DoS Güvenlik Açığı Düzeltmesi (HEADER_CG_CHARACTER_SELECT)
Metin2 özel sunucularında güvenlik, özellikle DoS saldırıları konusunda oldukça kritik öneme sahiptir. Bu yazıda, HEADER_CG_CHARACTER_SELECT başlığıyla ilişkilendirilen potansiyel bir DoS güvenlik açığının nasıl düzeltileceği ele alınacaktır. Bu açığı düzelterek sunucu kararlılığını ve oyuncu deneyimini ciddi şekilde artırmak mümkündür.
Güvenlik Açığı Nedir?
HEADER_CG_CHARACTER_SELECT paketi, oyuncunun karakter seçimi yaparken gönderdiği istektir. Sunucu bu isteği alır ve oyuncuya mevcut karakterlerini listeler. Ancak bazı özel durumlarda, kötü niyetli bir kullanıcı bu paketi tekrar tekrar göndererek sunucunun işlem kapasitesini tüketebilir. Bu da sunucunun cevap verememesine ve dolayısıyla DoS (Denial of Service) saldırısına neden olabilir.
Açığın Kaynağı
Genellikle bu tür açıklar, sunucu tarafında pakete gelen isteklerin yeterince filtrelenmemesi veya doğrulanmaması sonucu oluşur. Örneğin, aynı oyuncunun kısa sürede birden fazla HEADER_CG_CHARACTER_SELECT isteğini göndermesine izin verilirse, bu durum sunucuda gereksiz yük oluşturur.
Düzeltme Yöntemi
Bu açığı kapatmak için, game/src/char.cpp dosyasında bulunan CHARACTER::OnRequest(char* c_pData) fonksiyonuna eklemeler yapılmalıdır. Özellikle HEADER_CG_CHARACTER_SELECT kontrolü yapılırken, oyuncunun bu isteği gönderme sıklığı kontrol edilmelidir.
Örnek Kod Düzeltmesi
Bu örnek kod, oyuncunun karakter seçimi için saniyede sadece bir kez istek göndermesine izin verir. Bu sayede tekrarlayan istekler engellenmiş olur.
Sunucu Taraflı Kontroller
Ek olarak, auth server ile game server arasında güvenli bağlantı sağlandığından emin olunmalıdır. Paketlerin doğruluğu ve bütünlüğü kontrol edilmeli, herhangi bir manipülasyona karşı koruma sağlanmalıdır. Metin2 özel sunucularında bu kontroller, C++ kaynak kod seviyesinde yapılmaktadır.
Sonuç
DoS saldırılarını engellemek, sunucunuzun sürekli çalışmasını ve oyuncuların kesintisiz oyun deneyimi yaşamasını sağlar. HEADER_CG_CHARACTER_SELECT güvenlik açığının düzeltilmesi, bu süreçte atılması gereken önemli adımlardan biridir. Metin2 Lobby olarak, bu gibi açıkların farkında olmak ve düzenli olarak kaynak kodlarınızı güncellemek büyük önem taşır.
Fixing DoS Security Vulnerability (HEADER_CG_CHARACTER_SELECT)
Security in Metin2 private servers is highly critical, especially regarding DoS attacks. In this article, we will address how to fix a potential DoS vulnerability related to HEADER_CG_CHARACTER_SELECT. Correcting this vulnerability can significantly improve server stability and player experience.
What is the Vulnerability?
HEADER_CG_CHARACTER_SELECT packet is sent by the player during character selection. The server receives this request and lists the player's available characters. However, in certain special cases, a malicious user may repeatedly send this packet to consume the server's processing capacity. This can cause the server to stop responding, resulting in a DoS (Denial of Service) attack.
Source of the Vulnerability
These types of vulnerabilities usually occur due to insufficient filtering or validation of requests on the server side. For instance, if the same player is allowed to send multiple HEADER_CG_CHARACTER_SELECT requests in a short span, it creates unnecessary load on the server.
Fixing Method
To close this vulnerability, additions must be made to the CHARACTER::OnRequest(char* c_pData) function located in game/src/char.cpp. Specifically, when handling HEADER_CG_CHARACTER_SELECT, the frequency of this request from the player should be checked.
Sample Code Fix
This sample code ensures that the player can only send one character selection request per second, effectively blocking repeated requests.
Server-Side Checks
Additionally, ensure secure connection between auth server and game server. Packet integrity and authenticity must be validated, with protection against any kind of tampering. Such checks in Metin2 private servers are handled at the C++ source code level.
Conclusion
Preventing DoS attacks ensures your server runs continuously and players enjoy an uninterrupted gaming experience. Fixing the HEADER_CG_CHARACTER_SELECT vulnerability is an important step in this process. At Metin2 Lobby, being aware of such vulnerabilities and regularly updating your source code is of great importance.
Thank You; LTGT
DoS Güvenlik Açığı Düzeltmesi (HEADER_CG_CHARACTER_SELECT)
Metin2 özel sunucularında güvenlik, özellikle DoS saldırıları konusunda oldukça kritik öneme sahiptir. Bu yazıda, HEADER_CG_CHARACTER_SELECT başlığıyla ilişkilendirilen potansiyel bir DoS güvenlik açığının nasıl düzeltileceği ele alınacaktır. Bu açığı düzelterek sunucu kararlılığını ve oyuncu deneyimini ciddi şekilde artırmak mümkündür.
Güvenlik Açığı Nedir?
HEADER_CG_CHARACTER_SELECT paketi, oyuncunun karakter seçimi yaparken gönderdiği istektir. Sunucu bu isteği alır ve oyuncuya mevcut karakterlerini listeler. Ancak bazı özel durumlarda, kötü niyetli bir kullanıcı bu paketi tekrar tekrar göndererek sunucunun işlem kapasitesini tüketebilir. Bu da sunucunun cevap verememesine ve dolayısıyla DoS (Denial of Service) saldırısına neden olabilir.
Açığın Kaynağı
Genellikle bu tür açıklar, sunucu tarafında pakete gelen isteklerin yeterince filtrelenmemesi veya doğrulanmaması sonucu oluşur. Örneğin, aynı oyuncunun kısa sürede birden fazla HEADER_CG_CHARACTER_SELECT isteğini göndermesine izin verilirse, bu durum sunucuda gereksiz yük oluşturur.
Düzeltme Yöntemi
Bu açığı kapatmak için, game/src/char.cpp dosyasında bulunan CHARACTER::OnRequest(char* c_pData) fonksiyonuna eklemeler yapılmalıdır. Özellikle HEADER_CG_CHARACTER_SELECT kontrolü yapılırken, oyuncunun bu isteği gönderme sıklığı kontrol edilmelidir.
Örnek Kod Düzeltmesi
Kod:
[COLOR=green]if (header == HEADER_CG_CHARACTER_SELECT)[/COLOR][BR][/BR]{[BR][/BR][COLOR=red] if (GetLastCharacterSelectTime() + 1000 > get_dword_time()) {[/COLOR][BR][/BR][COLOR=red] ChatPacket(CHAT_TYPE_INFO, 'Hata: Lutfen karakter secimi icin bekleyiniz.');[/COLOR][BR][/BR][COLOR=red] return;[/COLOR][BR][/BR][COLOR=red] }[/COLOR][BR][/BR][COLOR=red] SetLastCharacterSelectTime(get_dword_time());[/COLOR][BR][/BR]}
Bu örnek kod, oyuncunun karakter seçimi için saniyede sadece bir kez istek göndermesine izin verir. Bu sayede tekrarlayan istekler engellenmiş olur.
Sunucu Taraflı Kontroller
Ek olarak, auth server ile game server arasında güvenli bağlantı sağlandığından emin olunmalıdır. Paketlerin doğruluğu ve bütünlüğü kontrol edilmeli, herhangi bir manipülasyona karşı koruma sağlanmalıdır. Metin2 özel sunucularında bu kontroller, C++ kaynak kod seviyesinde yapılmaktadır.
Sonuç
DoS saldırılarını engellemek, sunucunuzun sürekli çalışmasını ve oyuncuların kesintisiz oyun deneyimi yaşamasını sağlar. HEADER_CG_CHARACTER_SELECT güvenlik açığının düzeltilmesi, bu süreçte atılması gereken önemli adımlardan biridir. Metin2 Lobby olarak, bu gibi açıkların farkında olmak ve düzenli olarak kaynak kodlarınızı güncellemek büyük önem taşır.
Fixing DoS Security Vulnerability (HEADER_CG_CHARACTER_SELECT)
Security in Metin2 private servers is highly critical, especially regarding DoS attacks. In this article, we will address how to fix a potential DoS vulnerability related to HEADER_CG_CHARACTER_SELECT. Correcting this vulnerability can significantly improve server stability and player experience.
What is the Vulnerability?
HEADER_CG_CHARACTER_SELECT packet is sent by the player during character selection. The server receives this request and lists the player's available characters. However, in certain special cases, a malicious user may repeatedly send this packet to consume the server's processing capacity. This can cause the server to stop responding, resulting in a DoS (Denial of Service) attack.
Source of the Vulnerability
These types of vulnerabilities usually occur due to insufficient filtering or validation of requests on the server side. For instance, if the same player is allowed to send multiple HEADER_CG_CHARACTER_SELECT requests in a short span, it creates unnecessary load on the server.
Fixing Method
To close this vulnerability, additions must be made to the CHARACTER::OnRequest(char* c_pData) function located in game/src/char.cpp. Specifically, when handling HEADER_CG_CHARACTER_SELECT, the frequency of this request from the player should be checked.
Sample Code Fix
Kod:
[COLOR=green]if (header == HEADER_CG_CHARACTER_SELECT)[/COLOR][BR][/BR]{[BR][/BR][COLOR=red] if (GetLastCharacterSelectTime() + 1000 > get_dword_time()) {[/COLOR][BR][/BR][COLOR=red] ChatPacket(CHAT_TYPE_INFO, 'Error: Please wait before selecting character again.');[/COLOR][BR][/BR][COLOR=red] return;[/COLOR][BR][/BR][COLOR=red] }[/COLOR][BR][/BR][COLOR=red] SetLastCharacterSelectTime(get_dword_time());[/COLOR][BR][/BR]}
This sample code ensures that the player can only send one character selection request per second, effectively blocking repeated requests.
Server-Side Checks
Additionally, ensure secure connection between auth server and game server. Packet integrity and authenticity must be validated, with protection against any kind of tampering. Such checks in Metin2 private servers are handled at the C++ source code level.
Conclusion
Preventing DoS attacks ensures your server runs continuously and players enjoy an uninterrupted gaming experience. Fixing the HEADER_CG_CHARACTER_SELECT vulnerability is an important step in this process. At Metin2 Lobby, being aware of such vulnerabilities and regularly updating your source code is of great importance.
