OrionProtocol'ün Reentrancy Saldırısı Olayı Analizi
2023 yılının 2 Şubat'ında, OrionProtocol Ethereum ve Binance Akıllı Zinciri üzerinde bir sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı ve toplam kayıp yaklaşık 2.9 milyon dolar oldu. Spesifik kayıplar arasında Ethereum zincirinde 2,844,766 USDT ve Binance Akıllı Zinciri'nde 191,606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan öncelikle özel bir Token sözleşmesi dağıttı ve sonraki saldırı için hazırlık olarak ilgili transfer ve yetkilendirme işlemleri gerçekleştirdi. Ardından, saldırgan bir DEX'in swap yöntemi aracılığıyla borç aldı ve ExchangeWithAtomic.swapThroughOrionPool yöntemini kullanarak token değiştirme işlemi gerçekleştirdi. Değişim yolu [USDC, saldırgan Token, USDT] olarak ayarlandı.
Değişim sürecinde, saldırganlar özel Token sözleşmesinin geri çağırma işlevini kullanarak, Token.Transfer yöntemini tekrar tekrar çağırarak ExchangeWithAtomic.depositAsset fonksiyonunu tetikledi ve yatırılan miktarın sürekli birikmesine neden oldu. Sonunda, saldırganlar çekim işlemi ile kazanç sağladı.
Fon Akışı
Saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdan hesabından gelmektedir. Saldırıdan elde edilen 1.651 ETH'nin 657,5 ETH'si hâlâ saldırganın cüzdan adresinde kalırken, geri kalan kısmı karıştırma hizmetleri aracılığıyla transfer edilmiştir.
Açık Analizi
Temel sorun, doSwapThroughOrionPool fonksiyonunda ortaya çıkıyor. Bu fonksiyon, token transferinden sonra curBalance değişkenini güncelleyen _doSwapTokens fonksiyonunu çağırıyor. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, depositAsset fonksiyonunu çağırıyor ve bu da curBalance'ın hatalı güncellenmesine neden oluyor. Saldırgan daha sonra flaş krediyi geri ödedikten sonra withdraw fonksiyonunu çağırarak fonları çekiyor ve saldırıyı tamamlıyor.
Saldırı Yeniden Üretimi
Saldırganlar, özel bir ERC20 token sözleşmesi oluşturarak ve belirli bir DEX'in flash kredi işlevselliğini kullanarak saldırı gerçekleştiriyor. Ana adımlar şunlardır:
Özel Token oluşturun ve USDC, USDT ile ticaret çiftleri kurun
Başlangıç sermayesini hazırlayın ve likidite sağlayın
ExchangeWithAtomic sözleşmesinin depositAsset ve swapThroughOrionPool fonksiyonlarını çağırma
Özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyin.
Son olarak, withdraw fonksiyonu ile kazanç fonlarını çekin
Güvenlik Önerileri
Benzer saldırılardan kaçınmak için proje ekiplerinin aşağıdaki noktalara dikkat etmesi gerekir:
Sözleşme tasarımında çeşitli Token'ların ve değişim yollarının getirebileceği güvenlik riskleri dikkate alınmalıdır.
"Önce Kontrol Et, Sonra Etki Göster, Ardından Etkileşime Geç" (Checks-Effects-Interactions) kodlama standardını izleyin.
Kapsamlı bir güvenlik denetimi gerçekleştirin, özellikle yeniden giriş saldırısı riskine odaklanın.
Yeniden giriş kilidi gibi güvenlik mekanizmalarının kullanılmasını düşünün.
Düzenli olarak sözleşme açıklarını tarama ve güvenlik değerlendirmesi yapın
Bu olay, akıllı sözleşmelerin güvenliğinin önemini bir kez daha vurguladı. Proje sahipleri, kullanıcı varlıklarını korumak ve platform itibarını sürdürmek için güvenlik önlemlerine sürekli olarak dikkat etmeli ve geliştirmelidir.
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, 2.9 milyon reentrancy saldırısına uğradı, fonların bir kısmı crypto tumbler'a aktarıldı.
OrionProtocol'ün Reentrancy Saldırısı Olayı Analizi
2023 yılının 2 Şubat'ında, OrionProtocol Ethereum ve Binance Akıllı Zinciri üzerinde bir sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı ve toplam kayıp yaklaşık 2.9 milyon dolar oldu. Spesifik kayıplar arasında Ethereum zincirinde 2,844,766 USDT ve Binance Akıllı Zinciri'nde 191,606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan öncelikle özel bir Token sözleşmesi dağıttı ve sonraki saldırı için hazırlık olarak ilgili transfer ve yetkilendirme işlemleri gerçekleştirdi. Ardından, saldırgan bir DEX'in swap yöntemi aracılığıyla borç aldı ve ExchangeWithAtomic.swapThroughOrionPool yöntemini kullanarak token değiştirme işlemi gerçekleştirdi. Değişim yolu [USDC, saldırgan Token, USDT] olarak ayarlandı.
Değişim sürecinde, saldırganlar özel Token sözleşmesinin geri çağırma işlevini kullanarak, Token.Transfer yöntemini tekrar tekrar çağırarak ExchangeWithAtomic.depositAsset fonksiyonunu tetikledi ve yatırılan miktarın sürekli birikmesine neden oldu. Sonunda, saldırganlar çekim işlemi ile kazanç sağladı.
Fon Akışı
Saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdan hesabından gelmektedir. Saldırıdan elde edilen 1.651 ETH'nin 657,5 ETH'si hâlâ saldırganın cüzdan adresinde kalırken, geri kalan kısmı karıştırma hizmetleri aracılığıyla transfer edilmiştir.
Açık Analizi
Temel sorun, doSwapThroughOrionPool fonksiyonunda ortaya çıkıyor. Bu fonksiyon, token transferinden sonra curBalance değişkenini güncelleyen _doSwapTokens fonksiyonunu çağırıyor. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, depositAsset fonksiyonunu çağırıyor ve bu da curBalance'ın hatalı güncellenmesine neden oluyor. Saldırgan daha sonra flaş krediyi geri ödedikten sonra withdraw fonksiyonunu çağırarak fonları çekiyor ve saldırıyı tamamlıyor.
Saldırı Yeniden Üretimi
Saldırganlar, özel bir ERC20 token sözleşmesi oluşturarak ve belirli bir DEX'in flash kredi işlevselliğini kullanarak saldırı gerçekleştiriyor. Ana adımlar şunlardır:
Güvenlik Önerileri
Benzer saldırılardan kaçınmak için proje ekiplerinin aşağıdaki noktalara dikkat etmesi gerekir:
Bu olay, akıllı sözleşmelerin güvenliğinin önemini bir kez daha vurguladı. Proje sahipleri, kullanıcı varlıklarını korumak ve platform itibarını sürdürmek için güvenlik önlemlerine sürekli olarak dikkat etmeli ve geliştirmelidir.