Back to Blog

Paraluni Saldırısının Hızlı Analizi: Her Token Güvenilir Değildir

Code Auditing
March 13, 2022
3 min read

Paraluni projesi 13 Mart sabahı (UTC +8 saati) saldırıya uğradı. Saldırgan, protokolü saldırmak için iki güvenlik açığından yararlandı. Birinci güvenlik açığı, iletilen token'ların doğrulanmaması; ikincisi ise geleneksel yeniden giriş (reentrancy) sorunudur. Saldırgan birkaç saldırı işlemi başlattı. Aşağıda, tüm saldırı sürecini açıklamak için bu işlemlerden biri olan 0xf2bba649019ce40a67f0fb74e5e800257d359d9094b6ba6faea14ffa4d3446b1 kullanılacaktır.

Adım I: paraRouter'a likidite ekleme

Saldırgan, BTCB-WBNB havuzuna (index = 9) likidite eklemek için addLiquidity fonksiyonunu çağırdı ve havuz, lp token'ını saldırgan tarafından oluşturulan bir token olan UBT'ye basacak. Bu işlemin ardından UBT token'ı, havuzun lp token'ını elinde bulundurmaktadır. BTCB ve WBNB'nin flash loan'dan ödünç alındığını unutmayın.

Adım II: MasterChef'in depositByAddLiquidity fonksiyonunu çağırma Saldırgan, _pid değeri olarak 9'u sağlayarak ve parametre olarak UGT ile UBT token'larını kullanarak depositByAddLiquidity fonksiyonunu çağırdı. Ancak fonksiyon, havuzun rezerv token'larının iletilen token'larla (UGT ve UBT) eşit olup olmadığını kontrol etmemektedir.

Ardından fonksiyon, paraRouter'ın addLiquidity fonksiyonunu çağıran depositByAddLiquidityInternal'ı çağırır. Bu fonksiyon, UGT ve UBT token'larının transferFrom fonksiyonunu çağıracaktır. Ancak bu iki token saldırgan tarafından kontrol edilmektedir. UBT'nin transferFrom fonksiyonunda saldırgan, birinci adımda elde edilen LP token'ını MasterChef sözleşmesine yatırmak için MasterChef sözleşmesinin deposit fonksiyonunu çağırdı.

Ne yazık ki, deposit fonksiyonundaki bakiye değişimi nedeniyle addLiquidity sonrasındaki newBalance, oldBalance'dan çok daha büyük oldu. Bu sayede saldırgan, MasterChef sözleşmesinde çift kredi elde etti.

Adım III: kâr elde etme

Saldırgan, son olarak BTCB ve WBNB almak için lp token'ını çöpe çevirmek üzere UBT.withdrawAsset ve MasterChef.withdraw fonksiyonlarını çağırdı. Likidite miktarı saldırganın sahip olması gerekenden fazla olduğundan saldırgan kâr elde edecektir.

Dersler

Yeniden giriş sorununa ek olarak, iletilen token'ların doğrulanmamış olması temel nedenlerden biridir. Visor vakası ve Coin98 vakasında olduğu gibi, benzer sorunların yaşandığı başka vakalara da tanık olduk.

BlockSec Hakkında

BlockSec, 2021 yılında dünya genelinde tanınan bir grup güvenlik uzmanı tarafından kurulan öncü bir blokzincir 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ırmaya kararlıdır. Bu doğrultuda BlockSec; akıllı sözleşme ve EVM zinciri güvenlik denetimi hizmetleri, güvenlik 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 web3 geliştiricilerinin verimli gezinmesi 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 tur finansmanda on milyonlarca 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