Back to Blog

Seal Finance'da Güvenlik İhlali

Code Auditing
3 Ocak 2021
4 min read

30 Kasım'da güvenlik olay izleme sistemimiz ThunderForecast, Ethereum üzerindeki geçmiş işlemleri tarayarak Loopring protokolüne yönelik bir saldırı keşfetti (Blog: EN, CN). Sonuç olarak, bu saldırının temel nedeni sellTokenForLRC fonksiyonundaki erişim kontrolü eksikliğidir. Saldırgan, o anki fiyata göre 48.849,2 USD'ye karşılık gelen 80,97 ETH'yi ele geçirdi.

11 Aralık 2020'de izleme sistemimiz ThunderForecast, anormal işlem oranlarıyla gerçekleştirilen bir dizi işlem tespit etti. Ardından, araştırma ekibimiz tarafından geliştirilen EthScope sistemini kullanarak bu işlemleri analiz ettik ve bunun arbitraj amacıyla Seal Finance Protokolü'ndeki bir güvenlik açığından yararlanan bir saldırı olduğunu keşfettik.

Seal Nedir?

Seal teknik raporunda şu ifadeye yer verilmektedir: "SEAL - Büyük DeFi protokol token'ları arasında aracı olarak hizmet veren, aralarında daha derin likidite yaratan deneysel bir protokol". Şu ana kadar, Seal'i diğer farklı tanınmış token'larla (UNI, YFI, USDT, SNX vb.) birbirine bağlayan 10'dan fazla likidite havuzu mevcuttur. Bonus kazanmak için yatırımcının LP token'larını SEAL ödül sözleşmesine yatırması ve yeni SEAL token'ları üretmek için Farm sözleşmesindeki breed() fonksiyonunu tetiklemesi gerekmektedir. Farm sözleşmesi her Seal havuzunda dağıtılmıştır ve sözleşmedeki breed() fonksiyonu yeni Seal token'ları ihraç etmek için kullanılır. breed() fonksiyonunun ayarına göre, ek olarak Seal Token'ın %1,6'sı ihraç edilmektedir. Bunun yanı sıra, ihraç edilen Seal token'larının %0,8'i başka bir token ile değiştirilerek, ihraç edilen Seal token'larının diğer %0,8'i ile birlikte havuza likidite olarak yatırılmaktadır. Ancak breed() fonksiyonu için herhangi bir erişim kontrolü tasarlanmadığından, herkes bu fonksiyonu tetikleyebilmekte ve bu ilkel tasarım, bildirilen saldırının temel nedeni haline gelmektedir.

Aşağıda breed() fonksiyonunun doğrulanmış kaynak kodu yer almaktadır:

function breed() external {
	require(now / 1 days > today);
	today += 1;
 
	uint256 sealPairAmount = seal.balanceOf(address(cSeal));
	uint256 tokenPairAmount = token.balanceOf(address(cSeal));
	uint256 newSeal = sealPairAmount.mul(spawnRate).div(1e18);
	uint256 amount = UniswapV2Library.getAmountOut(newSeal, sealPairAmount, tokenPairAmount);
 
	seal.mint(address(cSeal), newSeal);
	if(address(seal) < address(token))
    	cSeal.swap(0, amount, address(this), "");
	else
    	cSeal.swap(amount, 0, address(this), "");
	token.transfer(address(cSeal), amount);
	seal.mint(address(cSeal), newSeal);
	cSeal.mint(address(this));
}

Ayrıntılar

Şimdi bu saldırının daha fazla ayrıntısını bir saldırı işlemi üzerinden açıklamaya başlıyoruz. Bu işlemde saldırgan, kârını en üst düzeye çıkarmak için saldırı mantığını 10 Seal havuzunda tekrarlıyor. Aşağıdaki analizde, Seal-SNX havuzunda başlatılan saldırıya odaklanıyoruz.

Üç adım söz konusudur:

  • Adım 1: Seal-SNX havuzunda 1.084 Seal'i 2.787 SNX ile takas et. İşlem oranı şöyledir: 1 Seal = 2,57 SNX.
  • Adım 2: Farm sözleşmesindeki breed() fonksiyonunu tetikle. Bu fonksiyon 13,08 Seal ihraç eder ve bunu 10,20 SNX ile takas eder. İşlem oranı şu an şöyledir: 1 SNX = 0,78 Seal. Bunun nedeni, havuzdaki SNX'in büyük çoğunluğunun Seal ile takas edilmesi ve SNX ile Seal arasında miktar açısından büyük bir fark oluşturmasıdır. Ardından Uniswap'ın fiyat hesaplama algoritmasına göre SNX, havuzda son derece değerli hale gelir (fiyat 3 kattan fazla artar).
  • Adım 3: Seal-SNX havuzunda 2787 SNX'i 1100 Seal ile takas et. Takas işlemi SNX'in fiyatını daha da artırdığından, saldırgan daha fazla Seal token'ı arbitraj eder (ekstra 16 Seal).

