OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
2 Şubat 2023 öğleden sonra, Ethereum ve Binance blok zincirindeki OrionProtocol, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı ve yaklaşık 2,9 milyon dolar kaybetti. Bu kaybın içinde Ethereum'daki 2.844.766 USDT ve BSC'deki 191.606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan önce bir Token sözleşmesi oluşturdu ve bunu transfer ve yetkilendirme işlemleri gerçekleştirdi, böylece sonraki saldırılar için hazırlık yaptı. Ardından, saldırgan UNI-V2'nin swap yöntemini kullanarak borç aldı ve ExchangeWithAtomic sözleşmesinin swapThroughOrionPool yöntemini çağırarak token değişimi yaptı. Değişim yolu [USDC, saldırganın oluşturduğu Token, USDT] olarak ayarlandı.
Dönüşüm işlemi sırasında, saldırganların oluşturduğu Token sözleşmesinde mevcut olan geri çağırma fonksiyonu nedeniyle, saldırgan Token.Transfer aracılığıyla ExchangeWithAtomic.depositAsset yöntemini geri çağırmaya devam etti ve yeniden giriş saldırısını gerçekleştirdi. Bu, yatırılan tutarın sürekli olarak birikmesine neden oldu ve sonunda saldırgan çekim işlemi ile kâr elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi bir işlem platformunun sıcak cüzdan hesabından gelmektedir. 1651 ETH'lik kârın 657.5'i saldırganın cüzdan adresinde kalırken, geri kalan kısım karıştırma hizmeti aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın temel sorunu doSwapThroughOrionPool fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, token transferini gerçekleştirdikten sonra curBalance değişkenini güncelleyerek saldırganlar için bir fırsat yaratmaktadır. Saldırgan, sahte Token'ın transfer fonksiyonuna geri çağırma işlevi ekleyerek depositAsset fonksiyonunu çağırmakta ve bu da curBalance'ın hatalı bir şekilde güncellenmesine neden olmaktadır. Sonuç olarak, saldırgan, hızlı krediyi geri ödedikten sonra withdraw fonksiyonu aracılığıyla fazla fonları çekmektedir.
Saldırı Yeniden Üretimi
Araştırmacılar, saldırı sürecini simüle eden bazı POC kodları sağladılar. Test sonuçları, saldırganların sözleşme açığını kullanarak ek USDT elde ettiklerini gösterdi.
Güvenlik Önerileri
Token değişim işlevine sahip projelerde, birden fazla Token ve değişim yollarının getirebileceği güvenlik riskleri dikkate alınmalıdır. Sözleşmenin güvenliğini ve istikrarını artırmak için "önce değerlendirme, sonra değişken yazma, ardından harici çağrı yapma" kodlama standardına (Checks-Effects-Interactions modeli) uyulması önerilir. Ayrıca, proje ekipleri sözleşme risklerini mümkün olduğunca zincir dışı ortadan kaldırmalı ve Web3 ekosisteminin güvenli bir şekilde çalışmasını sağlamalı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.
OrionProtocol, yeniden giriş saldırısına uğrayarak 2.9 milyon dolar kaybetti. Güvenlik açığı analizi ve önleme önerileri.
OrionProtocol Yeniden Giriş Saldırısı Olayı Analizi
2 Şubat 2023 öğleden sonra, Ethereum ve Binance blok zincirindeki OrionProtocol, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı ve yaklaşık 2,9 milyon dolar kaybetti. Bu kaybın içinde Ethereum'daki 2.844.766 USDT ve BSC'deki 191.606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan önce bir Token sözleşmesi oluşturdu ve bunu transfer ve yetkilendirme işlemleri gerçekleştirdi, böylece sonraki saldırılar için hazırlık yaptı. Ardından, saldırgan UNI-V2'nin swap yöntemini kullanarak borç aldı ve ExchangeWithAtomic sözleşmesinin swapThroughOrionPool yöntemini çağırarak token değişimi yaptı. Değişim yolu [USDC, saldırganın oluşturduğu Token, USDT] olarak ayarlandı.
Dönüşüm işlemi sırasında, saldırganların oluşturduğu Token sözleşmesinde mevcut olan geri çağırma fonksiyonu nedeniyle, saldırgan Token.Transfer aracılığıyla ExchangeWithAtomic.depositAsset yöntemini geri çağırmaya devam etti ve yeniden giriş saldırısını gerçekleştirdi. Bu, yatırılan tutarın sürekli olarak birikmesine neden oldu ve sonunda saldırgan çekim işlemi ile kâr elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi bir işlem platformunun sıcak cüzdan hesabından gelmektedir. 1651 ETH'lik kârın 657.5'i saldırganın cüzdan adresinde kalırken, geri kalan kısım karıştırma hizmeti aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın temel sorunu doSwapThroughOrionPool fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, token transferini gerçekleştirdikten sonra curBalance değişkenini güncelleyerek saldırganlar için bir fırsat yaratmaktadır. Saldırgan, sahte Token'ın transfer fonksiyonuna geri çağırma işlevi ekleyerek depositAsset fonksiyonunu çağırmakta ve bu da curBalance'ın hatalı bir şekilde güncellenmesine neden olmaktadır. Sonuç olarak, saldırgan, hızlı krediyi geri ödedikten sonra withdraw fonksiyonu aracılığıyla fazla fonları çekmektedir.
Saldırı Yeniden Üretimi
Araştırmacılar, saldırı sürecini simüle eden bazı POC kodları sağladılar. Test sonuçları, saldırganların sözleşme açığını kullanarak ek USDT elde ettiklerini gösterdi.
Güvenlik Önerileri
Token değişim işlevine sahip projelerde, birden fazla Token ve değişim yollarının getirebileceği güvenlik riskleri dikkate alınmalıdır. Sözleşmenin güvenliğini ve istikrarını artırmak için "önce değerlendirme, sonra değişken yazma, ardından harici çağrı yapma" kodlama standardına (Checks-Effects-Interactions modeli) uyulması önerilir. Ayrıca, proje ekipleri sözleşme risklerini mümkün olduğunca zincir dışı ortadan kaldırmalı ve Web3 ekosisteminin güvenli bir şekilde çalışmasını sağlamalıdır.