Integer Overflow Attack Nedir?
Integer Overflow Attack, bir programdaki sayı maksimum değerine ulaştığında ve tekrar başa sarmaya başladığında meydana gelir; bu, saldırganın bakiyeleri veya limitleri manipüle etmesine izin verir. Kripto alanında bu sarmalanma, “yeterli tokenın var mı?” gibi bir kontrolü, aslında cevap hayır iken evet hale çevirebilir. Eski bir otomobil kilometre sayacının 999999'dan 000000'a dönmesini, fakat iş para olduğunda düşünün.
“Modern derleyiciler bunu imkansız hale getirir.” Tam olarak değil. Birçok akıllı kontratlar hâlâ bazı noktalarda kontrolsüz aritmetik, özel matematik veya assembly kullanır; bu durum taşma hatalarını yeniden ortaya çıkarabilir.
Integer Overflow Attack nasıl çalışır
Bir token kontratını örnek alarak kısa bir adım adım açıklama:
- Adım 1: Kontrat, sabit boyutlu tamsayılarla bakiyeleri saklar ve miktarları ekleyen, çıkaran veya çarpan bir fonksiyona sahiptir.
- Adım 2: Saldırgan, bir sayıyı maksimumun ötesine iten girişler seçer; bu, değerin küçük veya sıfıra benzer bir değere sarma yapmasına neden olur.
- Adım 3: Bu sarma bir kontrole etki eder. Örnek: sarmadan sonra bakiye çok büyük görünür ya da transfer limiti çok küçük görünür, bu yüzden bir require geçer.
- Adım 4: Saldırgan hak etmediği tokenları mint eder, bir tavanı atlar veya taşıyamaması gereken fonları transfer eder.
- Adım 5: Kazançları ticaretler veya köprüler aracılığıyla el değiştirir ve kimse fark etmeden ayrılır.
Gerçek örnek: bazı ERC20 tokenlar bir keresinde toplu taşma hatası nedeniyle saldırganların aşırı miktarda token mint etmesine izin veriyordu, ardından bunları borsalara boşalttılar. Evet, bu oldu.
Integer Overflow Attack neden önemlidir
Token tutuyorsanız, uygulama geliştiriyorsanız veya DeFi'de işlem yapıyorsanız, bununla ilgilenmelisiniz. Bu sayılarla ilgili, ve sayılar kriptoda belirleyicidir.
- Fayda: Nasıl işlediğini bilmek kırmızı bayrakları erken görmenize ve paranızı korumanıza yardım eder.
- Bakış açısı: Aritmetik hatalar zamana bağlı değildir. Yeni zincirler ve araçlar ortaya çıksa da, matematik hataları hâlâ uzmanlar tarafından kötüye kullanılıyor.
- İlgi alanı: Bunu token arzı hesaplamalarında, ödül sistemlerinde, NFT sayıcılarında ve kullanıcı bakiyelerini yöneten popüler dApp'lerde göreceksiniz.
Solidity'de aritmetiği varsayılan olarak kontrollü tutun ve unchecked bloklarını küçük ve denetlenmiş tutun. Sadece olumlu yolları değil, uç değerleri deneyen fuzz testleri ekleyin.
Integer Overflow Attack'in Temel Özellikleri
Diğer hatalardan farkını oluşturanlar:
- Sarma: Sayılar, bir döngü sayacı gibi maksimumdan sıfıra geri sıçrar.
- Sessiz: Aritmetik kontrolsüzse yerel bir hata oluşmaz, bu yüzden hatalar meşru sonuçlar gibi görünür.
- Tetiklenebilir: Genellikle kullanıcı kontrollü girdiler tam olarak ne zaman olacağını zorlayabilir.
- Tekrarlanabilir: Bir kez bulunduğunda saldırganlar bunu betikleyebilir ve birçok hedefte çalıştırabilir.
Varyasyonlar
Karşılaşacağınız başlıca türler, aynı aile, farklı yollar:
- Underflow: Çıkarma sıfırın altına iner ve büyük bir değere sarar.
- Toplama: Bir bakiyeye veya arza ekleme maksimumu aşar ve küçük değerlere döner.
- Çarpma: Ödül çarpanları veya ölçekleme faktörleri değeri sınırların üzerine fırlatır.
- Sayaç: Token ID veya arz sayaçları döner ve mintlemeye sınırın ötesinde devam etme izni verir.
Integer Overflow Attack sadece Solidity'ye özgü değil. Vyper, Rust, Move veya özel assembly'de de ortaya çıkabilir ve birçok duyurulmuş istismar bakiyeler veya arzlar etrafındaki kontrolsüz matematiğe indirgeniyordu.
Örnek
Bir ödül fonksiyonu kullanıcı tarafından verilen bir sayıyı büyük bir bonusla çarpar, değer sarılır, tavan kontrolü geçer ve Integer Overflow Attack saldırgana amaçlanandan çok daha fazla token mint etme imkanı verir.
Eğlenceli Bilgi
Seviye 256 kill screen'ine sahip atari klasiği mi? O meşhur donma bir tamsayı taşmasından kaynaklandı; bu, eski oyunların bile kazara kripto hatalarına benzer durumları gösterebileceğini kanıtlıyor.
Özet
Integer Overflow Attack'i sayıların bir tur atıp hırsızların aradan koşması gibi düşünün; aritmetiği kontrollü tutun ve daha rahat uyursunuz.
