OrionProtocol, yeniden giriş saldırısına uğrayarak 2.9 milyon dolar kaybetti. Güvenlik açığı analizi ve önleme önerileri.

robot
Abstract generation in progress

OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi

2 Şubat 2023 öğleden sonra, Ethereum ve Binance blok zincirindeki OrionProtocol, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı ve yaklaşık 2,9 milyon dolar kaybetti. Bu kaybın içinde Ethereum'daki 2.844.766 USDT ve BSC'deki 191.606 BUSD bulunmaktadır.

Saldırı Süreci Analizi

Saldırgan önce bir Token sözleşmesi oluşturdu ve bunu transfer ve yetkilendirme işlemleri gerçekleştirdi, böylece sonraki saldırılar için hazırlık yaptı. Ardından, saldırgan UNI-V2'nin swap yöntemini kullanarak borç aldı ve ExchangeWithAtomic sözleşmesinin swapThroughOrionPool yöntemini çağırarak token değişimi yaptı. Değişim yolu [USDC, saldırganın oluşturduğu Token, USDT] olarak ayarlandı.

Dönüşüm işlemi sırasında, saldırganların oluşturduğu Token sözleşmesinde mevcut olan geri çağırma fonksiyonu nedeniyle, saldırgan Token.Transfer aracılığıyla ExchangeWithAtomic.depositAsset yöntemini geri çağırmaya devam etti ve yeniden giriş saldırısını gerçekleştirdi. Bu, yatırılan tutarın sürekli olarak birikmesine neden oldu ve sonunda saldırgan çekim işlemi ile kâr elde etti.

OrionProtocol Yeniden Giriş Saldırısı Analizi ile PoC

Fon Akışı

Saldırganın başlangıç sermayesi bir işlem platformunun sıcak cüzdan hesabından gelmektedir. 1651 ETH'lik kârın 657.5'i saldırganın cüzdan adresinde kalırken, geri kalan kısım karıştırma hizmeti aracılığıyla transfer edilmiştir.

OrionProtocol yeniden giriş saldırısı analizi ile PoC

Açık Analizi

Açığın temel sorunu doSwapThroughOrionPool fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, token transferini gerçekleştirdikten sonra curBalance değişkenini güncelleyerek saldırganlar için bir fırsat yaratmaktadır. Saldırgan, sahte Token'ın transfer fonksiyonuna geri çağırma işlevi ekleyerek depositAsset fonksiyonunu çağırmakta ve bu da curBalance'ın hatalı bir şekilde güncellenmesine neden olmaktadır. Sonuç olarak, saldırgan, hızlı krediyi geri ödedikten sonra withdraw fonksiyonu aracılığıyla fazla fonları çekmektedir.

OrionProtocol Yeniden Giriş Saldırısı Analizi ve PoC Eki

OrionProtocol yeniden giriş saldırısı analizi PoC ile

OrionProtocol Yeniden Giriş Saldırısı Analizi ile PoC

OrionProtocol yeniden giriş saldırısı analizi ile PoC

Saldırı Yeniden Üretimi

Araştırmacılar, saldırı sürecini simüle eden bazı POC kodları sağladılar. Test sonuçları, saldırganların sözleşme açığını kullanarak ek USDT elde ettiklerini gösterdi.

OrionProtocol Reentrancy Attack Analysis with PoC

OrionProtocol yeniden giriş saldırısı analizi ile PoC

OrionProtocol yeniden giriş saldırısı analizi ile PoC

OrionProtocol yeniden giriş saldırısı analizi ile PoC

OrionProtocol tekrar giriş saldırısı analizi ile PoC

Güvenlik Önerileri

Token değişim işlevine sahip projelerde, birden fazla Token ve değişim yollarının getirebileceği güvenlik riskleri dikkate alınmalıdır. Sözleşmenin güvenliğini ve istikrarını artırmak için "önce değerlendirme, sonra değişken yazma, ardından harici çağrı yapma" kodlama standardına (Checks-Effects-Interactions modeli) uyulması önerilir. Ayrıca, proje ekipleri sözleşme risklerini mümkün olduğunca zincir dışı ortadan kaldırmalı ve Web3 ekosisteminin güvenli bir şekilde çalışmasını sağlamalıdır.

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
  • 2
  • Share
Comment
0/400
HallucinationGrowervip
· 07-12 12:30
Güvenlik kontrolü yapılmadan neler yapıldı?
View OriginalReply0
degenonymousvip
· 07-12 12:23
Sözleşmeler genelde çok sayıda açık barındırıyor.
View OriginalReply0
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)