OrionProtocol yeniden giriş saldırısı olayı analizi
2023 yılının 2 Şubat'ında, Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol projesi, sözleşme açığı nedeniyle yeniden giriş saldırısına maruz kaldı ve toplamda yaklaşık 2.9 milyon dolar değerinde varlık kaybı yaşandı. Bu kaybın içinde Ethereum üzerinde 2,844,766 USDT ve Binance Akıllı Zinciri üzerinde 191,606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan önce özel bir Token sözleşmesi dağıttı ve bir dizi hazırlık yaptı. Ardından, saldırgan belirli bir DEX'in swap işlevi aracılığıyla borç alarak, token takası yapmak için OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırdı. Takas yolunda saldırganın oluşturduğu Token sözleşmesi adresi yer aldı, bu da sonraki geri çağırma saldırısı için zemin hazırladı.
Takas sürecinde, saldırganın Token sözleşmesinde bulunan geri çağırma mantığı nedeniyle, transfer işlemi sırasında ExchangeWithAtomic.depositAsset yöntemine tekrar tekrar çağrı yapıldı. Bu yeniden giriş saldırısı, depozito miktarının tekrar tekrar birikmesine neden oldu ve sonunda saldırgan, çekim işlemiyle normal limitin üzerinde fon elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdanından gelmektedir. Saldırının kazandığı 1,651 ETH'den, 657.5 ETH hala saldırganın cüzdan adresinde kalırken, geri kalan kısmı karıştırma aracı kullanılarak transfer edilmiştir.
Açık Analizi
Saldırının temel sorunu, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool fonksiyonunda yatmaktadır. Bu fonksiyon, token değişimi gerçekleştirirken olası reentrancy durumlarını doğru bir şekilde ele almamaktadır. Özellikle, _doSwapTokens fonksiyonunda, token transfer işlemi sonrasında curBalance değişkeni güncellenmekte, bu da saldırganlar için bir fırsat sunmaktadır.
Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, her para transferinde depositAsset fonksiyonunun çağrılmasını tetikledi ve bu da curBalance değişkeninin hatalı bir şekilde güncellenmesine neden oldu. Sonunda, saldırgan, ani kredi geri ödendikten sonra withdraw fonksiyonu aracılığıyla fazla fonları çekti.
Açık Tekrarı
Araştırmacılar, bu açığı kullanarak nasıl saldırı gerçekleştirileceğini gösteren bazı POC kodları sağladılar. Kod, saldırganın işlem akışını simüle ediyor; sahte Token oluşturma, likidite havuzunu ayarlama, flaş kredi alma ve yeniden giriş saldırısı gibi adımları içeriyor.
Güvenlik Önerileri
Benzer saldırıları önlemek için, proje ekibi sözleşmeyi tasarlarken aşağıdaki noktalara dikkat etmelidir:
Token değişim işlevini gerçekleştirirken, çeşitli Token türlerinin ve değişim yollarının potansiyel risklerini dikkate almak önemlidir.
Sözleşme kodunu "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline göre yazın, yani önce koşulları kontrol edin, ardından durum değişkenlerini güncelleyin, en son olarak dış çağrıları gerçekleştirin.
Anahtar fonksiyonları korumak için yeniden giriş kilidi veya diğer yeniden giriş önleme mekanizmalarını kullanın.
Güvenlik denetimlerini düzenli olarak yapmak, potansiyel açıkları zamanında tespit etmek ve düzeltmek.
Potansiyel saldırıların etkisini azaltmak için işlem tutarı sınırlaması veya işlem sıklığı sınırlaması getirmeyi düşünün.
Bu önlemleri alarak, proje sözleşme güvenliğini önemli ölçüde artırabilir ve saldırı riskini azaltabilir. Web3 ekosisteminde güvenlik her zaman öncelikli bir düşünce 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.
10 Likes
Reward
10
4
Share
Comment
0/400
SleepTrader
· 17h ago
Yine bir sözleşme acemisi dayak yedi.
View OriginalReply0
StablecoinEnjoyer
· 17h ago
Yine kaçırdılar, akıllanmadın mı?
View OriginalReply0
GetRichLeek
· 17h ago
Günlük olarak sözleşmelerle Klip Kuponlar hahahaha
View OriginalReply0
MemeEchoer
· 17h ago
Yine uzandım, anlaşılan akıllı sözleşmeler hala ciddiyetle yazılmalı.
OrionProtocol tekrar giriş saldırısına uğradı, 2.9 milyon dolar değerinde varlık kaybı yaşandı.
OrionProtocol yeniden giriş saldırısı olayı analizi
2023 yılının 2 Şubat'ında, Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol projesi, sözleşme açığı nedeniyle yeniden giriş saldırısına maruz kaldı ve toplamda yaklaşık 2.9 milyon dolar değerinde varlık kaybı yaşandı. Bu kaybın içinde Ethereum üzerinde 2,844,766 USDT ve Binance Akıllı Zinciri üzerinde 191,606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan önce özel bir Token sözleşmesi dağıttı ve bir dizi hazırlık yaptı. Ardından, saldırgan belirli bir DEX'in swap işlevi aracılığıyla borç alarak, token takası yapmak için OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırdı. Takas yolunda saldırganın oluşturduğu Token sözleşmesi adresi yer aldı, bu da sonraki geri çağırma saldırısı için zemin hazırladı.
Takas sürecinde, saldırganın Token sözleşmesinde bulunan geri çağırma mantığı nedeniyle, transfer işlemi sırasında ExchangeWithAtomic.depositAsset yöntemine tekrar tekrar çağrı yapıldı. Bu yeniden giriş saldırısı, depozito miktarının tekrar tekrar birikmesine neden oldu ve sonunda saldırgan, çekim işlemiyle normal limitin üzerinde fon elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi bir borsa platformunun sıcak cüzdanından gelmektedir. Saldırının kazandığı 1,651 ETH'den, 657.5 ETH hala saldırganın cüzdan adresinde kalırken, geri kalan kısmı karıştırma aracı kullanılarak transfer edilmiştir.
Açık Analizi
Saldırının temel sorunu, ExchangeWithAtomic sözleşmesinin doSwapThroughOrionPool fonksiyonunda yatmaktadır. Bu fonksiyon, token değişimi gerçekleştirirken olası reentrancy durumlarını doğru bir şekilde ele almamaktadır. Özellikle, _doSwapTokens fonksiyonunda, token transfer işlemi sonrasında curBalance değişkeni güncellenmekte, bu da saldırganlar için bir fırsat sunmaktadır.
Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, her para transferinde depositAsset fonksiyonunun çağrılmasını tetikledi ve bu da curBalance değişkeninin hatalı bir şekilde güncellenmesine neden oldu. Sonunda, saldırgan, ani kredi geri ödendikten sonra withdraw fonksiyonu aracılığıyla fazla fonları çekti.
Açık Tekrarı
Araştırmacılar, bu açığı kullanarak nasıl saldırı gerçekleştirileceğini gösteren bazı POC kodları sağladılar. Kod, saldırganın işlem akışını simüle ediyor; sahte Token oluşturma, likidite havuzunu ayarlama, flaş kredi alma ve yeniden giriş saldırısı gibi adımları içeriyor.
Güvenlik Önerileri
Benzer saldırıları önlemek için, proje ekibi sözleşmeyi tasarlarken aşağıdaki noktalara dikkat etmelidir:
Token değişim işlevini gerçekleştirirken, çeşitli Token türlerinin ve değişim yollarının potansiyel risklerini dikkate almak önemlidir.
Sözleşme kodunu "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modeline göre yazın, yani önce koşulları kontrol edin, ardından durum değişkenlerini güncelleyin, en son olarak dış çağrıları gerçekleştirin.
Anahtar fonksiyonları korumak için yeniden giriş kilidi veya diğer yeniden giriş önleme mekanizmalarını kullanın.
Güvenlik denetimlerini düzenli olarak yapmak, potansiyel açıkları zamanında tespit etmek ve düzeltmek.
Potansiyel saldırıların etkisini azaltmak için işlem tutarı sınırlaması veya işlem sıklığı sınırlaması getirmeyi düşünün.
Bu önlemleri alarak, proje sözleşme güvenliğini önemli ölçüde artırabilir ve saldırı riskini azaltabilir. Web3 ekosisteminde güvenlik her zaman öncelikli bir düşünce olmalıdır.