OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
2 Şubat 2023'te, Ethereum ve Binance Akıllı Zinciri'ndeki OrionProtocol projesi, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı. Saldırganlar toplamda yaklaşık 2.9 milyon dolar kazanç elde etti, bunlar arasında Ethereum zincirindeki 2.844.766 USDT ve Binance Akıllı Zinciri'ndeki 191.606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan önce özel bir Token sözleşmesi kurdu ve ardından sonraki saldırıya hazırlık olarak bir dizi transfer ve yetkilendirme işlemi gerçekleştirdi. Daha sonra, saldırgan belirli bir DEX'in takas işlevi aracılığıyla borç aldı ve token takası yapmak için OrionProtocol'un ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırdı. Takas yolu [USDC, saldırganToken, USDT] olarak ayarlandı.
swapThroughOrionPool yöntemini gerçekleştirirken, saldırganın Token sözleşmesinde geri çağırma işlevi bulunduğundan, transfer işlemi sırasında reentrancy saldırısı tetiklendi. Saldırgan, Token.Transfer yöntemini kullanarak ExchangeWithAtomic.depositAsset fonksiyonunu tekrar tekrar çağırdı ve yatırılan miktar sürekli olarak birikmeye başladı. Sonunda, saldırgan çekim işlemi ile kar elde etti.
Fon Akışı
On-chain verilerine göre, saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdanından geliyor. Elde edilen 1,651 ETH'nin 657.5'i saldırganın cüzdan adresinde kalırken, geri kalanı karıştırma hizmetleri aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın temeli, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool fonksiyonundadır. Bu fonksiyon, _doSwapTokens işlemini gerçekleştirirken mantıksal bir hataya sahiptir. Özellikle, kod transferi gerçekleştirdikten sonra curBalance değişkenini güncelliyor, bu da yeniden giriş saldırıları için bir zemin hazırlıyor.
Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, depositAsset fonksiyonunu tekrar tekrar çağırdı ve bu da curBalance'ın yanlış güncellenmesine neden oldu. Sonunda, saldırgan, flash kredi geri ödendikten sonra withdraw fonksiyonunu çağırarak fazla fonları çekti.
Önleme Önerileri
Benzer saldırıları önlemek için proje ekiplerinin aşağıdaki noktalara dikkat etmesi gerekmektedir:
Token değişim işlevini gerçekleştirirken, çeşitli Token türleri ve değişim yollarının getirebileceği güvenlik risklerini kapsamlı bir şekilde değerlendirmek gerekmektedir.
"Kontrol-Etkiler-Etkileşimler"(Checks-Effects-Interactions) kodlama modeline 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.
Kullanıcı tanımlı Token'ları işlerken, özellikle dış çağrıların güvenlik kontrolünü artırın.
Düzenli olarak kod denetimleri ve güvenlik testleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
OpenZeppelin'in SafeERC20 gibi olgun güvenlik kütüphaneleri ve en iyi uygulamaları kullanın.
Bu önlemleri alarak, akıllı sözleşmelerin saldırıya uğrama riskini önemli ölçüde azaltabilir ve projenin genel güvenliğini 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ı, yaklaşık 2.9 milyon dolar kayıp.
OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
2 Şubat 2023'te, Ethereum ve Binance Akıllı Zinciri'ndeki OrionProtocol projesi, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı. Saldırganlar toplamda yaklaşık 2.9 milyon dolar kazanç elde etti, bunlar arasında Ethereum zincirindeki 2.844.766 USDT ve Binance Akıllı Zinciri'ndeki 191.606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan önce özel bir Token sözleşmesi kurdu ve ardından sonraki saldırıya hazırlık olarak bir dizi transfer ve yetkilendirme işlemi gerçekleştirdi. Daha sonra, saldırgan belirli bir DEX'in takas işlevi aracılığıyla borç aldı ve token takası yapmak için OrionProtocol'un ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırdı. Takas yolu [USDC, saldırganToken, USDT] olarak ayarlandı.
swapThroughOrionPool yöntemini gerçekleştirirken, saldırganın Token sözleşmesinde geri çağırma işlevi bulunduğundan, transfer işlemi sırasında reentrancy saldırısı tetiklendi. Saldırgan, Token.Transfer yöntemini kullanarak ExchangeWithAtomic.depositAsset fonksiyonunu tekrar tekrar çağırdı ve yatırılan miktar sürekli olarak birikmeye başladı. Sonunda, saldırgan çekim işlemi ile kar elde etti.
Fon Akışı
On-chain verilerine göre, saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdanından geliyor. Elde edilen 1,651 ETH'nin 657.5'i saldırganın cüzdan adresinde kalırken, geri kalanı karıştırma hizmetleri aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın temeli, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool fonksiyonundadır. Bu fonksiyon, _doSwapTokens işlemini gerçekleştirirken mantıksal bir hataya sahiptir. Özellikle, kod transferi gerçekleştirdikten sonra curBalance değişkenini güncelliyor, bu da yeniden giriş saldırıları için bir zemin hazırlıyor.
Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, depositAsset fonksiyonunu tekrar tekrar çağırdı ve bu da curBalance'ın yanlış güncellenmesine neden oldu. Sonunda, saldırgan, flash kredi geri ödendikten sonra withdraw fonksiyonunu çağırarak fazla fonları çekti.
Önleme Önerileri
Benzer saldırıları önlemek için proje ekiplerinin aşağıdaki noktalara dikkat etmesi gerekmektedir:
Token değişim işlevini gerçekleştirirken, çeşitli Token türleri ve değişim yollarının getirebileceği güvenlik risklerini kapsamlı bir şekilde değerlendirmek gerekmektedir.
"Kontrol-Etkiler-Etkileşimler"(Checks-Effects-Interactions) kodlama modeline 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.
Kullanıcı tanımlı Token'ları işlerken, özellikle dış çağrıların güvenlik kontrolünü artırın.
Düzenli olarak kod denetimleri ve güvenlik testleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
OpenZeppelin'in SafeERC20 gibi olgun güvenlik kütüphaneleri ve en iyi uygulamaları kullanın.
Bu önlemleri alarak, akıllı sözleşmelerin saldırıya uğrama riskini önemli ölçüde azaltabilir ve projenin genel güvenliğini artırabilirsiniz.