OrionProtocol sözleşme açığı 2.9 milyon dolar kayba yol açtı
2 Şubat 2023'te, Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol akıllı sözleşmeleri yeniden giriş saldırısına uğradı ve yaklaşık 2,9 milyon dolar zarar gördü. Toplam zarar, Ethereum zincirinde 2.844.766 USDT ve Binance Akıllı Zinciri'nde 191.606 BUSD'yi içermektedir.
Saldırı Süreci Analizi
Saldırgan öncelikle özel bir Token sözleşmesi dağıttı ve ilgili transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan bir DEX'in swap yöntemini kullanarak borç aldı ve token takası yapmak için OrionProtocol'ün swapThroughOrionPool yöntemini çağırdı. Takas yolu, saldırganın oluşturduğu Token sözleşmesi adresini içeriyordu.
swapThroughOrionPool yöntemini yürütürken, saldırganın Token sözleşmesinde geri çağırma işlevi bulunduğundan, transfer sürecinde depositAsset yönteminin tekrar tekrar çağrılmasına olanak tanımaktadır. Bu, yatırılan tutarın tekrar hesaplanmasına neden oldu ve sonunda saldırgan, çekim işlemi ile aşırı kazanç elde etti.
Fon Akışı
Saldırganın başlangıç fonları, bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırının getirdiği 1,651 ETH'den, 657.5 ETH hala saldırganın cüzdan adresinde kalmakta, geri kalan kısmı ise karıştırma hizmeti aracılığıyla transfer edilmiştir.
Açık Kök
Sorun doSwapThroughOrionPool fonksiyonundadır. Bu fonksiyon _doSwapTokens'u çalıştırırken önce transfer işlemini yapıyor, ardından curBalance değişkenini güncelliyor. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonunu depositAsset yöntemini geri aramak için kullanarak curBalance'ın yanlış güncellenmesine neden oldu. Bu, saldırganın ani borcu geri ödedikten sonra withdraw fonksiyonu aracılığıyla aşırı fonları çekmesine olanak sağladı.
Güvenlik Önerileri
Token değişim işlevine sahip akıllı sözleşmeler için geliştiricilerin aşağıdaki noktaları dikkate alması gerekmektedir:
Farklı Token ve değişim yollarının getirebileceği beklenmedik durumları dikkate alın.
"Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) kodlama modeline uyulmalıdır; yani önce durum kontrolü yapılmalı, ardından sözleşme durumu güncellenmeli ve son olarak dış sözleşmelerle etkileşimde bulunulmalıdır.
Dış çağrılardan önce kritik durum değişkenlerini güncelleyin.
Yeniden giriş kilidi gibi güvenlik mekanizmalarını uygulayın.
Sözleşmeye kapsamlı bir güvenlik denetimi yapılmalıdır.
Bu önlemleri alarak, akıllı sözleşmelerin saldırıya uğrama riskini önemli ölçüde azaltabilir ve projenin güvenliğini ve istikrarını artırabilirsiniz.
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.
OrionProtocol yeniden giriş saldırısına uğradı, 2.9 milyon dolar çalındı.
OrionProtocol sözleşme açığı 2.9 milyon dolar kayba yol açtı
2 Şubat 2023'te, Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol akıllı sözleşmeleri yeniden giriş saldırısına uğradı ve yaklaşık 2,9 milyon dolar zarar gördü. Toplam zarar, Ethereum zincirinde 2.844.766 USDT ve Binance Akıllı Zinciri'nde 191.606 BUSD'yi içermektedir.
Saldırı Süreci Analizi
Saldırgan öncelikle özel bir Token sözleşmesi dağıttı ve ilgili transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan bir DEX'in swap yöntemini kullanarak borç aldı ve token takası yapmak için OrionProtocol'ün swapThroughOrionPool yöntemini çağırdı. Takas yolu, saldırganın oluşturduğu Token sözleşmesi adresini içeriyordu.
swapThroughOrionPool yöntemini yürütürken, saldırganın Token sözleşmesinde geri çağırma işlevi bulunduğundan, transfer sürecinde depositAsset yönteminin tekrar tekrar çağrılmasına olanak tanımaktadır. Bu, yatırılan tutarın tekrar hesaplanmasına neden oldu ve sonunda saldırgan, çekim işlemi ile aşırı kazanç elde etti.
Fon Akışı
Saldırganın başlangıç fonları, bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırının getirdiği 1,651 ETH'den, 657.5 ETH hala saldırganın cüzdan adresinde kalmakta, geri kalan kısmı ise karıştırma hizmeti aracılığıyla transfer edilmiştir.
Açık Kök
Sorun doSwapThroughOrionPool fonksiyonundadır. Bu fonksiyon _doSwapTokens'u çalıştırırken önce transfer işlemini yapıyor, ardından curBalance değişkenini güncelliyor. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonunu depositAsset yöntemini geri aramak için kullanarak curBalance'ın yanlış güncellenmesine neden oldu. Bu, saldırganın ani borcu geri ödedikten sonra withdraw fonksiyonu aracılığıyla aşırı fonları çekmesine olanak sağladı.
Güvenlik Önerileri
Token değişim işlevine sahip akıllı sözleşmeler için geliştiricilerin aşağıdaki noktaları dikkate alması gerekmektedir:
Bu önlemleri alarak, akıllı sözleşmelerin saldırıya uğrama riskini önemli ölçüde azaltabilir ve projenin güvenliğini ve istikrarını artırabilirsiniz.