OrionProtocol'ün Reentrancy Saldırısı Olayı Analizi
2 Şubat 2023 15:40:20 (UTC), Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol, sözleşme açığı nedeniyle geri dönüş saldırısına uğradı. Saldırgan, Ethereum üzerindeki 2,844,766 USDT ve Binance Akıllı Zinciri üzerindeki 191,606 BUSD dahil olmak üzere yaklaşık 2.9 milyon dolar değerinde fonu başarıyla çaldı.
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, sonraki saldırı için hazırlık yaptı. Ardından, saldırgan Uniswap V2'nin swap fonksiyonu aracılığıyla borç aldı ve OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırarak token değişimi yaptı.
Değişim yolu [USDC, saldırgan Token, USDT] olarak ayarlandı; burada saldırgan Token kritik bir öneme sahiptir. Değişim sürecinde, bu özel Token sözleşmesinde geri çağırma işlevi bulunduğundan, saldırgan Token transferi sırasında ExchangeWithAtomic.depositAsset yöntemini tetikleyebilmekte ve böylece yeniden giriş saldırısı gerçekleştirebilmektedir. Bu, yatırılan miktarın yanlış bir şekilde toplandığına yol açar ve sonuç olarak saldırgan çekim işlemi ile kâr elde etmektedir.
Fon Akışı
Saldırganın başlangıç fonları, bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırıyla 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 aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın temeli, ExchangeWithAtomic sözleşmesindeki doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarındadır. Bu fonksiyonlar, token transferleri gerçekleştirildikten sonra curBalance değişkenini günceller, bu da yeniden giriş saldırılarına zemin hazırlar. Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek depositAsset fonksiyonunu başarıyla tetikledi ve curBalance'ın hatalı bir şekilde güncellenmesine neden oldu. Sonuç olarak, saldırgan, ani kredi geri ödemesinden sonra withdraw fonksiyonu aracılığıyla fazla fonları çekti.
Önleme Önerileri
"Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline uyun: Dış çağrılar yapılmadan önce sözleşme durumunu güncelleyin.
Yeniden giriş kilidi kullanın: Hassas işlemler başlamadan önce kilitleyin, bitiminde kilidi açın, yeniden girişi önleyin.
Tüm token ve dönüşüm yollarını kapsamlı bir şekilde değerlendirin: Dönüşüm işlevini tasarlarken, çeşitli olası durumları ve sınır koşullarını dikkate almak gerekir.
Tek seferde işlem miktarını sınırlama: Makul bir işlem limiti belirleyerek potansiyel kayıpları azaltın.
Güvenlik denetimlerini düzenli olarak gerçekleştirin: Sözleşmeleri kapsamlı bir şekilde denetlemek için profesyonel bir güvenlik ekibi kiralayın, potansiyel açıkları zamanında tespit edin ve düzeltin.
Çoklu imza mekanizmasının uygulanması: Anahtar işlemlerin birden fazla onay gerektirmesi, saldırı zorluğunu artırır.
Kod mantığını optimize etme: Ana durum değişkenleri güncellendikten sonra dış çağrılar yapılmasını sağla.
Acil müdahale mekanizmasını artırın: Saldırı gerçekleştiğinde hızlı bir şekilde yanıt verebilmek için kapsamlı bir acil durum planı oluşturun ve kayıpları en aza indirin.
Bu olay, akıllı sözleşmelerin güvenliğinin önemini bir kez daha vurgulamaktadır. Proje sahiplerinin geliştirme sürecinde sürekli dikkatli olmaları ve kullanıcı varlıklarını ve proje itibarını korumak için kapsamlı güvenlik önlemleri almaları gerekmektedir. Aynı zamanda bu, yatırımcılara projeleri seçerken dikkatli olmalarını ve projelerin güvenliği ile teknik yeteneklerine odaklanmalarını hatırlatmaktadır.
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.
6 Likes
Reward
6
5
Share
Comment
0/400
ZenMiner
· 10h ago
Sözleşme güvenliği denetime de bağlıdır.
View OriginalReply0
DAOplomacy
· 10h ago
bir başka alt-optimal yönetim hatası smh...
View OriginalReply0
GweiTooHigh
· 10h ago
又一个 Emiciler Tarafından Oyuna Getirilmek 的
View OriginalReply0
DeFiAlchemist
· 10h ago
*etereal gözlüklerini ayarlıyor* başka bir ruh yeniden girişin karanlık sanatlarına düşüyor... protokolün mistik engelleri çok zayıftı
OrionProtocol, yeniden giriş saldırısına uğradı ve 2.9 milyon dolar fon çalındı.
OrionProtocol'ün Reentrancy Saldırısı Olayı Analizi
2 Şubat 2023 15:40:20 (UTC), Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol, sözleşme açığı nedeniyle geri dönüş saldırısına uğradı. Saldırgan, Ethereum üzerindeki 2,844,766 USDT ve Binance Akıllı Zinciri üzerindeki 191,606 BUSD dahil olmak üzere yaklaşık 2.9 milyon dolar değerinde fonu başarıyla çaldı.
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, sonraki saldırı için hazırlık yaptı. Ardından, saldırgan Uniswap V2'nin swap fonksiyonu aracılığıyla borç aldı ve OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırarak token değişimi yaptı.
Değişim yolu [USDC, saldırgan Token, USDT] olarak ayarlandı; burada saldırgan Token kritik bir öneme sahiptir. Değişim sürecinde, bu özel Token sözleşmesinde geri çağırma işlevi bulunduğundan, saldırgan Token transferi sırasında ExchangeWithAtomic.depositAsset yöntemini tetikleyebilmekte ve böylece yeniden giriş saldırısı gerçekleştirebilmektedir. Bu, yatırılan miktarın yanlış bir şekilde toplandığına yol açar ve sonuç olarak saldırgan çekim işlemi ile kâr elde etmektedir.
Fon Akışı
Saldırganın başlangıç fonları, bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırıyla 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 aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın temeli, ExchangeWithAtomic sözleşmesindeki doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarındadır. Bu fonksiyonlar, token transferleri gerçekleştirildikten sonra curBalance değişkenini günceller, bu da yeniden giriş saldırılarına zemin hazırlar. Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek depositAsset fonksiyonunu başarıyla tetikledi ve curBalance'ın hatalı bir şekilde güncellenmesine neden oldu. Sonuç olarak, saldırgan, ani kredi geri ödemesinden sonra withdraw fonksiyonu aracılığıyla fazla fonları çekti.
Önleme Önerileri
"Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline uyun: Dış çağrılar yapılmadan önce sözleşme durumunu güncelleyin.
Yeniden giriş kilidi kullanın: Hassas işlemler başlamadan önce kilitleyin, bitiminde kilidi açın, yeniden girişi önleyin.
Tüm token ve dönüşüm yollarını kapsamlı bir şekilde değerlendirin: Dönüşüm işlevini tasarlarken, çeşitli olası durumları ve sınır koşullarını dikkate almak gerekir.
Tek seferde işlem miktarını sınırlama: Makul bir işlem limiti belirleyerek potansiyel kayıpları azaltın.
Güvenlik denetimlerini düzenli olarak gerçekleştirin: Sözleşmeleri kapsamlı bir şekilde denetlemek için profesyonel bir güvenlik ekibi kiralayın, potansiyel açıkları zamanında tespit edin ve düzeltin.
Çoklu imza mekanizmasının uygulanması: Anahtar işlemlerin birden fazla onay gerektirmesi, saldırı zorluğunu artırır.
Kod mantığını optimize etme: Ana durum değişkenleri güncellendikten sonra dış çağrılar yapılmasını sağla.
Acil müdahale mekanizmasını artırın: Saldırı gerçekleştiğinde hızlı bir şekilde yanıt verebilmek için kapsamlı bir acil durum planı oluşturun ve kayıpları en aza indirin.
Bu olay, akıllı sözleşmelerin güvenliğinin önemini bir kez daha vurgulamaktadır. Proje sahiplerinin geliştirme sürecinde sürekli dikkatli olmaları ve kullanıcı varlıklarını ve proje itibarını korumak için kapsamlı güvenlik önlemleri almaları gerekmektedir. Aynı zamanda bu, yatırımcılara projeleri seçerken dikkatli olmalarını ve projelerin güvenliği ile teknik yeteneklerine odaklanmalarını hatırlatmaktadır.