SlowMist MistEye sistemi güvenlik uyarısına göre, 7 Ekim 2023'te Avalanche zincirinin sosyal protokolü Stars Arena'ya saldırı düzenlenerek yaklaşık 2,9 milyon ABD Doları zarara neden olundu. SlowMist güvenlik ekibi saldırı olayını kısaca analiz etti ve sonuçları şu şekilde paylaştı.
İlgili bilgi
Saldırganın adresi:
Saldırı sözleşmesi:
Saldırı işlemi:
Saldırı Çekirdeği
Saldırgan, mevduat payına karşılık gelen fiyatı kurcalamak için yeniden giriş güvenlik açığından yararlanır. Daha sonra satış yaparken, kötü niyetli manipülasyonun fiyat hesaplamasına bağımlılığı nedeniyle benzer fiyat manipülasyonları meydana geldi. Saldırgan, yeniden girişte güncellenen hisse fiyatını doğru bir şekilde hesaplayarak sözleşmeden fon çalıyor.
İşlem Analizi
Saldırı işleminde yeniden giriş çağrısı olduğunu bulabiliriz ve kodu koda dönüştürerek çağrı yöntemini kademeli olarak analiz ederiz.
Saldırgan ilk olarak saldırı sözleşmelerini (0x7f283 ve 0xdd9af) oluşturdu, saldırı sözleşmesi aracılığıyla Stars Arena: Shares sözleşmesinin 0xe9ccf3a3 yöntemini çağırdı ve ardından 1 AVAX token yatırdı.
Derlenmiş kodun adım adım takibine göre, saldırganın ilk kez kullandığı 0xe9ccf3a3 yöntemi, 0x326c ve 0x2058 yöntemlerini çağıran, depozitoya benzer bir fonksiyondur. 0x326c yöntemi yalnızca parametre olarak döndürülen bir çağrıdır, 0x2058 yöntemi ise belirli bir tokenin satın alınmasını veya takasını işleyen bir işleve benzer.Bu yöntem, bir sonraki işlemi gerçekleştirmek için 0xe9ccf3a3'te iletilen AVAX token miktarını ve adresini kullanır. , pay ve ücreti hesaplayın.
0x2058 metodunun 92. satırının çağırma mantığını takip edersek 0x1a9b metodunun bir hesaplama fonksiyonu olduğunu bulabiliriz.Hesaplanan sonuç fiyata benzer bir değerdir ve dönüş değeri yeni hesaplanan v24 / 0xde0b6b3a7640000 veya _initialPrice olur.
109, 110 ve 116 numaralı hatlarda 0x307c ve 0x30ef yöntemlerinde düşük seviyeli çağrı çağrıları bulunmaktadır ve 0x30ef çağrısı yine de gelen 0xdd9af saldırı sözleşme adresi olan g1'e harici bir çağrıdır. İşlevde yeniden giriş engelleme kısıtlaması yoktur ve harici çağrı yürütüldükten sonra bu yöntem, field0.length ve field0 parametrelerini güncellemek için sonraki if kararını yürütür. Burada yeniden girişin meydana geldiğine şüphe yoktur.
Yeniden giriş çağrısında saldırganın oluşturduğu verilere bakalım.
Yeniden girişli harici çağrı 0x5632b2e4 yöntemi olup, saldırganın oluşturduğu 4 parametre iletilir. Bu parametreler hexadecimal dönüşümle 91000000000'e dönüştürülür.
Yukarıda belirtildiği gibi, 0x5632b2e4 yöntemine yapılan harici çağrı, if (g0 == _getMyShares[address(g1)][msg.sender]) kararından önce yürütülür. Şu anda field0.lengt'in değeri 0'dır ve güncellenmemiştir. Saldırgan, 0x5632b2e4 yöntemindeki kararı atlamak için bu yöntemi kullanmış ve msg.sender'ın aşağıdaki dört parametre durumunu, yani 0xdd9af saldırı sözleşmesi olan, harici çağrı yapıldığında oluşturulan verilerle değiştirmiştir.
Yukarıdaki işlemlerin ardından saldırgan, hissesini satmak için sellShares'i arayarak 266.102,97278 AVAX elde etti.
SellShares işlevinin derinliklerine inersek, işlev ilk olarak 0x1a9b yöntemini çağırdı ve önceki 0x2058 yönteminde, belirli tokenların satın alınmasını veya takasını işleyen bir işlev olan bir çağrı vardı. 0x1a9b yöntemindeki 0x2329 yönteminin sahibi_9f'yi güncelleyeceğini bulabiliriz [g0] ve bu parametre, yeniden giriş sırasında saldırgan tarafından oluşturulan 91000000000 olarak değiştirildi.
0x1a9b yöntemine dönün ve önceden kötü amaçlı olarak oluşturulan değere göre yeniden hesaplama yapın (hesaplama tutarı için yorumlara bakın).
Yukarıdaki hesaplama sonrasında yeni hesaplanan paya karşılık gelen fiyat değişmiş olup hesaplanan sonuç 274.333.061476814e18 olmuştur. Bir dizi ücret tahsilatının ardından saldırgan, hisseleri değiştirmeden fiyatı manipüle etmek için kötü niyetli bir yapı kullandı, hisseleri sattı ve başarılı bir şekilde kar elde etti.
Özetle
Bu saldırının temelinde, yeniden giriş saldırısının neden olduğu fiyat hesaplama bağımlılığı güncellemesi yatıyor ve bu da benzer kötü niyetli fiyat manipülasyonlarına yol açıyor. SlowMist güvenlik ekibi, proje tarafının sözleşmeyi dağıtmadan ve yayınlamadan önce birden fazla güvenlik şirketi tarafından denetimlere tabi tutulması için elinden gelenin en iyisini yapmasını tavsiye ediyor; aynı zamanda kodlama sırasında Checks-Effects-Etkileşimler kodlama spesifikasyonunun mümkün olduğunca karşılanması gerekiyor, ve yeniden girişi önleyici kilitler eklenmelidir.
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.
Slow Mist: Saldırıya uğrayan Stars Arena'nın kısa bir analizi
arka plan
SlowMist MistEye sistemi güvenlik uyarısına göre, 7 Ekim 2023'te Avalanche zincirinin sosyal protokolü Stars Arena'ya saldırı düzenlenerek yaklaşık 2,9 milyon ABD Doları zarara neden olundu. SlowMist güvenlik ekibi saldırı olayını kısaca analiz etti ve sonuçları şu şekilde paylaştı.
İlgili bilgi
Saldırganın adresi:
Saldırı sözleşmesi:
Saldırı işlemi:
Saldırı Çekirdeği
Saldırgan, mevduat payına karşılık gelen fiyatı kurcalamak için yeniden giriş güvenlik açığından yararlanır. Daha sonra satış yaparken, kötü niyetli manipülasyonun fiyat hesaplamasına bağımlılığı nedeniyle benzer fiyat manipülasyonları meydana geldi. Saldırgan, yeniden girişte güncellenen hisse fiyatını doğru bir şekilde hesaplayarak sözleşmeden fon çalıyor.
İşlem Analizi
Saldırı işleminde yeniden giriş çağrısı olduğunu bulabiliriz ve kodu koda dönüştürerek çağrı yöntemini kademeli olarak analiz ederiz.
Saldırgan ilk olarak saldırı sözleşmelerini (0x7f283 ve 0xdd9af) oluşturdu, saldırı sözleşmesi aracılığıyla Stars Arena: Shares sözleşmesinin 0xe9ccf3a3 yöntemini çağırdı ve ardından 1 AVAX token yatırdı.
Derlenmiş kodun adım adım takibine göre, saldırganın ilk kez kullandığı 0xe9ccf3a3 yöntemi, 0x326c ve 0x2058 yöntemlerini çağıran, depozitoya benzer bir fonksiyondur. 0x326c yöntemi yalnızca parametre olarak döndürülen bir çağrıdır, 0x2058 yöntemi ise belirli bir tokenin satın alınmasını veya takasını işleyen bir işleve benzer.Bu yöntem, bir sonraki işlemi gerçekleştirmek için 0xe9ccf3a3'te iletilen AVAX token miktarını ve adresini kullanır. , pay ve ücreti hesaplayın.
0x2058 metodunun 92. satırının çağırma mantığını takip edersek 0x1a9b metodunun bir hesaplama fonksiyonu olduğunu bulabiliriz.Hesaplanan sonuç fiyata benzer bir değerdir ve dönüş değeri yeni hesaplanan v24 / 0xde0b6b3a7640000 veya _initialPrice olur.
109, 110 ve 116 numaralı hatlarda 0x307c ve 0x30ef yöntemlerinde düşük seviyeli çağrı çağrıları bulunmaktadır ve 0x30ef çağrısı yine de gelen 0xdd9af saldırı sözleşme adresi olan g1'e harici bir çağrıdır. İşlevde yeniden giriş engelleme kısıtlaması yoktur ve harici çağrı yürütüldükten sonra bu yöntem, field0.length ve field0 parametrelerini güncellemek için sonraki if kararını yürütür. Burada yeniden girişin meydana geldiğine şüphe yoktur.
Yeniden giriş çağrısında saldırganın oluşturduğu verilere bakalım.
Yeniden girişli harici çağrı 0x5632b2e4 yöntemi olup, saldırganın oluşturduğu 4 parametre iletilir. Bu parametreler hexadecimal dönüşümle 91000000000'e dönüştürülür.
Yukarıda belirtildiği gibi, 0x5632b2e4 yöntemine yapılan harici çağrı, if (g0 == _getMyShares[address(g1)][msg.sender]) kararından önce yürütülür. Şu anda field0.lengt'in değeri 0'dır ve güncellenmemiştir. Saldırgan, 0x5632b2e4 yöntemindeki kararı atlamak için bu yöntemi kullanmış ve msg.sender'ın aşağıdaki dört parametre durumunu, yani 0xdd9af saldırı sözleşmesi olan, harici çağrı yapıldığında oluşturulan verilerle değiştirmiştir.
Yukarıdaki işlemlerin ardından saldırgan, hissesini satmak için sellShares'i arayarak 266.102,97278 AVAX elde etti.
SellShares işlevinin derinliklerine inersek, işlev ilk olarak 0x1a9b yöntemini çağırdı ve önceki 0x2058 yönteminde, belirli tokenların satın alınmasını veya takasını işleyen bir işlev olan bir çağrı vardı. 0x1a9b yöntemindeki 0x2329 yönteminin sahibi_9f'yi güncelleyeceğini bulabiliriz [g0] ve bu parametre, yeniden giriş sırasında saldırgan tarafından oluşturulan 91000000000 olarak değiştirildi.
0x1a9b yöntemine dönün ve önceden kötü amaçlı olarak oluşturulan değere göre yeniden hesaplama yapın (hesaplama tutarı için yorumlara bakın).
Yukarıdaki hesaplama sonrasında yeni hesaplanan paya karşılık gelen fiyat değişmiş olup hesaplanan sonuç 274.333.061476814e18 olmuştur. Bir dizi ücret tahsilatının ardından saldırgan, hisseleri değiştirmeden fiyatı manipüle etmek için kötü niyetli bir yapı kullandı, hisseleri sattı ve başarılı bir şekilde kar elde etti.
Özetle
Bu saldırının temelinde, yeniden giriş saldırısının neden olduğu fiyat hesaplama bağımlılığı güncellemesi yatıyor ve bu da benzer kötü niyetli fiyat manipülasyonlarına yol açıyor. SlowMist güvenlik ekibi, proje tarafının sözleşmeyi dağıtmadan ve yayınlamadan önce birden fazla güvenlik şirketi tarafından denetimlere tabi tutulması için elinden gelenin en iyisini yapmasını tavsiye ediyor; aynı zamanda kodlama sırasında Checks-Effects-Etkileşimler kodlama spesifikasyonunun mümkün olduğunca karşılanması gerekiyor, ve yeniden girişi önleyici kilitler eklenmelidir.