OrionProtocol'ün Reentrancy Saldırısı Olayı Analizi
Olayın Özeti
Zincir üzerindeki izleme verilerine göre, 2 Şubat 2023 15:40:20 UTC'de, OrionProtocol, Ethereum ve Binance Akıllı Zincir üzerinde bir sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı. Saldırgan, Ethereum ağından 2.844.766 USDT, Binance Akıllı Zincir'den ise 191.606 BUSD kazandı; toplamda yaklaşık 2,9 milyon dolar.
Saldırı Süreci Analizi
Ethereum zincirindeki saldırı detayları
özel Token
Dönüşüm sürecinde, saldırgan tarafından oluşturulan Token sözleşmesinde geri çağırma işlevi bulunduğundan, ExchangeWithAtomic.swapThroughOrionPool işlemi sırasında saldırgan, Token.Transfer yöntemiyle ExchangeWithAtomic.depositAsset fonksiyonunu tekrar tekrar çağırabiliyordu. Bu, depozit miktarının sürekli olarak birikmesine neden oldu ve sonunda saldırgan, para çekme işlemi ile kâr elde etti.
Fon Akışı
Saldırganın başlangıç fonları, büyük bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırı ile elde edilen 1,651 ETH'nin 657.5 ETH'si hala 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
Açığın temel sorunu doSwapThroughOrionPool fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, token transferini gerçekleştirdikten sonra curBalance değişkenini güncellerken, "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modelini takip etmemektedir. Saldırgan, özel Token'ın transfer fonksiyonuna eklenen geri çağırma mekanizmasını kullanarak, curBalance güncellenmeden önce depositAsset fonksiyonunu tekrar tekrar çağırarak bakiye hesaplamasında hatalara yol açmıştır.
Önlem Önerileri
Proje ekibi, token değişim işlevselliği içeren sözleşmeyi tasarlarken, çeşitli token türlerinin ve değişim yollarının getirebileceği güvenlik risklerini dikkate almalıdır.
"Kontrol - Etki - Etkileşim" kodlama standartlarına sıkı bir şekilde uyulmalıdır, yani önce koşul kontrolü yapılmalı, ardından durum değişkenleri güncellenmeli ve en son olarak dış çağrılar gerçekleştirilmelidir.
Yeniden giriş riski olabilecek fonksiyonlar için yeniden giriş kilidi gibi mekanizmalar kullanarak koruma sağlanmalıdır.
Anahtar işlemlerden önce ve sonra bakiye kontrolü ekleyin, işlemlerin atomik ve tutarlı olmasını sağlamak.
Düzenli olarak kod denetimi ve güvenlik testleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
Tek seferdeki saldırılardan kaynaklanan kayıpları azaltmak için işlem miktarı sınırlamaları veya işlem sıklığı sınırlamaları uygulamayı düşünün.
Bu önlemleri alarak, proje sözleşmenin güvenliğini önemli ölçüde artırabilir ve benzer saldırılara maruz kalma riskini azaltabilir. Hızla gelişen Web3 ekosisteminde, güvenlik her zaman öncelikli bir faktör olmalıdı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.
11 Likes
Reward
11
4
Share
Comment
0/400
BearMarketGardener
· 34m ago
Bir başka yeniden giriş, bütün sebzeler toplandı.
View OriginalReply0
Token_Sherpa
· 9h ago
ugh... bir gün daha, bir reentrancy saldırısı daha. Geliştiriciler ne zaman check-effects-interactions kontrol etmeyi öğrenecek smh
View OriginalReply0
SmartContractWorker
· 9h ago
Yine tekrar tekrar yeniden giriş yapıldı, fena değil.
OrionProtocol, 2.9 milyon dolarlık reentrancy saldırısına maruz kaldı. Açık analiz ve önleme önerileri.
OrionProtocol'ün Reentrancy Saldırısı Olayı Analizi
Olayın Özeti
Zincir üzerindeki izleme verilerine göre, 2 Şubat 2023 15:40:20 UTC'de, OrionProtocol, Ethereum ve Binance Akıllı Zincir üzerinde bir sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı. Saldırgan, Ethereum ağından 2.844.766 USDT, Binance Akıllı Zincir'den ise 191.606 BUSD kazandı; toplamda yaklaşık 2,9 milyon dolar.
Saldırı Süreci Analizi
Ethereum zincirindeki saldırı detayları
özel Token
Dönüşüm sürecinde, saldırgan tarafından oluşturulan Token sözleşmesinde geri çağırma işlevi bulunduğundan, ExchangeWithAtomic.swapThroughOrionPool işlemi sırasında saldırgan, Token.Transfer yöntemiyle ExchangeWithAtomic.depositAsset fonksiyonunu tekrar tekrar çağırabiliyordu. Bu, depozit miktarının sürekli olarak birikmesine neden oldu ve sonunda saldırgan, para çekme işlemi ile kâr elde etti.
Fon Akışı
Saldırganın başlangıç fonları, büyük bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırı ile elde edilen 1,651 ETH'nin 657.5 ETH'si hala 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
Açığın temel sorunu doSwapThroughOrionPool fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, token transferini gerçekleştirdikten sonra curBalance değişkenini güncellerken, "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modelini takip etmemektedir. Saldırgan, özel Token'ın transfer fonksiyonuna eklenen geri çağırma mekanizmasını kullanarak, curBalance güncellenmeden önce depositAsset fonksiyonunu tekrar tekrar çağırarak bakiye hesaplamasında hatalara yol açmıştır.
Önlem Önerileri
Proje ekibi, token değişim işlevselliği içeren sözleşmeyi tasarlarken, çeşitli token türlerinin ve değişim yollarının getirebileceği güvenlik risklerini dikkate almalıdır.
"Kontrol - Etki - Etkileşim" kodlama standartlarına sıkı bir şekilde uyulmalıdır, yani önce koşul kontrolü yapılmalı, ardından durum değişkenleri güncellenmeli ve en son olarak dış çağrılar gerçekleştirilmelidir.
Yeniden giriş riski olabilecek fonksiyonlar için yeniden giriş kilidi gibi mekanizmalar kullanarak koruma sağlanmalıdır.
Anahtar işlemlerden önce ve sonra bakiye kontrolü ekleyin, işlemlerin atomik ve tutarlı olmasını sağlamak.
Düzenli olarak kod denetimi ve güvenlik testleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
Tek seferdeki saldırılardan kaynaklanan kayıpları azaltmak için işlem miktarı sınırlamaları veya işlem sıklığı sınırlamaları uygulamayı düşünün.
Bu önlemleri alarak, proje sözleşmenin güvenliğini önemli ölçüde artırabilir ve benzer saldırılara maruz kalma riskini azaltabilir. Hızla gelişen Web3 ekosisteminde, güvenlik her zaman öncelikli bir faktör olmalıdır.