Back to Blog

Vee Finance Güvenlik Olayının Gerçek Temel Nedeni

Code Auditing
September 22, 2021
3 min read

VEE Finance, son güvenlik olayıyla ilgili bir rapor yayımladı. Raporda, temel nedenin "Vee Finance oracle makinesinin fiyatının manipüle edilmesi ve oracle makine fiyatının alınmasının ondalıklar için işlenmemesi, bu nedenle takas öncesinde beklenen kayma kontrolünün çalışmaması" olduğunu belirtiyorlar.

"Olayın temel nedeni, kaldıraçlı işlem için emir oluşturma sürecinde, oracle tarafından yalnızca Pangolin havuzunun fiyatının fiyat akışı kaynağı olarak kullanılması ve havuz fiyatının %3'ten fazla dalgalanmasıydı. Oracle fiyatı yeniledi ve bu durum saldırganın Pangolin havuzunun fiyatını manipüle etmesine neden oldu. Vee Finance oracle makinesinin fiyatının manipüle edilmesi ve oracle makine fiyatının alınması ondalıklar için işlenmedi, bu da takasdan önce beklenen kayma kontrolünün çalışmamasına yol açtı."VEE Finance tarafından yayımlanan rapordan alıntı.

Ancak dikkatli incelememizin ardından bunun DOĞRU OLMAYABILECEĞINI tespit ettik. Gerçek neden şudur: saldırgan SAHTE bir ctokenB oluşturarak bunu sözleşmeye geçirir. ctokenB saldırgan tarafından kontrol edildiğinden, token fiyatını hesaplamak için kullanılan rastgele bir temel token döndürebilir. Bu, saldırının gerçek kök nedenidir.

Sürecin Tamamı

createOrderERC20ToERC20 adlı harici bir fonksiyon, herhangi bir kullanıcı tarafından, teminatı sözleşmeye koyarak elde edilen ctoken'ı kullanarak bir token takası oluşturmak amacıyla çağrılabilir. ctoken'ın, gerçek token'ı temsil eden bir temel token'ı vardır.

Normal bir durumda, kaldıraç kullanarak bir token çifti işlemi gerçekleştirmek amacıyla createOrderERC20ToERC20 çağrıldığında, dapp'in işlemin herhangi bir kayba yol açmayacağından emin olması gerekir (aksi takdirde dapp para kaybeder). Bu durum, getAmountOutMin fonksiyonu çağrılarak zorunlu kılınır.

Diyelim ki dapp'e 0.95 ETH koyduk ve 0.5 ETH değerinde bir ctoken elde ettik (Aşırı teminatlandırma). Ardından, kullanıcı adına dapp'ten 1.5 ETH karşılığında başka bir token (örneğin tokenX) işlemi yapmasını istemek için 3 kat kaldıraç kullanabiliriz. Bu durumda, kaybı önlemek için dapp'in işlem gören tokenX değerinin 0.95* 1.5ETH'nin altına düşmemesini sağlaması gerekir (aksi takdirde dapp para kaybetme riskiyle karşı karşıya kalır). Dapp, ETH ve tokenX değerini hesaplamak için harici bir fiyat oracle'ından yararlanır.

Ancak createOrderERC20ToERC20 fonksiyonu, iletilen ctokenB'yi doğrulamaz. Bu nedenle saldırgan, kendi sözleşmesini ctokenB olarak uygulayabilir ve createOrderERC20ToERC20 fonksiyonuna besleyebilir. Sonuç olarak, bu sahte ctokenB, createOrderERC20ToERC20 ve getAmountOutMin içinde çağrıldığında temel token'ı LINK (0x5947bb275c521040051d82396192181b413227a3) olarak döndürebilir; ancak IPriceOracle(oracle).getUnderlyingPrice(createParams.ctokenB) içinde çağrıldığında temel token'ı BTC olarak döndürebilir. Böylece isRightPrice kontrolünü atlayabilir — zira fiyatı hesaplamak için kullanılan token BTC'dir (LINK değil). Bu durum, priceB'nin döndürülen değeriyle doğrulanabilir — 0x15e1549d1216fe9fc032e7c00000 (443783124870000000000000000000000). Bu, BTC'nin fiyatıdır.

Sonuç

Özetle, saldırgan ctokenB'nin eksik doğrulamasından yararlanır. ctokenB güvenilir bir kaynak olmadığından, ctokenB tarafından döndürülen temel token'a güvenilemez. Ancak fiyat oracle'ı bu saldırıda ele geçirilmemiştir.

Çı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 küresel alanda tanınan bir grup güvenlik uzmanı tarafından kurulmuş öncü bir blok zinciri güvenlik şirketidir. Şirket, kitlesel benimsenmesini kolaylaştırmak amacıyla gelişmekte olan Web3 dünyasının güvenliğini ve kullanılabilirliğini artırmayı taahhüt etmektedir. Bu doğrultuda BlockSec; akıllı sözleşme ve EVM zinciri güvenlik denetimi hizmetleri, güvenli geliştirme ve tehditleri proaktif olarak engellemeye yönelik Phalcon platformu, fon takibi ve soruşturma için MetaSleuth platformu ve kripto dünyasında verimli gezinen web3 geliştiricileri için MetaSuites eklentisini 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 tur finansmanda onlarca milyon ABD doları almıştır.

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

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

Best Security Auditor for Web3

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

BlockSec Audit