08 Kasım 2022'de, Sushi'nin resmi KashiPairMediumRiskV1 sözleşmesi üzerine (veya ondan fork edilen bazı sözleşmeler) kurulu havuzlardan bazı saldırıların başarıyla varlık çektiğini tespit ettik. Yaptığımız araştırma sonucunda, temel nedenin token fiyatlarının yanlış hesaplanmasına yol açan bir mantık hatasından kaynaklandığını bulduk.
Derhal Sushi'nin güvenlik ekibiyle iletişime geçtik ve bulgularımızı doğruladılar. Sevindirici olan, değerli ancak savunmasız bazı havuzları saldırılardan korumak için harekete geçmiş olmalarıydı. Bunun yanı sıra, açıktan fon kaybedenleri tazmin etmek için prosedürler de sağladılar. Bu nedenle, güvenlik açığı ve saldırılara ilişkin ayrıntıları açıklamanın artık güvenli olduğuna inanıyoruz. Bu raporda ayrıntılı bir analiz sunmak istiyoruz.
Güvenlik Açığı Analizi
KashiPairMediumRiskV1 sözleşmesinin kaynak kodunu inceledikten sonra, bu hatanın borrow fonksiyonunda yer aldığı sonucuna vardık. Bu fonksiyon, solvent değiştiricisindeki borç payını doğrulamak için güncel olmayan exchangeRate değerini kullanmaktadır. Özellikle, doğrulama işlemi _isSolvent fonksiyonundaki exchangeRate'in mevcut değerine göre gerçekleştirilecektir.


liquidate fonksiyonunda ise updateExchangeRate fonksiyonu en başta çağrılmaktadır. Dolayısıyla doğrulama ve hesaplama işlemleri güncellenmiş değere göre gerçekleştirilecektir.


Açıkça görülmektedir ki bu hata, (büyük) bir fiyat farkına yol açmak için istismar edilebilir.
Saldırı Analizi
İki saldırı gözlemledik:
- 0xcf8f242ea83100b6d43e659f7f53a698d304fc6ac2ca6fe79e3e07ee05fefe58: Kurban KashiPairMediumRiskV1 sözleşmesini kullanmaktadır ve kayıp yaklaşık 9.466 USDC'dir.
- 0x3d163bfbec5686d428a6d43e45e2626a220cc4fcfac7620c620b82c1f2537c78: Kurban, CauldronMediumRiskV1 (KashiPairMediumRiskV1'in fork'u) kullanan bir strateji sözleşmesidir ve kayıp yaklaşık 110.911 MIM'dir.
Birinci saldırı işleminin, orijinal saldırı işlemini öne geçen bir bot tarafından başlatıldığını unutmayın: 0x7a845d8d2af7919f5b9e22dd5571305cb5347d17986a8402715c1463d515fc18, orijinal saldırgan adresi 0xb7ea0f0f8c6df7a61bf024db21bbe85ac5688005'tir.
Aşağıdaki adımlardan oluşan ilk saldırı işlemini örnek olarak alıyoruz:
Balancer'dan 40.900 BADGER ve 121.904 USDC tutarında bir flaş kredi almak.BentoBox'a 40.900 BADGER ve 113.599 USDC yatırmak.- 40.900.000.000.000.000.000.000 adet BADGER payı yatırmak için kmBADGER/USDC-LINK'in
addCollateralfonksiyonunu çağırmak. - 112.529.000.000 adet USDC payı yatırmak için kmBADGER/USDC-LINK'in
addAssetfonksiyonunu çağırmak. - 120.755.095.093 adet USDC payı ödünç almak için
borrowfonksiyonunu çağırmak. UpdateExchangeRatefonksiyonunu çağırmak.- Kendini tasfiye etmek için
liquidatefonksiyonunu çağırmak. BentoBox'tan 40.899 BADGER ve 123.006 USDC çekmek.- Flaş krediyi geri ödemek ve yaklaşık 9.466 USDC kâr elde etmek.
- adımın zorunlu olmadığını unutmayın, çünkü
borrowfonksiyonuUpdateExchangeRatefonksiyonunu zaten çağırmaktadır.
Temel adımlar şu şekildedir:
borrow fonksiyonunda kullanılan exchangeRate değerinin liquidate fonksiyonunda kullanılan değerden saptığını anlamak güç değildir:
borrowfonksiyonunda: 250.997.938.545.109.237.740.214.705.193liquidatefonksiyonunda: 328.266.883.541.864.569.505.752.156.794
Etki
Bu hatadan etkilenebilecek düzinelerce havuz (hem Ethereum hem de BSC üzerinde) bulunmaktadır. Bu sorunu hafifletmek için geçici bir yöntem, UpdateExchangeRate fonksiyonunu zaman zaman (veya periyodik olarak) çağırarak sapmayı azaltmak veya ortadan kaldırmaktır. Bu yöntem, etkilenen birçok proje tarafından zaten benimsenmiştir ve ilgili işlemler zincir üzerinde gözlemlenebilmektedir.
Çıkarımlar
Bir DeFi projesini güvenli kılmak kolay bir iş değildir. Kod denetiminin yanı sıra, topluluğun proje durumunu izlemek için proaktif bir yöntem benimsemesi ve saldırı gerçekleşmeden önce engellenmesi gerektiğini düşünüyoruz.
BlockSec Hakkında
BlockSec, 2021 yılında dünya genelinde tanınan güvenlik uzmanlarından oluşan bir ekip tarafından kurulmuş öncü bir blok zinciri güvenlik şirketidir. Şirket, kitlesel benimsemeyi kolaylaştırmak amacıyla gelişmekte olan Web3 dünyasının güvenliğini ve kullanılabilirliğini artırmaya kendini adamıştır. Bu doğrultuda BlockSec; akıllı sözleşme ve EVM zinciri güvenlik denetim 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 web3 geliştiricilerinin verimli gezinmesi için MetaDock uzantısı sunmaktadır.
Bugüne kadar şirket; MetaMask, Uniswap Foundation, Compound, Forta ve PancakeSwap gibi 300'den fazla saygın müşteriye hizmet vermiş ve Matrix Partners, Vitalbridge Capital ile Fenbushi Capital gibi önde gelen yatırımcılardan iki finansman turunda on milyonlarca ABD doları almıştır.
Resmi web sitesi: https://blocksec.com/
Resmi Twitter hesabı: https://twitter.com/BlockSecTeam



