در 26 ژوئن، چیبی فایننس، گردآورنده امور مالی غیرمتمرکز (DeFi) توسط حساب توسعه‌دهنده خود مورد سوء استفاده قرار گرفت و یک میلیون دلار ارز دیجیتال از قراردادهایش در یک کلاهبرداری ظاهری بیرون کشیده شد. رابط کاربری رسمی پروتکل ناپدید شد و خطای 404 ایجاد کرد و تمام رسانه های اجتماعی برنامه حذف شدند. پس از تخلیه وجوه، آنها با Wrapped Ether (WETH) مبادله شدند و به Ethereum متصل شدند و سپس توسط مهاجم به Tornado Cash فرستاده شدند.

قیمت توکن حاکمیتی چیبی فاینانس (CHIBI) با انتشار این خبر بیش از 90 درصد کاهش یافت.

چیبی فاینانس یک میلیون دلاری قالی‌کشی ادعایی: چگونه اتفاق افتاد
قیمت توکن CHIBI. منبع: CoinGecko.

اما “کشیدن فرش” نباید در DeFi امکان پذیر باشد. به هر حال، این برنامه ها، طبق تعریف، روی زیرساخت متمرکز اجرا نمی شوند. بنابراین خالق برنامه نباید بتواند با ارزهای دیجیتال یا پول نقد همه کار کند.

به همین دلیل، ممکن است تحلیل نحوه انجام کلاهبرداری ادعایی مفید باشد.

CertiK دارد تولید شده گزارش تفصیلی پس از بررسی حادثه هنگامی که این گزارش با داده های بلاک چین ترکیب می شود، می تواند چگونگی وقوع حمله و کارهایی که کاربران می توانند برای محافظت از خود در برابر حملات یا کلاهبرداری های مشابه در آینده انجام دهند، روشن کند.

برنامه Chibi Finance

قبل از اینکه رابط کاربری آفلاین شود، چیبی خود را به عنوان «محبوب‌ترین جمع‌آوری بازده در آربیتروم» توصیف کرد. ادعا می کرد که به کاربران اجازه می دهد از سراسر اکوسیستم Arbitrum بهره ببرند.

طبق CertiK، جمع‌آورنده DeFi از زمانی که در آوریل راه‌اندازی شد، در ارزش کل قفل شده (TVL) – اندازه‌گیری ارزش ارز دیجیتال موجود در قراردادهای یک برنامه – در حال رشد بوده است. در 21 ژوئن، چیبی اعلام کرد که 500000 دلار در TVL به دست آورده است. در آن زمان، تیم هدف خود را برای رسیدن به یک میلیون دلار اعلام کرد.

در 26 ژوئن، این اپلیکیشن برای اولین بار در فهرست CoinGecko قرار گرفت و در معرض دید بیشتری قرار گرفت. به نظر می رسد مدت کوتاهی پس از این رویداد، درست قبل از تخلیه توکن ها از قراردادهایش، به هدف 1 میلیون دلاری خود رسیده است. در نتیجه، سرمایه گذاران بیش از 1 میلیون دلار ارز دیجیتال را در این حمله یا کلاهبرداری از دست دادند.

قراردادهای چیبی فاینانس

این حمله از یک حفره در هشت قرارداد مختلف مورد استفاده در پروتکل Chibi Finance استفاده کرد. این قراردادها از پروژه های دیگر منعقد شد و منحصر به چیبی نبود. به عنوان مثال، یکی از آنها StrategyAave.sol در آدرس Arbitrum 0x45E8a9BA6Fcd612a30ae186F3Cc93d78Be3E7d8d بود که همچنین در چندین آدرس دیگر در Abitrum، Ethereum، BNB Smart Chain و سایر شبکه ها مستقر شده است.

مثال دیگر قرارداد StrategySushiSwap.sol در 0x9458Ea03af408cED1d919C8866a97FB35D06Aae0 است. این نیز چندین نسخه در Arbitrum و شبکه های دیگر دارد.

به نظر می‌رسد که این قراردادها معمولاً در برنامه‌های جمع‌آوری DeFi، نه فقط Chibi Finance، استفاده می‌شوند.

مربوط: تجمع DeFi: هموار کردن راه برای پذیرش انبوه

عملکرد پانیک

