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:
Farmsözleşmesindekibreed()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



