Jarvis Network Flaş Krediler ile Reentrancy Saldırısı Analizi
15 Ocak 2023'te, Jarvis_Network projesi bir siber saldırıya uğradı ve 663101 MATIC kaybetti. İşlem verilerinin analizi sonucunda, bu saldırının Flaş Krediler ve yeniden giriş açığı ile ilgili olduğu tespit edildi.
Saldırgan, remove_liquidity fonksiyonundaki bir açığı kullandı. Likiditeyi kaldırırken, bu fonksiyon kullanıcının eklediği tokenleri geri döner. Polygon ve EVM homomorfik zincirler olduğundan, MATIC'in sözleşmeye aktarılması sözleşmenin yeniden giriş mantığını tetikler.
getUnderlyingPrice fonksiyonunun çağrılma sürecine odaklanın. Bu fonksiyon, bazıları açık kaynak olmayan birden fazla sözleşmenin etkileşimini içeriyor. Analizler sonucunda, sorun get_virtual_price fonksiyonunun döndürdüğü değerde ortaya çıkıyor. Bu fonksiyonun döndürdüğü değer, yeniden girmeden önce ve sonra belirgin farklılıklar gösteriyor.
Özellikle, self.D değişkeninin güncellenmesi token transferinden sonra gerçekleşir. Saldırgan, likiditeyi kaldırırken MATIC'i saldırgan sözleşmesine aktarır. Geri çağırma fallback fonksiyonu sırasında, saldırgan belirli bir tokenin fiyatını önce sorgular. self.D'nin güncellenmesinin transferden sonra gerçekleşmesi, önceki fiyat alımında bir hata oluşmasına neden olur.
Likiditeyi kaldırma süreci şunları içerir: 1) kullanıcı LP token'larını imha etme; 2) kullanıcılara stake edilen fonları gönderme; 3) self.D değerini güncelleme. self.D fiyat hesaplaması için kullanılır ve likidite eklenirken ve kaldırılırken güncellenir. Saldırganlar, büyük likidite ve self.D güncelleme zamanlaması açığını kullanarak, 2. adımda yeniden giriş yapmış ve orijinal fiyatın 10 katı bir fiyatla borç almışlardır.
@nonreentrant('lock') dekoratörü kullanılarak re-entrant saldırıları önlenmesine rağmen, saldırganlar bu koruma mekanizmasını atlamak için çapraz akış sözleşmeleri ile borç alıp verdiler.
Bu saldırı, projenin değişken değiştirme mantığı ve akıllı sözleşmeler arası çağrı güvenliği konusundaki eksikliklerini ortaya koydu. Benzer saldırıları önlemek için proje ekiplerine aşağıdaki önlemleri almaları önerilmektedir:
Sıkı güvenlik denetimleri gerçekleştirin.
Değişken modifikasyonunu dış çağrılardan önce yapın.
Bu önlemlerle, projenin güvenliğini ve istikrarını önemli ölçüde artırabiliriz, benzer saldırı olaylarının tekrar meydana gelmesini önleyebiliriz.
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.
22 Likes
Reward
22
6
Share
Comment
0/400
NFTHoarder
· 14h ago
Bu projenin testi de çok yüzeysel, bir adımda savunmayı aştı.
View OriginalReply0
RektDetective
· 07-19 06:12
Yine biri kaza yaptı, matic transfer kontrolü bile yapılmıyor, acemi kod mu yazıyor?
View OriginalReply0
DuskSurfer
· 07-18 23:29
Hala yatarak sözleşme kopyalıyorsun, yeniden girişin ne olduğunu bile anlamadın~
View OriginalReply0
StableGenius
· 07-18 23:29
lmao başka bir gün başka bir hack... açıkçası bekleniyordu
View OriginalReply0
HypotheticalLiquidator
· 07-18 23:18
Eski alışkanlık yine baş gösterdi, hala bir re-entrant kilidi mi kilitlemedin?
View OriginalReply0
failed_dev_successful_ape
· 07-18 23:11
Proje Ekibi uyuduğunda başkaları burada kapıyı açmaya çalışıyor~
Jarvis Network, Flaş Krediler ile yeniden giriş saldırısına uğradı ve 66 bin MATIC kaybetti.
Jarvis Network Flaş Krediler ile Reentrancy Saldırısı Analizi
15 Ocak 2023'te, Jarvis_Network projesi bir siber saldırıya uğradı ve 663101 MATIC kaybetti. İşlem verilerinin analizi sonucunda, bu saldırının Flaş Krediler ve yeniden giriş açığı ile ilgili olduğu tespit edildi.
Saldırgan, remove_liquidity fonksiyonundaki bir açığı kullandı. Likiditeyi kaldırırken, bu fonksiyon kullanıcının eklediği tokenleri geri döner. Polygon ve EVM homomorfik zincirler olduğundan, MATIC'in sözleşmeye aktarılması sözleşmenin yeniden giriş mantığını tetikler.
getUnderlyingPrice fonksiyonunun çağrılma sürecine odaklanın. Bu fonksiyon, bazıları açık kaynak olmayan birden fazla sözleşmenin etkileşimini içeriyor. Analizler sonucunda, sorun get_virtual_price fonksiyonunun döndürdüğü değerde ortaya çıkıyor. Bu fonksiyonun döndürdüğü değer, yeniden girmeden önce ve sonra belirgin farklılıklar gösteriyor.
Özellikle, self.D değişkeninin güncellenmesi token transferinden sonra gerçekleşir. Saldırgan, likiditeyi kaldırırken MATIC'i saldırgan sözleşmesine aktarır. Geri çağırma fallback fonksiyonu sırasında, saldırgan belirli bir tokenin fiyatını önce sorgular. self.D'nin güncellenmesinin transferden sonra gerçekleşmesi, önceki fiyat alımında bir hata oluşmasına neden olur.
Likiditeyi kaldırma süreci şunları içerir: 1) kullanıcı LP token'larını imha etme; 2) kullanıcılara stake edilen fonları gönderme; 3) self.D değerini güncelleme. self.D fiyat hesaplaması için kullanılır ve likidite eklenirken ve kaldırılırken güncellenir. Saldırganlar, büyük likidite ve self.D güncelleme zamanlaması açığını kullanarak, 2. adımda yeniden giriş yapmış ve orijinal fiyatın 10 katı bir fiyatla borç almışlardır.
@nonreentrant('lock') dekoratörü kullanılarak re-entrant saldırıları önlenmesine rağmen, saldırganlar bu koruma mekanizmasını atlamak için çapraz akış sözleşmeleri ile borç alıp verdiler.
Bu saldırı, projenin değişken değiştirme mantığı ve akıllı sözleşmeler arası çağrı güvenliği konusundaki eksikliklerini ortaya koydu. Benzer saldırıları önlemek için proje ekiplerine aşağıdaki önlemleri almaları önerilmektedir:
Bu önlemlerle, projenin güvenliğini ve istikrarını önemli ölçüde artırabiliriz, benzer saldırı olaylarının tekrar meydana gelmesini önleyebiliriz.