داده‌های بلاک چین نشان می‌دهد که برخی از قراردادهای مورد استفاده توسط چیبی فاینانس حاوی یک تابع «هراس» هستند که می‌توان از آن برای برداشت همه توکن‌ها از یک استخر و ارسال آن‌ها به یک آدرس خاص استفاده کرد. این تابع برای روش مهاجم ضروری بود. در اینجا توضیحی در مورد نحوه کار با StrategySushiSwap.sol به عنوان مثال آمده است:

خطوط 340-343 StrategySushiSwap.sol بیان می کند که اگر تابع panic() فراخوانی شود، تابع دومی به نام “emergencyWithdraw” را در قرارداد ISushiStake فراخوانی می کند.

تابع panic() در قرارداد StrategySushiSwap.sol. منبع: داده های بلاک چین

قرارداد ISushiStake به نوبه خود فقط یک رابط است. این شامل هیچ کد اجرایی نیست. در عوض، به قرارداد SushiSwap: MiniChefV2 در 0xF4d73326C13a4Fc5FD7A064217e12780e9Bd62c3 اشاره می کند.

آدرس MiniChefV2 است ذکر شده به عنوان یک قرارداد رسمی برای صرافی غیرمتمرکز، SushiSwap. بنابراین تابع “panic” تابع “EmergencyWithdraw” را در SushiSwap فراخوانی می کند.

در آدرس SushiSwap، تابع اضطراریWithdraw در خطوط 626-643 قابل مشاهده است.

عملکرد برداشت اضطراری SushiSwap MiniChefV2. منبع: داده های بلاک چین

این تابع به صاحب وجوه اجازه می دهد بدون دریافت پاداش برداشت کند. این ممکن است در مواقع اضطراری مفید باشد. به عنوان مثال، اگر کاربر نتواند پاداش دریافت کند، ممکن است بخواهد این تابع را فراخوانی کند.

عملکرد اضطراری Withdraw برای جلوگیری از استفاده توسط افراد غیرمجاز، ایمن است. در خط 360 آمده است: «UserInfo storage user = userInfo[pid][msg.sender]”، به این معنی که “کاربر” به عنوان فرستنده پیام تعریف می شود. در شرایط عادی، این به کاربر اجازه می‌دهد اضطراری وجوه خود را برداشت کند، اما وجوه متعلق به شخص دیگری را ندارد.

به نظر نمی رسد هیچ چیز مخربی در مورد این عملکرد در SushiSwap وجود داشته باشد. با این حال، اگر کاربر این تابع را مستقیماً از کیف پول خود فراخوانی نکند، ممکن است مشکلی ایجاد شود.

به عنوان مثال، زمانی که کاربر با استفاده از Chibi Finance وجوهی را واریز می‌کرد، ارز دیجیتال او توسط قرارداد StrategySushiSwap به SushiSwap ارسال می‌شد، نه مستقیماً توسط کاربر نهایی. این بدان معنی است که برنامه Chibi Finance هنگام تلاش برای برداشت اضطراری وجوه به عنوان “کاربر” شناخته می شود. این به نوبه خود به چیبی اجازه داد تا وجوه کاربران را از طرف کاربران برداشت کند.

مربوط: نحوه تشخیص کشش فرش در DeFi: 6 نکته از Cointelegraph

با این حال، تا زمانی که تابع پانیک فقط توسط کاربر نهایی فراخوانی شود، وجوه باید هنوز ایمن باشد.

متأسفانه، عملکرد پانیک این نیاز را ندارد. در عوض، آن را به سادگی در قرارداد Chibi Finance به عنوان یک عملکرد “onlyGov” فهرست کرده است، به این معنی که یک مدیر می تواند آن را فراخوانی کند، اما هیچ کس دیگری. مهاجم برای انجام حمله خود به این شکاف متکی بود.

حمله چیبی فایننس چگونه انجام شد

طبق گزارش CertiK، نام کاربری اتریوم Shadowout.eth 10 اتر (ETH) از Tornado Cash در 15 ژوئن. این وجوه به Arbitrum متصل شد و 0.2 ETH از این کاربر به آدرس 0x80c1ca8f002744a3b22ac5ba6ffc4dc0deda58e3 ارسال شد. این حساب دوم پس ایجاد شده یک قرارداد مخرب در 23 ژوئن در آدرس 0xb61222189b240be3da072898eda7db58b00fd6ee.

مهاجم در 23 ژوئن هشت بار تابع “افزودن استخر” را در این قرارداد مخرب فراخوانی کرد. از آنجایی که قرارداد تأیید نشده است، کد این تابع “افزودن استخر” ناشناخته است. با این حال، CertiK حدس می‌زند که هر یک از این تراکنش‌ها ممکن است یک قرارداد Chibi Finance را به فهرستی از داده‌های قرارداد مخرب برای مجموع هشت قرارداد در لیست اضافه کرده باشد.

