Back to Blog

"SafeMint" Güvensiz Hale Geldiğinde: HypeBears Güvenlik Olayından Çıkarılan Dersler

Code Auditing
3 Şubat 2022
2 min read

3 Şubat sabahı (+8 saat dilimi), sistemimiz HypeBears NFT sözleşmesine yönelik bir saldırı işlemi tespit etti: 0xfa97c3476aa8aeac662dae0cc3f0d3da48472ff4e7c55d0e305901ec37a2f704. Yaptığımız araştırma sonucunda bunun ERC721'in _safeMint fonksiyonundan kaynaklanan bir yeniden giriş (re-entrancy) saldırısı olduğu anlaşıldı.

Temel Neden

Proje, bir hesabın basabileceği NFT sayısına bir sınırlama getirmiştir. Temel olarak, bir hesabın NFT basıp basmadığını kaydeden addressMinted adlı bir eşleme (map) bulunmaktadır.

NFT basılırken, kod OZ referans uygulamasının _safeMint fonksiyonunu kullanmaktadır. Bu fonksiyon güvenli (safe) olarak nitelendirilir; çünkü alıcının ERC721 token'larını alıp alamayacağını kontrol eder. Bu, bir NFT'nin ERC721 token'larını işleyemeyen bir sözleşmeye basılması durumunu önleyebilir. Belgeye göre:

Eğer to bir akıllı sözleşmeye atıfta bulunuyorsa, güvenli bir transfer sırasında çağrılan IERC721Receiver.onERC721Received fonksiyonunu uygulaması gerekir. Aşağıdaki kod, _safeMint fonksiyonunun OZ uygulamasını göstermektedir.

Ancak bu harici fonksiyon çağrısı bir güvenlik açığı oluşturmaktadır. Özellikle, saldırgan onERC721Received geri çağrımı (callback) içinde yeniden giriş çağrısı gerçekleştirebilir. Örneğin, güvenlik açığı bulunan HypeBears sözleşmesinde, saldırgan onERC721Received geri çağrımı içinde mintNFT fonksiyonunu tekrar çağırabilir (çünkü addressMinted henüz güncellenmemiştir).

Saldırı

Aşağıdaki ekran görüntüsü saldırı işlemini göstermektedir.

Dersler

SafeMint tarafından oluşturulan risk, güvenlik araştırmacıları tarafından daha önce ele alınmıştır: bağlantı1 bağlantı2. Bununla birlikte, savunmasız kodları ve gerçek dünyadaki saldırıları görmeye devam ediyoruz. QBridge güvenlik olayındaki safeTransfer örneğinde gösterildiği gibi, güvenli bir fonksiyon kullanmak güvenli bir sözleşmeyi garanti etmez 😃.

Sign up for the latest updates
Yaklaşık 5,57 milyon USD Kayıp: X100 Freezer ve NEM İstismarları | BlockSec Haftalık Bülteni
Security Insights

Yaklaşık 5,57 milyon USD Kayıp: X100 Freezer ve NEM İstismarları | BlockSec Haftalık Bülteni

Bu haftalık rapor, 19.10.2026–25.10.2026 tarihleri arasında Ethereum ve BNB Chain'de yaşanan iki güvenlik olayını ele alıyor. X100 Freezer'ın flaş krediyle finanse edilen yönetişim kontrolünün ele geçirilmesini ve BNB Chain'deki bir NEM tokeninin likidite havuzunu etkileyen vergi hesaplaşması kusurunu inceliyor. Raporun kapsamındaki tahmini kayıplar toplam yaklaşık 5,57 milyon USD: temsili X100 işleminden ~4,75 milyon USD, NEM havuzu olayından ise ~820 bin USD. Bu toplama, ayrıca bildirilen sonraki X100 fon çıkışları dahil değil.

Yaklaşık 3,87 milyon USD kayıp: Autheo Network ve UNCX saldırıları | BlockSec Haftalık Bülteni
Security Insights

Yaklaşık 3,87 milyon USD kayıp: Autheo Network ve UNCX saldırıları | BlockSec Haftalık Bülteni

Bu haftalık rapor, 12.10.2026–18.10.2026 tarihleri arasındaki 3 güvenlik olayını ve toplamda yaklaşık 3,87 milyon USD tutarındaki tahmini kaybı ele alıyor. Autheo Network, yaklaşık 1,76 milyon USD tutarında kayba yol açan bir özel anahtar ele geçirilmesi olayı yaşadı; Qubic Wallet, zayıf seed oluşturma nedeniyle yaklaşık 1,30 milyon USD kaybetti. UNCX Network’ün Smart Token Vesting V2 sözleşmelerinde ise Ethereum, BNB Chain, Base ve Robinhood Chain üzerinde yaklaşık 807 bin USD tutarında bir muhasebe hatası meydana geldi. Öne çıkarılan UNCX analizi, hatalı toplam pay hesaplamasının farklı token/pay oranlarıyla oluşturulan hak ediş dilimlerini nasıl birbirine karıştırdığını ve ortak havuzlardan hak edilenden fazla çekim yapılmasına nasıl olanak tanıdığını açıklıyor.

~542 bin dolar kayıp: MakerDaoBot Açığı | BlockSec Haftalık Bülteni
Security Insights

~542 bin dolar kayıp: MakerDaoBot Açığı | BlockSec Haftalık Bülteni

Ethereum'da 2026/10/05-2026/10/11 döneminde 1 güvenlik olayı yaşandı; kayıp yaklaşık 542 bin $. Kötü amaçlı adaptör, erişim kontrolü olmayan MakerDaoBot işleviyle botun MakerDAO bakiyelerinde yetki aldı; 4 eski ETH-A ihalesini kapatıp 200 ETH-A teminatını WETH'ye çevirdi. WETH, 200 ETH olarak saldırgana gönderildi.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit