Poolz projesi aritmetik taşma saldırısına uğradı, yaklaşık 66.5 bin dolar kayıp.
Son günlerde, çok zincirli proje Poolz'a yönelik bir güvenlik olayı sektörde dikkat çekti. Blockchain izleme verilerine göre, saldırganlar akıllı sözleşmelerdeki aritmetik taşma açığını kullanarak, Ethereum, BNB Chain ve Polygon ağlarındaki Poolz projesinden büyük miktarda token çalmayı başardılar; toplam değer yaklaşık 66.5 milyon dolar.
Saldırı, dünya koordinat zamanına göre 15 Mart 2023'te sabah 3:16 civarında gerçekleşti. Çalınan varlıklar arasında MEE, ESNC, DON, ASW, KMON, POOLZ gibi çeşitli ERC-20 tokenları bulunmaktadır. Saldırgan daha sonra bazı tokenları BNB'ye dönüştürdü, ancak şu anda bu fonlar henüz transfer edilmedi.
Bu saldırının temel sorunu, Poolz projesinin CreateMassPools fonksiyonunda yatmaktadır. Bu fonksiyon, likidite havuzlarını toplu olarak oluşturmak ve başlangıç likiditesi sağlamak için tasarlanmıştır, ancak içindeki getArraySum fonksiyonu bir tam sayı taşması açığına sahiptir. Saldırgan, özenle yapılandırılmış giriş parametreleri kullanarak, toplama sonucunun uint256'nın sınırlarını aşmasını sağlamış ve bu da fonksiyonun dönüş değerinin 1 olmasına neden olmuştur.
Ancak, CreatePool fonksiyonu havuz özelliklerini kaydederken, gerçek olarak yatırılan token miktarını değil, ham _StartAmount parametresini kullandı. Bu da, saldırganın yalnızca 1 token yatırarak, gerçek miktardan çok daha büyük bir başlangıç likiditesi kaydetmesine neden oldu. Ardından, saldırgan withdraw fonksiyonunu çağırarak para çekme işlemini tamamladı ve böylece saldırı amacına ulaştı.
Bu tür sorunların tekrar meydana gelmesini önlemek için, geliştiricilerin yerleşik taşma kontrolü işlevselliğinden yararlanmak amacıyla daha yeni bir Solidity sürümü kullanmaları önerilir. Daha eski Solidity sürümlerini kullanan projeler için, tam sayılardaki taşma sorununu çözmek amacıyla OpenZeppelin'in SafeMath kütüphanesinin dahil edilmesi düşünülebilir.
Bu olay, akıllı sözleşme geliştirmede güvenlik ve kod denetiminin öneminin göz ardı edilemeyeceğini bir kez daha hatırlatıyor. Görünüşte küçük bir aritmetik hatası bile, saldırganlar tarafından istismar edilerek büyük ekonomik kayıplara yol açabilir.
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.
10 Likes
Reward
10
5
Repost
Share
Comment
0/400
TrustMeBro
· 08-10 11:16
Haha, küçük bir para işte, bir sonraki.
View OriginalReply0
DeFiAlchemist
· 08-10 11:15
*mistik grafiklerini ayarlar* başka bir protokol karanlık aritmetiğe düşüyor... sayılar asla yalan söylemez
Poolz, aritmetik taşma saldırısına uğradı, 665.000 dolar kaybetti.
Poolz projesi aritmetik taşma saldırısına uğradı, yaklaşık 66.5 bin dolar kayıp.
Son günlerde, çok zincirli proje Poolz'a yönelik bir güvenlik olayı sektörde dikkat çekti. Blockchain izleme verilerine göre, saldırganlar akıllı sözleşmelerdeki aritmetik taşma açığını kullanarak, Ethereum, BNB Chain ve Polygon ağlarındaki Poolz projesinden büyük miktarda token çalmayı başardılar; toplam değer yaklaşık 66.5 milyon dolar.
Saldırı, dünya koordinat zamanına göre 15 Mart 2023'te sabah 3:16 civarında gerçekleşti. Çalınan varlıklar arasında MEE, ESNC, DON, ASW, KMON, POOLZ gibi çeşitli ERC-20 tokenları bulunmaktadır. Saldırgan daha sonra bazı tokenları BNB'ye dönüştürdü, ancak şu anda bu fonlar henüz transfer edilmedi.
Bu saldırının temel sorunu, Poolz projesinin CreateMassPools fonksiyonunda yatmaktadır. Bu fonksiyon, likidite havuzlarını toplu olarak oluşturmak ve başlangıç likiditesi sağlamak için tasarlanmıştır, ancak içindeki getArraySum fonksiyonu bir tam sayı taşması açığına sahiptir. Saldırgan, özenle yapılandırılmış giriş parametreleri kullanarak, toplama sonucunun uint256'nın sınırlarını aşmasını sağlamış ve bu da fonksiyonun dönüş değerinin 1 olmasına neden olmuştur.
Ancak, CreatePool fonksiyonu havuz özelliklerini kaydederken, gerçek olarak yatırılan token miktarını değil, ham _StartAmount parametresini kullandı. Bu da, saldırganın yalnızca 1 token yatırarak, gerçek miktardan çok daha büyük bir başlangıç likiditesi kaydetmesine neden oldu. Ardından, saldırgan withdraw fonksiyonunu çağırarak para çekme işlemini tamamladı ve böylece saldırı amacına ulaştı.
Bu tür sorunların tekrar meydana gelmesini önlemek için, geliştiricilerin yerleşik taşma kontrolü işlevselliğinden yararlanmak amacıyla daha yeni bir Solidity sürümü kullanmaları önerilir. Daha eski Solidity sürümlerini kullanan projeler için, tam sayılardaki taşma sorununu çözmek amacıyla OpenZeppelin'in SafeMath kütüphanesinin dahil edilmesi düşünülebilir.
Bu olay, akıllı sözleşme geliştirmede güvenlik ve kod denetiminin öneminin göz ardı edilemeyeceğini bir kez daha hatırlatıyor. Görünüşte küçük bir aritmetik hatası bile, saldırganlar tarafından istismar edilerek büyük ekonomik kayıplara yol açabilir.