OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
2023年2月2日15:40:20 UTC, Ethereum ve Binance Akıllı Zincir'deki OrionProtocol, sözleşme açığı nedeniyle reentrancy saldırısına uğradı. Saldırgan, Ethereum zincirinde 2,844,766 USDT, Binance Akıllı Zincir'de ise 191,606 BUSD kazandı; toplam kayıp yaklaşık 2.9 milyon dolar.
Saldırı Süreci Analizi
Saldırgan öncelikle özel bir Token sözleşmesi kurdu ve gerekli hazırlıkları yaptı. Ardından, saldırgan bir DEX'in swap işlevi aracılığıyla borç aldı ve token takası için OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırdı. Takas yolu, saldırgan tarafından oluşturulan Token sözleşmesi adresini içeriyordu.
Değişim sürecinde, saldırgan özel Token sözleşmesinin geri çağırma işlevini kullanarak ExchangeWithAtomic.depositAsset yöntemini tekrar tekrar çağırdı ve bu da yatırılan miktarın sürekli olarak artmasına neden oldu. Sonunda, saldırgan çekim işlemi ile kâr elde etti.
Fon Akışı
Saldırganın başlangıç fonları bir borsa platformunun sıcak cüzdanından gelmektedir. Saldırıdan elde edilen 1,651 ETH'nin 657.5 ETH'si hala saldırganın cüzdan adresinde durmakta, geri kalan kısmı ise karıştırma hizmeti kullanılarak aktarılmıştır.
Açık Analizi
Temel sorun, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarında yatmaktadır. Bu fonksiyonlar, token transferi gerçekleştikten sonra curBalance değişkenini güncelleyerek "Kontrol - Etki - Etkileşim" ( Checks-Effects-Interactions ) modelini ihlal etmektedir. Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek curBalance'ın hatalı güncellenmesine neden olur ve böylece yeniden giriş saldırısı gerçekleştirir.
Saldırı Tekrarı
Araştırmacılar, bu açığı kullanarak saldırı gerçekleştirmenin nasıl yapılacağını gösteren bir POC kodunun bir kısmını sağladı. Test sonuçları, saldırganın ek USDT elde etmeyi başardığını gösteriyor.
Güvenlik Önerileri
Proje tarafı, token değişim işlevini gerçekleştirirken, çeşitli token türlerinin ve değişim yollarının getirebileceği güvenlik risklerini dikkate almalıdır.
"Kontrol - Geçerlilik - Etkileşim" kodlama standartlarına sıkı bir şekilde uyulmalı ve durum değişkenlerinin güncellemeleri, dış çağrılardan önce tamamlanmalıdır.
Yeniden giriş saldırılarını önlemek için yeniden giriş kilidi gibi güvenlik mekanizmaları uygulanmalıdır.
Düzenli olarak kod denetimleri ve güvenlik testleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
Tek seferdeki maksimum tutarı kontrol etmek için bir limit mekanizmasının getirilmesini düşünün, potansiyel kayıpları azaltın.
Bu olay, akıllı sözleşme geliştirme sürecinde her zaman dikkatli olmamız ve güvenliğe önem vermemiz gerektiğini bir kez daha hatırlatıyor. Sadece güvenlik önlemlerini sürekli geliştirdiğimizde, Web3 ekosisteminin sağlıklı gelişimini sağlamada güçlü bir garanti sağlayabiliriz.
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 kaybetti.
OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
2023年2月2日15:40:20 UTC, Ethereum ve Binance Akıllı Zincir'deki OrionProtocol, sözleşme açığı nedeniyle reentrancy saldırısına uğradı. Saldırgan, Ethereum zincirinde 2,844,766 USDT, Binance Akıllı Zincir'de ise 191,606 BUSD kazandı; toplam kayıp yaklaşık 2.9 milyon dolar.
Saldırı Süreci Analizi
Saldırgan öncelikle özel bir Token sözleşmesi kurdu ve gerekli hazırlıkları yaptı. Ardından, saldırgan bir DEX'in swap işlevi aracılığıyla borç aldı ve token takası için OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırdı. Takas yolu, saldırgan tarafından oluşturulan Token sözleşmesi adresini içeriyordu.
Değişim sürecinde, saldırgan özel Token sözleşmesinin geri çağırma işlevini kullanarak ExchangeWithAtomic.depositAsset yöntemini tekrar tekrar çağırdı ve bu da yatırılan miktarın sürekli olarak artmasına neden oldu. Sonunda, saldırgan çekim işlemi ile kâr elde etti.
Fon Akışı
Saldırganın başlangıç fonları bir borsa platformunun sıcak cüzdanından gelmektedir. Saldırıdan elde edilen 1,651 ETH'nin 657.5 ETH'si hala saldırganın cüzdan adresinde durmakta, geri kalan kısmı ise karıştırma hizmeti kullanılarak aktarılmıştır.
Açık Analizi
Temel sorun, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarında yatmaktadır. Bu fonksiyonlar, token transferi gerçekleştikten sonra curBalance değişkenini güncelleyerek "Kontrol - Etki - Etkileşim" ( Checks-Effects-Interactions ) modelini ihlal etmektedir. Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek curBalance'ın hatalı güncellenmesine neden olur ve böylece yeniden giriş saldırısı gerçekleştirir.
Saldırı Tekrarı
Araştırmacılar, bu açığı kullanarak saldırı gerçekleştirmenin nasıl yapılacağını gösteren bir POC kodunun bir kısmını sağladı. Test sonuçları, saldırganın ek USDT elde etmeyi başardığını gösteriyor.
Güvenlik Önerileri
Proje tarafı, token değişim işlevini gerçekleştirirken, çeşitli token türlerinin ve değişim yollarının getirebileceği güvenlik risklerini dikkate almalıdır.
"Kontrol - Geçerlilik - Etkileşim" kodlama standartlarına sıkı bir şekilde uyulmalı ve durum değişkenlerinin güncellemeleri, dış çağrılardan önce tamamlanmalıdır.
Yeniden giriş saldırılarını önlemek için yeniden giriş kilidi gibi güvenlik mekanizmaları uygulanmalıdır.
Düzenli olarak kod denetimleri ve güvenlik testleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
Tek seferdeki maksimum tutarı kontrol etmek için bir limit mekanizmasının getirilmesini düşünün, potansiyel kayıpları azaltın.
Bu olay, akıllı sözleşme geliştirme sürecinde her zaman dikkatli olmamız ve güvenliğe önem vermemiz gerektiğini bir kez daha hatırlatıyor. Sadece güvenlik önlemlerini sürekli geliştirdiğimizde, Web3 ekosisteminin sağlıklı gelişimini sağlamada güçlü bir garanti sağlayabiliriz.