Saldırı işlemi çağrıları analizinde, yeniden giriş sırasında aynı sözleşmenin aynı fonksiyonuna yapılan çağrılarda, geçirilen parametreler aynı olmasına rağmen dönen değerlerin belirgin farklılıklar gösterdiği ortaya çıkmıştır. Yeniden giriş öncesi ve sonrası dönen değerler sırasıyla şunlardır:
Yeniden giriş öncesi: 1002157321772769944
Yeniden giriş sonrası: 10091002696492234934
Reentrancy, remove_liquidity fonksiyonunda gerçekleşir. Bu fonksiyon, likiditeyi kaldırırken kullanıcının eklediği tokenleri geri döndürür. Polygon EVM ile uyumlu olduğundan, MATIC'in sözleşmeye transfer edilmesi reentrancy'yi tetikledi.
Derinlemesine analizler, sorunun getUnderlyingPrice fonksiyonunun uygulanmasında yattığını göstermektedir. Bu fonksiyon, bir dizi iç hesaplama ve dış çağrı ile ilgilidir; burada kritik olan, get_virtual_price fonksiyonunun döndürdüğü değerdir. Bu fonksiyonun döndürdüğü değer, self.D değişkeninden etkilenmektedir ve self.D'nin güncellenmesi, token transferinden sonra gerçekleşmektedir.
Saldırganlar, likiditeyi kaldırırken, MATIC'i saldırı sözleşmesine transfer ettikten sonra, geri çağırma ile önce token fiyatını sorguladılar. self.D henüz güncellenmediği için, fiyat alımında hata oluştu. Saldırganlar bu zaman farkını kullanarak, yeniden giriş sırasında borç verme fiyatını yaklaşık 10 kat artırdılar.
remove_liquidity fonksiyonu, yeniden girişin önlenmesi için '@nonreentrant('lock')' dekoratörünü kullansa da, saldırganlar çoklu sözleşme yeniden girişi ile bu koruma mekanizmasını aşmayı başardılar.
Bu saldırı birkaç temel sorunu ortaya çıkardı:
Değişken değiştirme mantığı dışarıdan çağrılmadan sonra yer alıyor, bu da fiyat alımında anormalliklere neden oluyor.
Çapraz sözleşme yeniden giriş, yeniden giriş kilidini geçersiz kılar.
Benzer saldırıları önlemek için proje ekiplerine önerilir:
Sıkı güvenlik denetimleri gerçekleştirin
Değişken modifikasyonunu dış çağrıdan önce yapın
Fiyatları almak için birden fazla veri kaynağı yöntemi kullanma
"Kontrol-Etkileşim" kodlama standartlarına uyun
Bu önlemlerle, projenin güvenliği ve istikrarı önemli ölçüde artırılabilir.
View Original
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.
Jarvis Network Flaş Krediler ile yeniden saldırıya uğradı, 66.3 bin MATIC kaybedildi.
Jarvis Network projesi Flaş Krediler yeniden giriş saldırısına uğradı analizi
2023年1月15日,Jarvis_Network项目在Polygon网络上遭遇攻击,造成约66.3万MATIC的损失。分析显示,攻击者利用了 Flaş Krediler 和重入漏洞进行攻击。
Saldırı işlemi çağrıları analizinde, yeniden giriş sırasında aynı sözleşmenin aynı fonksiyonuna yapılan çağrılarda, geçirilen parametreler aynı olmasına rağmen dönen değerlerin belirgin farklılıklar gösterdiği ortaya çıkmıştır. Yeniden giriş öncesi ve sonrası dönen değerler sırasıyla şunlardır:
Reentrancy, remove_liquidity fonksiyonunda gerçekleşir. Bu fonksiyon, likiditeyi kaldırırken kullanıcının eklediği tokenleri geri döndürür. Polygon EVM ile uyumlu olduğundan, MATIC'in sözleşmeye transfer edilmesi reentrancy'yi tetikledi.
Derinlemesine analizler, sorunun getUnderlyingPrice fonksiyonunun uygulanmasında yattığını göstermektedir. Bu fonksiyon, bir dizi iç hesaplama ve dış çağrı ile ilgilidir; burada kritik olan, get_virtual_price fonksiyonunun döndürdüğü değerdir. Bu fonksiyonun döndürdüğü değer, self.D değişkeninden etkilenmektedir ve self.D'nin güncellenmesi, token transferinden sonra gerçekleşmektedir.
Saldırganlar, likiditeyi kaldırırken, MATIC'i saldırı sözleşmesine transfer ettikten sonra, geri çağırma ile önce token fiyatını sorguladılar. self.D henüz güncellenmediği için, fiyat alımında hata oluştu. Saldırganlar bu zaman farkını kullanarak, yeniden giriş sırasında borç verme fiyatını yaklaşık 10 kat artırdılar.
remove_liquidity fonksiyonu, yeniden girişin önlenmesi için '@nonreentrant('lock')' dekoratörünü kullansa da, saldırganlar çoklu sözleşme yeniden girişi ile bu koruma mekanizmasını aşmayı başardılar.
Bu saldırı birkaç temel sorunu ortaya çıkardı:
Benzer saldırıları önlemek için proje ekiplerine önerilir:
Bu önlemlerle, projenin güvenliği ve istikrarı önemli ölçüde artırılabilir.