GMX, bir Hacker saldırısına uğradı ve 40 milyon dolardan fazla kayba neden oldu. Saldırganlar, yeniden giriş (reentrancy) açığını kullanarak, sözleşmede kaldıraç işlevi etkinleştirildiğinde short pozisyonlar oluşturarak saldırıyı gerçekleştirdiler.
Sorunun temelinde executeDecreaseOrder fonksiyonunun yanlış kullanımı yatıyor. Bu fonksiyonun ilk parametresi dış hesap (EOA) olmalı, ancak saldırgan bir akıllı sözleşme adresi girdi. Bu, saldırganın geri alma sürecinde sisteme yeniden girmesine, iç durumu manipüle etmesine ve nihayetinde geri alınan varlıkların, gerçek sahip olduğu GLP değerinden çok daha fazla olmasına olanak sağladı.
GMX'te GLP, hazine varlıklarına (USDC, ETH, WBTC gibi) olan payı temsil eden likidite sağlayıcı token'ıdır. Normalde, kullanıcılar GLP'yi geri aldıklarında, sistem, kullanıcının sahip olduğu GLP oranı ve mevcut yönetim altındaki varlık toplamı (AUM) üzerinden iade edilecek varlık miktarını hesaplar. AUM hesaplaması, tüm token havuzlarının toplam değeri, küresel boş pozisyonların gerçekleşmemiş kazanç veya kayıpları, ayrılmış tutarlar ve önceden belirlenmiş kesintiler gibi faktörleri içerir.
Ancak, kaldıraç özelliği etkinleştirildiğinde, sistemde bir açık ortaya çıktı. Saldırganlar, GLP'yi geri almadan önce büyük miktarda WBTC short pozisyonlar açtılar. Kısa pozisyon açıldığı anda, global kısa pozisyon boyutu arttı ve fiyat henüz değişmemişken, sistem bu kısa pozisyonu zarar durumunda varsaydı. Bu kısmi gerçekleşmemiş zarar, yanlışlıkla hazinenin "varlıkları"na dahil edildi ve AUM yapay olarak yükseldi. Hazine aslında ek bir değer elde etmemiş olsa da, geri alma hesaplaması bu şişirilmiş AUM'a dayandığı için saldırgan, hak ettiğinden çok daha fazla varlık elde etti.
Bu saldırı, GMX'in kaldıraç mekanizması ve yeniden giriş koruma tasarımındaki ciddi kusurları ortaya çıkardı. Temel sorun, varlık geri alma mantığının AUM'a olan güvenin fazla olması ve bileşenleri (örneğin, gerçekleşmemiş zararlar) için yeterince dikkatli bir güvenlik kontrolü yapılmamasıdır. Aynı zamanda, ana fonksiyonların çağıran kişinin kimliğine ilişkin varsayımları (EOA vs. sözleşme) da zorunlu doğrulama eksikliğindedir.
Bu olay, geliştiricilere fonlarla ilgili hassas işlemler söz konusu olduğunda sistem durumunun manipüle edilemeyeceğini garanti etmeleri gerektiğini bir kez daha hatırlatıyor. Özellikle karmaşık finansal mantıkların (kaldıraç, türev ürünler gibi) devreye girmesi durumunda, yeniden giriş ve durum kirliliğinden kaynaklanan sistemik risklere karşı daha da dikkatli olunmalıdır. Geliştirme ekibi, sözleşme tasarımını yeniden gözden geçirmeli, güvenlik önlemlerini güçlendirmeli ve benzer saldırıların tekrar yaşanmaması için daha sıkı kimlik doğrulama ve durum kontrol mekanizmalarının entegrasyonunu düşünmelidir.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
GMX, hacker saldırısına uğradı; yeniden giriş açığı 40 milyon dolar zarar verdi.
GMX, bir Hacker saldırısına uğradı ve 40 milyon dolardan fazla kayba neden oldu. Saldırganlar, yeniden giriş (reentrancy) açığını kullanarak, sözleşmede kaldıraç işlevi etkinleştirildiğinde short pozisyonlar oluşturarak saldırıyı gerçekleştirdiler.
Sorunun temelinde executeDecreaseOrder fonksiyonunun yanlış kullanımı yatıyor. Bu fonksiyonun ilk parametresi dış hesap (EOA) olmalı, ancak saldırgan bir akıllı sözleşme adresi girdi. Bu, saldırganın geri alma sürecinde sisteme yeniden girmesine, iç durumu manipüle etmesine ve nihayetinde geri alınan varlıkların, gerçek sahip olduğu GLP değerinden çok daha fazla olmasına olanak sağladı.
GMX'te GLP, hazine varlıklarına (USDC, ETH, WBTC gibi) olan payı temsil eden likidite sağlayıcı token'ıdır. Normalde, kullanıcılar GLP'yi geri aldıklarında, sistem, kullanıcının sahip olduğu GLP oranı ve mevcut yönetim altındaki varlık toplamı (AUM) üzerinden iade edilecek varlık miktarını hesaplar. AUM hesaplaması, tüm token havuzlarının toplam değeri, küresel boş pozisyonların gerçekleşmemiş kazanç veya kayıpları, ayrılmış tutarlar ve önceden belirlenmiş kesintiler gibi faktörleri içerir.
Ancak, kaldıraç özelliği etkinleştirildiğinde, sistemde bir açık ortaya çıktı. Saldırganlar, GLP'yi geri almadan önce büyük miktarda WBTC short pozisyonlar açtılar. Kısa pozisyon açıldığı anda, global kısa pozisyon boyutu arttı ve fiyat henüz değişmemişken, sistem bu kısa pozisyonu zarar durumunda varsaydı. Bu kısmi gerçekleşmemiş zarar, yanlışlıkla hazinenin "varlıkları"na dahil edildi ve AUM yapay olarak yükseldi. Hazine aslında ek bir değer elde etmemiş olsa da, geri alma hesaplaması bu şişirilmiş AUM'a dayandığı için saldırgan, hak ettiğinden çok daha fazla varlık elde etti.
Bu saldırı, GMX'in kaldıraç mekanizması ve yeniden giriş koruma tasarımındaki ciddi kusurları ortaya çıkardı. Temel sorun, varlık geri alma mantığının AUM'a olan güvenin fazla olması ve bileşenleri (örneğin, gerçekleşmemiş zararlar) için yeterince dikkatli bir güvenlik kontrolü yapılmamasıdır. Aynı zamanda, ana fonksiyonların çağıran kişinin kimliğine ilişkin varsayımları (EOA vs. sözleşme) da zorunlu doğrulama eksikliğindedir.
Bu olay, geliştiricilere fonlarla ilgili hassas işlemler söz konusu olduğunda sistem durumunun manipüle edilemeyeceğini garanti etmeleri gerektiğini bir kez daha hatırlatıyor. Özellikle karmaşık finansal mantıkların (kaldıraç, türev ürünler gibi) devreye girmesi durumunda, yeniden giriş ve durum kirliliğinden kaynaklanan sistemik risklere karşı daha da dikkatli olunmalıdır. Geliştirme ekibi, sözleşme tasarımını yeniden gözden geçirmeli, güvenlik önlemlerini güçlendirmeli ve benzer saldırıların tekrar yaşanmaması için daha sıkı kimlik doğrulama ve durum kontrol mekanizmalarının entegrasyonunu düşünmelidir.