OrionProtocol, yaklaşık 3 milyon dolar kayba yol açan reentrancy saldırısına uğradı
2 Şubat 2023'te, Ethereum ve Binance Chain üzerindeki OrionProtocol sözleşmeleri, güvenlik açığı nedeniyle geri dönüş saldırısına uğradı. Saldırganlar, Ethereum'da 2,844,766 USDT ve BSC'de 191,606 BUSD dahil olmak üzere yaklaşık 2.9 milyon dolar değerinde kripto varlık çalmayı başardılar.
Saldırı Süreci Analizi
Saldırgan önce özel bir Token sözleşmesi dağıttı ve gerekli hazırlıkları yaptı. Ardından, saldırgan UNI-V2'nin swap yöntemini kullanarak fonları ödünç aldı ve ExchangeWithAtomic sözleşmesinin swapThroughOrionPool yöntemini çağırarak token takası gerçekleştirdi. Takas yolu, saldırganın oluşturduğu Token sözleşmesi adresini içeriyordu, bu da sonraki geri çağırma saldırısına zemin hazırladı.
Dönüşüm sürecinde, saldırganın Token sözleşmesinde geri çağırma mantığı bulunduğundan, her para transferi işlemi ExchangeWithAtomic sözleşmesinin depositAsset yöntemine yeniden giriş çağrısını tetikler. Bu, depozito miktarının hatalı bir şekilde artmasına neden olur ve nihayetinde saldırgana, aslında yatırdığı miktardan fazla fon çekmesine izin verir.
Açık Kaynağı
Temel sorun, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarında yatmaktadır. Bu fonksiyonlar, token transferi gerçekleştirdikten sonra curBalance değişkenini günceller, ancak reentrancy saldırılarını önleyici önlemler içermemektedir. Saldırgan, özel Token'ın transfer fonksiyonunu kullanarak depositAsset metodunu geri çağırmakta ve bu da curBalance'ın hatalı bir şekilde güncellenmesine neden olmaktadır, böylece hızlı kredi geri ödemesinden sonra aşırı fonların çekilmesi sağlanmaktadır.
Fon Akışı
Saldırganın başlangıç sermayesi bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırganın kazandığı 1,651 ETH'nin 657.5 ETH'si hala saldırganın cüzdan adresinde kalırken, geri kalanı karıştırma hizmetleri aracılığıyla transfer edilmiştir.
Güvenlik Önerileri
Benzer saldırıları önlemek için proje sahiplerinin aşağıdaki noktalara dikkat etmesi gerekmektedir:
Gerçek para 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 dikkate almak gerekir.
Sözleşme kodunu "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline göre yazın, yani önce koşul kontrolleri yapın, sonra durum değişkenlerini güncelleyin ve en son olarak dış sözleşmelerle etkileşimde bulunun.
Ana fonksiyonlarda reentrant kilidi veya benzeri mekanizmalar kullanarak reentrans saldırılarını önleyin.
Dış çağrılar için, özellikle fon transferi işlemleri söz konusu olduğunda, son derece dikkatli olunmalı ve push payment yerine pull payment modeli kullanılması düşünülmelidir.
Düzenli olarak güvenlik denetimleri yapılmalı, potansiyel zafiyetler zamanında tespit edilmeli ve düzeltilmelidir.
Bu önlemleri alarak, akıllı sözleşmelerin güvenliğini önemli ölçüde artırabilir ve saldırıya uğrama riskini azaltabilirsiniz. Web3 ekosisteminde, güvenlik her zaman öncelikli bir husus 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
TokenTherapist
· 19h ago
Yine birisi düşünemedi mi?
View OriginalReply0
LiquidatorFlash
· 19h ago
Reentrancy açığı gerçekten de Defi kayıplarının bir numaralı katili...
View OriginalReply0
0xLuckbox
· 19h ago
Bu yıl yine mi çalındı?
View OriginalReply0
TokenSherpa
· 19h ago
*of* bir başka protokol temel yeniden giriş kontrollerini geçemiyor... tarihsel olarak bu önlenebilirdi
OrionProtocol, reentrancy saldırısına uğradı, yaklaşık 3 milyon dolar değerinde varlık çalındı.
OrionProtocol, yaklaşık 3 milyon dolar kayba yol açan reentrancy saldırısına uğradı
2 Şubat 2023'te, Ethereum ve Binance Chain üzerindeki OrionProtocol sözleşmeleri, güvenlik açığı nedeniyle geri dönüş saldırısına uğradı. Saldırganlar, Ethereum'da 2,844,766 USDT ve BSC'de 191,606 BUSD dahil olmak üzere yaklaşık 2.9 milyon dolar değerinde kripto varlık çalmayı başardılar.
Saldırı Süreci Analizi
Saldırgan önce özel bir Token sözleşmesi dağıttı ve gerekli hazırlıkları yaptı. Ardından, saldırgan UNI-V2'nin swap yöntemini kullanarak fonları ödünç aldı ve ExchangeWithAtomic sözleşmesinin swapThroughOrionPool yöntemini çağırarak token takası gerçekleştirdi. Takas yolu, saldırganın oluşturduğu Token sözleşmesi adresini içeriyordu, bu da sonraki geri çağırma saldırısına zemin hazırladı.
Dönüşüm sürecinde, saldırganın Token sözleşmesinde geri çağırma mantığı bulunduğundan, her para transferi işlemi ExchangeWithAtomic sözleşmesinin depositAsset yöntemine yeniden giriş çağrısını tetikler. Bu, depozito miktarının hatalı bir şekilde artmasına neden olur ve nihayetinde saldırgana, aslında yatırdığı miktardan fazla fon çekmesine izin verir.
Açık Kaynağı
Temel sorun, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarında yatmaktadır. Bu fonksiyonlar, token transferi gerçekleştirdikten sonra curBalance değişkenini günceller, ancak reentrancy saldırılarını önleyici önlemler içermemektedir. Saldırgan, özel Token'ın transfer fonksiyonunu kullanarak depositAsset metodunu geri çağırmakta ve bu da curBalance'ın hatalı bir şekilde güncellenmesine neden olmaktadır, böylece hızlı kredi geri ödemesinden sonra aşırı fonların çekilmesi sağlanmaktadır.
Fon Akışı
Saldırganın başlangıç sermayesi bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırganın kazandığı 1,651 ETH'nin 657.5 ETH'si hala saldırganın cüzdan adresinde kalırken, geri kalanı karıştırma hizmetleri aracılığıyla transfer edilmiştir.
Güvenlik Önerileri
Benzer saldırıları önlemek için proje sahiplerinin aşağıdaki noktalara dikkat etmesi gerekmektedir:
Gerçek para 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 dikkate almak gerekir.
Sözleşme kodunu "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline göre yazın, yani önce koşul kontrolleri yapın, sonra durum değişkenlerini güncelleyin ve en son olarak dış sözleşmelerle etkileşimde bulunun.
Ana fonksiyonlarda reentrant kilidi veya benzeri mekanizmalar kullanarak reentrans saldırılarını önleyin.
Dış çağrılar için, özellikle fon transferi işlemleri söz konusu olduğunda, son derece dikkatli olunmalı ve push payment yerine pull payment modeli kullanılması düşünülmelidir.
Düzenli olarak güvenlik denetimleri yapılmalı, potansiyel zafiyetler zamanında tespit edilmeli ve düzeltilmelidir.
Bu önlemleri alarak, akıllı sözleşmelerin güvenliğini önemli ölçüde artırabilir ve saldırıya uğrama riskini azaltabilirsiniz. Web3 ekosisteminde, güvenlik her zaman öncelikli bir husus olmalıdır.