Poolz, aritmetik taşma saldırısına uğradı, yaklaşık 66.5 bin dolar zarar etti.
Son günlerde, birçok blok zinciri ağında ciddi bir güvenlik olayı meydana geldi. Blok zinciri veri izleme verilerine göre, 15 Mart sabahı Ethereum, BNB Akıllı Zincir ve Polygon ağlarındaki Poolz projesi siber saldırıya uğradı ve çok sayıda token çalındı.
Bu saldırı, MEE, ESNC, DON, ASW, KMON, POOLZ gibi çeşitli tokenleri içermektedir. Çalınan tokenlerin toplam değeri yaklaşık 665,000 dolardır. Şu anda, saldırganlar çalınan tokenlerin bir kısmını BNB'ye çevirmişlerdir, ancak henüz fonları saldırı adresinden transfer etmemişlerdir.
Analizler, bu saldırının esas olarak Poolz akıllı sözleşmesindeki bir aritmetik taşma açığını kullandığını göstermektedir. Saldırgan, CreateMassPools fonksiyonunu çağırarak, token sayısı hesaplamasını ustaca manipüle etmiş ve çok az sayıda token ile büyük miktarda token elde etme amacına ulaşmıştır.
Özellikle, saldırganlar öncelikle belirli bir merkeziyetsiz borsa üzerinde az miktarda MNZ tokeni değiştirdiler. Ardından, saldırganlar CreateMassPools fonksiyonunu çağırarak likidite havuzlarını toplu olarak oluşturdu. Bu fonksiyon, kullanıcıların havuzları toplu olarak oluşturup başlangıç likiditesini sağlamaları için kullanılmalıdır.
Sorun, getArraySum fonksiyonunda. Bu fonksiyon, kullanıcı tarafından sağlanan başlangıç likidite miktarını hesaplamaktan sorumludur. Saldırgan, iki büyük sayıyı içeren özel olarak yapılandırılmış bir dizi gönderdi. Bu iki sayı toplandığında, uint256 türünün sınırlamaları nedeniyle, tam sayı taşması meydana geldi ve sonuç 1'e dönüştü.
Ancak, sözleşme havuzun özelliklerini kaydederken, orijinal girdi büyük değerlerini kullanıyor. Bu, ciddi bir tutarsızlık oluşturuyor: Saldırgan aslında yalnızca 1 token transfer etti, ancak sözleşme devasa bir değer kaydetti. Sonunda, saldırgan withdraw fonksiyonunu çağırarak kolayca büyük bir token miktarını çekti ve tüm saldırı sürecini tamamladı.
Bu olay, akıllı sözleşmelerin güvenliğinin önemini bir kez daha vurguladı. Benzer sorunların önlenmesi için, geliştiricilere daha yeni sürümlerin Solidity programlama dilini kullanmaları önerilir, çünkü yeni sürümler derleme sırasında otomatik olarak taşma kontrolü yapar. Eski sürüm Solidity kullanan projeler için, tamsayı taşma sorununu çözmek amacıyla OpenZeppelin'in SafeMath kütüphanesinin kullanılmasının düşünülmesi önerilir.
Bu olay, görünüşte küçük bir programlama hatasının bile büyük ekonomik kayıplara yol açabileceğini hatırlatıyor. Blockchain projeleri, kullanıcı varlıklarının güvenliğini sağlamak için kod denetimi ve güvenlik testlerine daha fazla önem vermelidir.
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.
Poolz, aritmetik taşma saldırısına uğradı, çoklu zincir kaybı 66.5 bin dolar.
Poolz, aritmetik taşma saldırısına uğradı, yaklaşık 66.5 bin dolar zarar etti.
Son günlerde, birçok blok zinciri ağında ciddi bir güvenlik olayı meydana geldi. Blok zinciri veri izleme verilerine göre, 15 Mart sabahı Ethereum, BNB Akıllı Zincir ve Polygon ağlarındaki Poolz projesi siber saldırıya uğradı ve çok sayıda token çalındı.
Bu saldırı, MEE, ESNC, DON, ASW, KMON, POOLZ gibi çeşitli tokenleri içermektedir. Çalınan tokenlerin toplam değeri yaklaşık 665,000 dolardır. Şu anda, saldırganlar çalınan tokenlerin bir kısmını BNB'ye çevirmişlerdir, ancak henüz fonları saldırı adresinden transfer etmemişlerdir.
Analizler, bu saldırının esas olarak Poolz akıllı sözleşmesindeki bir aritmetik taşma açığını kullandığını göstermektedir. Saldırgan, CreateMassPools fonksiyonunu çağırarak, token sayısı hesaplamasını ustaca manipüle etmiş ve çok az sayıda token ile büyük miktarda token elde etme amacına ulaşmıştır.
Özellikle, saldırganlar öncelikle belirli bir merkeziyetsiz borsa üzerinde az miktarda MNZ tokeni değiştirdiler. Ardından, saldırganlar CreateMassPools fonksiyonunu çağırarak likidite havuzlarını toplu olarak oluşturdu. Bu fonksiyon, kullanıcıların havuzları toplu olarak oluşturup başlangıç likiditesini sağlamaları için kullanılmalıdır.
Sorun, getArraySum fonksiyonunda. Bu fonksiyon, kullanıcı tarafından sağlanan başlangıç likidite miktarını hesaplamaktan sorumludur. Saldırgan, iki büyük sayıyı içeren özel olarak yapılandırılmış bir dizi gönderdi. Bu iki sayı toplandığında, uint256 türünün sınırlamaları nedeniyle, tam sayı taşması meydana geldi ve sonuç 1'e dönüştü.
Ancak, sözleşme havuzun özelliklerini kaydederken, orijinal girdi büyük değerlerini kullanıyor. Bu, ciddi bir tutarsızlık oluşturuyor: Saldırgan aslında yalnızca 1 token transfer etti, ancak sözleşme devasa bir değer kaydetti. Sonunda, saldırgan withdraw fonksiyonunu çağırarak kolayca büyük bir token miktarını çekti ve tüm saldırı sürecini tamamladı.
Bu olay, akıllı sözleşmelerin güvenliğinin önemini bir kez daha vurguladı. Benzer sorunların önlenmesi için, geliştiricilere daha yeni sürümlerin Solidity programlama dilini kullanmaları önerilir, çünkü yeni sürümler derleme sırasında otomatik olarak taşma kontrolü yapar. Eski sürüm Solidity kullanan projeler için, tamsayı taşma sorununu çözmek amacıyla OpenZeppelin'in SafeMath kütüphanesinin kullanılmasının düşünülmesi önerilir.
Bu olay, görünüşte küçük bir programlama hatasının bile büyük ekonomik kayıplara yol açabileceğini hatırlatıyor. Blockchain projeleri, kullanıcı varlıklarının güvenliğini sağlamak için kod denetimi ve güvenlik testlerine daha fazla önem vermelidir.