Kaybı daha da ölçmek ve doğrulamak için, EthScope sistemimizi kullanarak saldırıdan önceki blok durumu altında breed() fonksiyonunu yeniden oynadık. Sonuç olarak, Farm normal çağrıya kıyasla 18 ek Seal token'ı ihraç etti. Saldırgan 16 Seal'i ele geçirdi ve havuzda yalnızca 2 Seal kaldı.

Kazanç ve Kayıp

Bu işlemde saldırgan toplam 175 Seal kazandı.

Saldırının Boyutu

13 Aralık 2020'ye kadar zincir üzerinde 3 kötü amaçlı sözleşme (0x49f93e, 0x8b3710, 0x0f20b6) dağıtılmış ve 4.247 Seal token'ı ele geçirmek için 22 işlem başarıyla başlatılmıştır. O anki fiyata göre saldırgan, Seal protokolünün güvenlik açığından yararlanarak yaklaşık 58.467 USD kazandı. Belirtmek gerekir ki Seal protokolünün güvenlik açığı hâlâ saldırı altındadır!!!

Ayrıca, ele geçirilen Seal token'larının akışını analiz ederek yaklaşık 900 Seal token'ının DEX'e yatırıldığını ve geri kalanının 6 farklı adrese dağıtıldığını keşfettik. Aşağıdaki şekilde görüldüğü üzere, bu adresler Seal Finance ve Uniswap V2'deki likidite havuzu dışındaki en büyük Seal token sahiplerinin tamamıdır.

Son

Ethereum'daki DeFi ekosisteminin gelişimiyle birlikte çeşitli güvenlik sorunları giderek ortaya çıkmaktadır. Aslında saldırının arkasındaki temel neden olan erişim kontrolü, 13 Aralık 2020'ye kadar 22 işlem başlatılarak Seal'de ciddi bir kayba (58.467 USD) yol açtı.

Güncelleme (2021/01/04)

11/30 2020'deki ilk saldırının ardından saldırgan üçüncü bir saldırı sözleşmesi dağıttı ve beş saldırı başlattı. Son saldırı 12/24 2020 tarihinde gerçekleşti ve elde edilen Seal token'ları bu adrese aktarıldı. Bu süreçte saldırgan 6.021 Seal Token'ı elde etti.

Zaman Çizelgesi:

  • 2020/12/11: Şüpheli işlemler tespit edildi
  • 2020/12/12: Analiz tamamlandı
  • 2020/12/13: Seal Finance'e bildirildi
  • 2021/01/03: Ayrıntılar yayımlandı
  • 2021/01/03: CVE-2021–3006 atandı

BlockSec Hakkında

BlockSec, 2021 yılında küresel çapta tanınmış bir grup güvenlik uzmanı tarafından kurulan öncü bir blokzincir güvenlik şirketidir. Şirket, kitlesel benimsemeyi kolaylaştırmak amacıyla gelişmekte olan Web3 dünyası için güvenliği ve kullanılabilirliği artırmaya kendini adamıştır. Bu doğrultuda BlockSec; akıllı sözleşme ve EVM zinciri güvenlik denetimi hizmetleri, güvenli geliştirme ve tehditleri proaktif olarak engelleme için Phalcon platformu, fon takibi ve soruşturma için MetaSleuth platformu ve kripto dünyasında verimli şekilde gezinen web3 geliştiricileri için MetaSuites eklentisi sunmaktadır.

Bugüne kadar şirket, MetaMask, Uniswap Foundation, Compound, Forta ve PancakeSwap gibi 300'den fazla saygın müşteriye hizmet vermiş; Matrix Partners, Vitalbridge Capital ve Fenbushi Capital gibi önde gelen yatırımcılardan iki finansman turunda onlarca milyon ABD doları almıştır.

Resmi web sitesi: https://blocksec.com/

Resmi Twitter hesabı: https://twitter.com/BlockSecTeam

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