OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
Olay Özeti
2023'ün 2 Şubatında, OrionProtocol Ethereum ve Binance Akıllı Zinciri üzerinde bir yeniden giriş saldırısına uğradı ve yaklaşık 2.9 milyon dolar kayıp yaşandı. Saldırganlar, sözleşme açığını kullanarak Ethereum zincirinde 2,844,766 USDT, Binance Akıllı Zinciri üzerinde ise 191,606 BUSD çaldı.
Saldırı Süreci Analizi
Saldırgan öncelikle bir özel Token sözleşmesi dağıttı ve sonraki saldırılar için hazırlık yaptı.
UNI-V2'nin swap yöntemini kullanarak borç alın ve ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırarak token takası yapın. Takas yolu, saldırgan tarafından oluşturulan Token sözleşme adresini içermektedir.
swapThroughOrionPool yöntemini gerçekleştirirken, saldırgan özel Token sözleşmesindeki geri çağırma fonksiyonunu kullanarak ExchangeWithAtomic.depositAsset yöntemini tekrar tekrar çağırmakta, bu da yatırılan miktarın birden fazla kez artmasına neden olmaktadır.
Son olarak, saldırgan çekim işlemiyle kazanç elde eder.
Para Akışı
Saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdanından geliyor. 1.651 ETH kazançtan, 657.5 ETH saldırganın cüzdanında kalırken, geri kalan kısmı karışık para hizmeti aracılığıyla transfer edildi.
Açık Analizi
Temel sorun doSwapThroughOrionPool fonksiyonundadır. Bu fonksiyon _doSwapTokens'u çalıştırırken önce transfer işlemini gerçekleştiriyor, ardından curBalance değişkenini güncelliyor. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma ekleyerek, curBalance güncellenmeden önce depositAsset fonksiyonunu tekrar çağırıyor ve bu da bakiye hesaplamasında hataya neden oluyor.
Önleme Önerileri
Sözleşme tasarımında, birden fazla Token ve değişim yollarının olası güvenlik risklerini dikkate almak gerekir.
Sözleşme kodunu "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline göre yazın, yani önce koşul kontrolü yapın, ardından durum değişkenlerini güncelleyin, son olarak da dış çağrıları gerçekleştirin.
Reentrancy saldırılarını önlemek için yeniden giriş kilidi gibi güvenlik mekanizmalarını artırın.
Düzenli olarak kod denetimi ve güvenlik açığı taraması yapın, potansiyel güvenlik risklerini zamanında düzeltin.
Tek seferde yapılacak işlemin maksimum miktarını sınırlamak, işlem sıklığı kısıtlamaları gibi önlemler alarak potansiyel saldırılardan kaynaklanan kayıpları azaltmak.
Bu önlemleri alarak, proje ekipleri sözleşme güvenliğini önemli ölçüde artırabilir ve benzer saldırılara maruz kalma riskini azaltabilir. Akıllı sözleşme güvenliğine sürekli dikkat etmek, Web3 ekosisteminin sağlıklı gelişimi için hayati öneme sahiptir.
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.
12 Likes
Reward
12
5
Share
Comment
0/400
StakeOrRegret
· 07-15 17:28
Yine akıllı sözleşmelerin tuzağı
View OriginalReply0
TokenEconomist
· 07-15 07:15
bunu açıklamama izin ver: klasik reentrancy zayıflığı, temelde akıllı sözleşme kusurlarıyla birlikte ekonomik arbitraj
OrionProtocol, 2.9 milyon dolarlık bir reentrancy saldırısına uğradı, ETH ve BSC çift zinciri etkilendi.
OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
Olay Özeti
2023'ün 2 Şubatında, OrionProtocol Ethereum ve Binance Akıllı Zinciri üzerinde bir yeniden giriş saldırısına uğradı ve yaklaşık 2.9 milyon dolar kayıp yaşandı. Saldırganlar, sözleşme açığını kullanarak Ethereum zincirinde 2,844,766 USDT, Binance Akıllı Zinciri üzerinde ise 191,606 BUSD çaldı.
Saldırı Süreci Analizi
Saldırgan öncelikle bir özel Token sözleşmesi dağıttı ve sonraki saldırılar için hazırlık yaptı.
UNI-V2'nin swap yöntemini kullanarak borç alın ve ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırarak token takası yapın. Takas yolu, saldırgan tarafından oluşturulan Token sözleşme adresini içermektedir.
swapThroughOrionPool yöntemini gerçekleştirirken, saldırgan özel Token sözleşmesindeki geri çağırma fonksiyonunu kullanarak ExchangeWithAtomic.depositAsset yöntemini tekrar tekrar çağırmakta, bu da yatırılan miktarın birden fazla kez artmasına neden olmaktadır.
Son olarak, saldırgan çekim işlemiyle kazanç elde eder.
Para Akışı
Saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdanından geliyor. 1.651 ETH kazançtan, 657.5 ETH saldırganın cüzdanında kalırken, geri kalan kısmı karışık para hizmeti aracılığıyla transfer edildi.
Açık Analizi
Temel sorun doSwapThroughOrionPool fonksiyonundadır. Bu fonksiyon _doSwapTokens'u çalıştırırken önce transfer işlemini gerçekleştiriyor, ardından curBalance değişkenini güncelliyor. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma ekleyerek, curBalance güncellenmeden önce depositAsset fonksiyonunu tekrar çağırıyor ve bu da bakiye hesaplamasında hataya neden oluyor.
Önleme Önerileri
Sözleşme tasarımında, birden fazla Token ve değişim yollarının olası güvenlik risklerini dikkate almak gerekir.
Sözleşme kodunu "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline göre yazın, yani önce koşul kontrolü yapın, ardından durum değişkenlerini güncelleyin, son olarak da dış çağrıları gerçekleştirin.
Reentrancy saldırılarını önlemek için yeniden giriş kilidi gibi güvenlik mekanizmalarını artırın.
Düzenli olarak kod denetimi ve güvenlik açığı taraması yapın, potansiyel güvenlik risklerini zamanında düzeltin.
Tek seferde yapılacak işlemin maksimum miktarını sınırlamak, işlem sıklığı kısıtlamaları gibi önlemler alarak potansiyel saldırılardan kaynaklanan kayıpları azaltmak.
Bu önlemleri alarak, proje ekipleri sözleşme güvenliğini önemli ölçüde artırabilir ve benzer saldırılara maruz kalma riskini azaltabilir. Akıllı sözleşme güvenliğine sürekli dikkat etmek, Web3 ekosisteminin sağlıklı gelişimi için hayati öneme sahiptir.