OrionProtocol'un Reentrancy Saldırısı Olayı Analizi
2 Şubat 2023'te, OrionProtocol Ethereum ve Binance Akıllı Zinciri'nde yeniden giriş saldırısına uğradı ve yaklaşık 2,9 milyon dolar kayba neden oldu. Saldırganlar, sözleşme açığını kullanarak Ethereum zincirinde 2.844.766 USDT, Binance Akıllı Zinciri'nde ise 191.606 BUSD çaldılar.
Saldırı Süreci
Saldırgan önce özel bir Token sözleşmesi oluşturdu ve ilgili transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan belirli bir DEX'in swap yöntemini kullanarak borç aldı ve ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırarak token takası yaptı. Takas yolu, saldırganın oluşturduğu Token sözleşmesi adresini içeriyordu.
Dönüşüm sürecinde, saldırganın Token sözleşmesinde bir geri çağırma mekanizması bulunduğundan, saldırgan Token.Transfer üzerinden ExchangeWithAtomic.depositAsset yöntemini geri çağırmaya devam edebiliyor ve bu da yeniden giriş saldırısının gerçekleştirilmesine olanak tanıyor. Bu, yatırılan miktarın tekrar tekrar eklenmesine yol açıyor ve nihayetinde saldırgan, çekim işlemi ile kâr elde ediyor.
Fon Akışı
Saldırganın başlangıç sermayesi, bir ticaret platformunun sıcak cüzdan hesabından gelmektedir. Elde edilen 1,651 ETH'nin 657.5'i hala saldırganın cüzdan adresinde bulunurken, 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, transfer işlemi sonrasında curBalance değişkenini güncelleyen _doSwapTokens fonksiyonunu çağırmaktadır. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna eklenen geri çağırma işlevini kullanarak, curBalance güncellenmeden önce depositAsset fonksiyonunu tekrar çağırmakta ve bu da curBalance'ın yanlış güncellenmesine neden olmaktadır. Sonuç olarak, saldırgan, hızlı kredi geri ödemesinden sonra withdraw fonksiyonu aracılığıyla ek fonları çekmiştir.
Önleme Önerileri
Benzer saldırıları önlemek için, proje sahiplerinin sözleşme tasarlarken aşağıdaki noktalara dikkat etmeleri önerilir:
Birden fazla Token ve birden fazla değişim yolu ile ortaya çıkabilecek beklenmedik durumları göz önünde bulundur.
"Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) kodlama modelini izleyin; önce koşul kontrolü yapın, sonra durum değişkenlerini güncelleyin, en son olarak da dış çağrıları gerçekleştirin.
Anahtar işlemlerden önce ve sonra yeniden giriş kilidi kullanın, yeniden giriş saldırılarını önleyin.
Dışarıdan çağrılan Token sözleşmelerinin güvenlik doğrulaması.
Düzenli olarak kod denetimleri ve güvenlik testleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
Bu önlemleri alarak, proje sözleşmenin güvenliğini ve istikrarını önemli ölçüde artırabilir ve saldırıya uğrama riskini en aza indirebilir.
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.
17 Likes
Reward
17
7
Share
Comment
0/400
AirdropHunterXiao
· 14h ago
Blok Zinciri projesi bir kez daha sömürüldü.
View OriginalReply0
MemecoinResearcher
· 14h ago
ngmi... görünüşe göre yeniden giriş laneti tekrar vuruyor fr fr
View OriginalReply0
NightAirdropper
· 14h ago
Her gün karalanmak çok kötü.
View OriginalReply0
rugpull_survivor
· 14h ago
insanları enayi yerine koymak bir kez daha, bir sonraki kez de.
OrionProtocol, 2.9 milyon dolar değerinde bir reentrancy saldırısına uğradı. Saldırı sürecinin analizi ve önleme önerileri.
OrionProtocol'un Reentrancy Saldırısı Olayı Analizi
2 Şubat 2023'te, OrionProtocol Ethereum ve Binance Akıllı Zinciri'nde yeniden giriş saldırısına uğradı ve yaklaşık 2,9 milyon dolar kayba neden oldu. Saldırganlar, sözleşme açığını kullanarak Ethereum zincirinde 2.844.766 USDT, Binance Akıllı Zinciri'nde ise 191.606 BUSD çaldılar.
Saldırı Süreci
Saldırgan önce özel bir Token sözleşmesi oluşturdu ve ilgili transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan belirli bir DEX'in swap yöntemini kullanarak borç aldı ve ExchangeWithAtomic.swapThroughOrionPool yöntemini çağırarak token takası yaptı. Takas yolu, saldırganın oluşturduğu Token sözleşmesi adresini içeriyordu.
Dönüşüm sürecinde, saldırganın Token sözleşmesinde bir geri çağırma mekanizması bulunduğundan, saldırgan Token.Transfer üzerinden ExchangeWithAtomic.depositAsset yöntemini geri çağırmaya devam edebiliyor ve bu da yeniden giriş saldırısının gerçekleştirilmesine olanak tanıyor. Bu, yatırılan miktarın tekrar tekrar eklenmesine yol açıyor ve nihayetinde saldırgan, çekim işlemi ile kâr elde ediyor.
Fon Akışı
Saldırganın başlangıç sermayesi, bir ticaret platformunun sıcak cüzdan hesabından gelmektedir. Elde edilen 1,651 ETH'nin 657.5'i hala saldırganın cüzdan adresinde bulunurken, 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, transfer işlemi sonrasında curBalance değişkenini güncelleyen _doSwapTokens fonksiyonunu çağırmaktadır. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna eklenen geri çağırma işlevini kullanarak, curBalance güncellenmeden önce depositAsset fonksiyonunu tekrar çağırmakta ve bu da curBalance'ın yanlış güncellenmesine neden olmaktadır. Sonuç olarak, saldırgan, hızlı kredi geri ödemesinden sonra withdraw fonksiyonu aracılığıyla ek fonları çekmiştir.
Önleme Önerileri
Benzer saldırıları önlemek için, proje sahiplerinin sözleşme tasarlarken aşağıdaki noktalara dikkat etmeleri önerilir:
Bu önlemleri alarak, proje sözleşmenin güvenliğini ve istikrarını önemli ölçüde artırabilir ve saldırıya uğrama riskini en aza indirebilir.