Güvenlik açığı yeniden mi girilecek? Stars Arena'ya yapılan saldırıyı analiz edin

arka plan

Slow MistEye sisteminin güvenlik uyarısına göre, 7 Ekim 2023'te Avalanche zincir üstü sosyal protokolü Stars Arena saldırıya uğradı ve yaklaşık $2,9 milyon kayıpla sonuçlandı. Slow Mist güvenlik ekibi saldırıyı kısaca analiz etti ve sonuçları aşağıda paylaştı.

İlgili bilgiler

Saldırgan Adresi:

Saldırı Sözleşmesi:

Saldırı Ticareti:

Saldırı çekirdeği

Bir saldırgan, mevduat payına karşılık gelen fiyatı kurcalamak için bir yeniden giriş güvenlik açığından yararlanır. Daha sonra, satış yaparken, benzer fiyat manipülasyonu, fiyat hesaplamalarının kötü niyetli manipülasyonuna güvenmekten kaynaklanır. Saldırgan, yeniden girişte güncellenen hisse fiyatını tam olarak hesaplayarak sözleşmedeki fonları çalar.

İşlem analizi

Attack transaction'da reentrancy call olduğunu tespit edebiliyoruz ve kodu decomcompile ederek call method'u adım adım analiz ediyoruz.

! [Yeniden giriş mi?] Stars Arena'ya yapılan saldırının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-98a298d9bb-dd1a6f-69ad2a.webp)

Saldırgan önce bir saldırı sözleşmesi (0x7f283 ve 0xdd9af) oluşturur, saldırı sözleşmesi aracılığıyla Stars Arena: Shares sözleşmesinin 0xe9ccf3a3 yöntemini çağırır ve ardından 1 AVAX tokeni yatırır.

! [Yeniden giriş mi?] Yıldızlar Arenası saldırısının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-fccaa140dd-dd1a6f-69ad2a.webp)

Derlenmiş kodun adım adım izine göre, saldırgan tarafından ilk kullanılan 0xe9ccf3a3 yöntemi, 0x326c ve 0x2058 yöntemlerini çağıran mevduat benzeri bir işlevdir. 0x326c yöntemi, yalnızca parametre olarak döndürülen bir çağrıdır, 0x2058 yöntemi ise bir tür tokenin satın alınmasını veya takasını gerçekleştiren bir fonksiyona benzer ve yöntem, bir sonraki işlemi ve hisse ve ücretlerin hesaplanmasını hesaplamak için 0xe9ccf3a3 tarafından iletilen AVAX tokenlerinin miktarını ve adresini kullanır.

! [Yeniden giriş mi?] Yıldızlar Arenası saldırısının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-9279aef172-dd1a6f-69ad2a.webp)

0x2058 yönteminin 92. satırının çağrı mantığını takiben, 0x1a9b yönteminin bir hesaplama fonksiyonu olduğu ve hesaplanan sonucun fiyata benzer bir değer olduğu ve dönüş değerinin yeni hesaplanan v24 / 0xde0b6b3a7640000 veya _initialPrice olduğu bulunabilir.

0x307c ve 0x30ef yöntemlerinin sonraki 109, 110 ve 116 satırlarında düşük seviyeli çağrıya çağrı vardır ve 0x30ef çağrı hala g1'e, yani gelen 0xdd9af saldırısı sözleşme adresine yapılan harici bir çağrıdır. İşlevin yeniden giriş kilidi kısıtlaması yoktur ve dış çağrı yürütüldükten sonra, bu yöntem yalnızca field0.length ve field0 parametrelerini güncelleştirmek için sonraki if yargısını yürütür. Hiç şüphe yok ki burada yeniden giriş oluyor.

! [Yeniden giriş mi?] Stars Arena saldırısının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-3c9611d0bb-dd1a6f-69ad2a.webp)

Saldırganın yeniden giriş çağrısında oluşturduğu verilere bakalım.

! [Yeniden giriş mi?] Stars Arena'ya yapılan saldırının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-ce911c42e9-dd1a6f-69ad2a.webp)

Dışarıdaki yeniden giriş, 0x5632b2e4 yöntemini çağırır ve saldırgan tarafından oluşturulan ve 153005ce00'ı ondalık sayıya göre 910000000000'e dönüştüren dört parametreyi geçirir.

Yukarıda belirtildiği gibi, 0x5632b2e4 yöntemine yapılan harici çağrı, if(g0 == _getMyShares[address(g1)][msg.sender]) kararından önce yürütülür. Şu anda, field0.lengt değeri 0'dır ve güncellenmemiştir. Bu şekilde, saldırgan 0x5632b2e4 yöntemindeki yargıyı atlar ve harici çağrı yapıldığında oluşturulacak olan msg.sender'ın aşağıdaki dört parametresinin, yani saldırı sözleşmesinin 0xdd9af durumunu değiştirir.

! [Yeniden giriş mi?] Yıldızlar Arenası saldırısının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-53695512db-dd1a6f-69ad2a.webp)

Bunu yaptıktan sonra saldırgan, hissesini satmak için sellShares'i aradı ve 266.102,97278 AVAX elde etti.

! [Yeniden giriş mi?] Stars Arena'ya yapılan saldırının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-54e5a2f231-dd1a6f-69ad2a.webp)

sellShares işlevinin derinliklerine inildiğinde, işlev başlangıçta önceki 0x2058 yönteminde çağrılan ve bir tür belirtecin satın alınmasını veya takasını gerçekleştiren bir işlev olan 0x1a9b yöntemini çağırır. 0x1a9b metodundaki 0x2329 metodunun sahibi_9f[g0] ve bu parametre 9100000000000 olarak değiştirildi ve yeniden giriş sırasında saldırgan tarafından oluşturuldu.

! [Yeniden giriş mi?] Stars Arena saldırısının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-60823d09ab-dd1a6f-69ad2a.webp)

0x1a9b yöntemine geri döndüğünüzde, daha önce kötü amaçlı olarak oluşturulmuş değere göre yeniden hesaplayın (hesaplanan tutar için nota bakın).

! [Yeniden giriş mi?] Stars Arena'ya yapılan saldırının analizi] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-764b869b64-dd1a6f-69ad2a.webp)

Yukarıdaki hesaplamadan sonra, yeni hesaplanan hisseye karşılık gelen fiyat değişti ve sonuç 274.333,061476814e18 oldu. Bir dizi ücret alındıktan sonra saldırgan, hisseyi değiştirmeden fiyatı manipüle etmek, hisseyi satmak ve başarılı bir şekilde kar elde etmek için kötü niyetli yapılar kullanır.

Özet

Bu saldırının temelinde, benzer kötü niyetli fiyat manipülasyonuna yol açan yeniden giriş saldırısının neden olduğu fiyat hesaplama bağımlılığı güncellemesi yer alıyor. Slow Mist güvenlik ekibi, proje ekibinin sözleşmeyi dağıtmadan önce birden fazla güvenlik şirketi tarafından denetlenmeye çalışması gerektiğini öne sürüyor. Aynı zamanda, kodlama yaparken, Checks-Effects-Interactions kodlama spesifikasyonunu mümkün olduğunca karşılamalı ve anti-reentrancy kilidi eklemelidir.

View Original
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.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)