در 27 ژوئن، حساب توسعه‌دهنده چیبی فایننس منتقل شده حقوق مدیریت هشت قرارداد Chibi Finance برای قرارداد مخرب. این کار را از طریق هشت تراکنش جداگانه انجام داد که هر یک تابع “setGov” را در یک قرارداد خاص فراخوانی می‌کرد.

حقوق مدیریت یکی از قراردادهای Chibi Finance در حال تغییر است. منبع: داده های بلاک چین.

پس از اینکه قرارداد مخرب این حقوق حاکمیتی را به دست آورد، سازنده آن عملکرد «اجرای» آن را نامید. این امر باعث شد تا در هر یک از هشت قرارداد “هراس” نامیده شود، که به نوبه خود “EmergencyWithdraw” را در استخرهای مرتبط در برنامه های DeFi مانند SushiSwap، Aave و Global Hectare نامید.

نتیجه این بود که تمام وجوهی که کاربران از طریق Chibi Finance به این استخرها واریز می کردند توسط مهاجم تخلیه شد و در نتیجه بیش از 1 میلیون دلار ضرر به سرمایه گذاران وارد شد.

چگونه می توان از کشیدن فرش به سبک چیبی جلوگیری کرد؟

با توجه به اینکه این حمله متکی به یک عملکرد “هراس” بود که به مدیر اجازه می داد تمام سرمایه کاربران را تخلیه کند، یکی از راه های جلوگیری از کشیدن فرش به سبک Chibi استفاده نکردن از برنامه هایی است که این عملکرد را دارند.

از سوی دیگر، اگر یک تجمیع کننده عملکرد «هراس» نداشته باشد، این خطر وجود دارد که وجوه کاربر ممکن است در صورت کشف یک اشکال یا سوء استفاده در برنامه جمع‌آوری کننده گیر کند. اگر کاربران تصمیم به استفاده از برنامه های جمع کننده به جای تعامل مستقیم با استخرهای زیرین داشته باشند، ممکن است بخواهند این مبادلات را در نظر بگیرند.

مربوط: بیش از 204 میلیون دلار در سه ماهه دوم هک و کلاهبرداری های DeFi از دست رفت: گزارش

کاربران DeFi ممکن است بخواهند در نظر داشته باشند که کد قرارداد هوشمند می‌تواند بسیار پیچیده باشد و ممکن است اکثر کاربران به تنهایی تشخیص ندهند که آیا یک برنامه نقص امنیتی دارد یا خیر. همانطور که CertiK در گزارش خود ادعا کرد:

“حادثه Chibi Finance خطرات مرتبط با تمرکز در فضای Web3 را نشان می دهد.[…]این یک انتظار غیرواقع بینانه برای سرمایه گذاران معمولی است که به سادگی با انجام تحقیقات خود، خطرات تمرکز را در پروژه هایی مانند Chibi Finance شناسایی و درک کنند.

CertiK بیان کرد، به همین دلیل، کاربران ممکن است بخواهند ممیزی های منتشر شده یک برنامه را قبل از استفاده از آن بررسی کنند.

چیبی فاینانس ادعا کرد که توسط شرکت امنیتی بلاک چین SolidProof حسابرسی شده است. محتوای ممیزی ادعایی دیگر در دسترس نیست، زیرا GitHub پروژه حذف شده است و هرگز توسط آرشیوهای اینترنتی ذخیره نشده است. Cointelegraph نتوانست تعیین کند که آیا خطرات ناشی از عملکرد “هراس” در گزارش حسابرسی افشا شده است یا حتی آیا حسابرسی انجام شده است.

Cointelegraph برای اظهار نظر با SolidProof تماس گرفته است اما پاسخی از سوی انتشارات دریافت نکرده است.

کلاهبرداری از فرش یا کلاهبرداری های خروج به یک مشکل رایج در فضای DeFi تبدیل شده است. در 1 ژوئن، شرکت امنیتی بلاک چین Beosin گزارش داد که بیش از 45 میلیون دلار است در ماه مه در اثر قالی‌کشی گم شد، پیشی گرفتن از اکسپلویت های معمولی DeFi. در ماه آوریل، پروتکل امور مالی Ordinals نیز ظاهر شد 1 میلیون دلار ناهموار از طریق یک تابع انتقال “safuToken”.