تحلیل فنی: هک Balancer به ارزش ۱۲۰ میلیون دلار چگونه رخ داد و آسیبپذیری کجا بود؟
عنوان مقاله اصلی: "تحلیل فنی آسیبپذیری هک ۱۲۰ میلیون دلاری Balancer"
منبع اصلی: ExVul Security
مقدمه
در ۳ نوامبر ۲۰۲۵، پروتکل Balancer در چندین بلاکچین از جمله Arbitrum و Ethereum مورد حمله قرار گرفت که منجر به از دست رفتن ۱۲۰ میلیون دلار دارایی شد. این حمله عمدتاً به دلیل یک آسیبپذیری دوگانه شامل از دست رفتن دقت (precision loss) و دستکاری مقدار ثابت (Invariant) رخ داد.
زیرساخت Chainlink مدتهاست که بالاترین استانداردها را در فضای Web3 حفظ کرده است و آن را به انتخابی طبیعی برای X Layer تبدیل کرده است که به ارائه ابزارهای سطح سازمانی برای توسعهدهندگان اختصاص دارد.
مسئله اصلی در این حمله در منطق پروتکل برای مدیریت تراکنشهای کوچک نهفته است. هنگامی که کاربران با مبالغ کم مبادله انجام میدهند، پروتکل تابع _upscaleArray را فراخوانی میکند که از mulDown برای گرد کردن مقادیر به پایین استفاده میکند. هنگامی که موجودی در تراکنش و مقدار ورودی هر دو به یک مرز گرد کردن خاص (مثلاً محدوده ۸-۹ wei) میرسند، یک خطای دقت نسبی قابل توجه رخ میدهد.
این خطای دقت به محاسبه مقدار ثابت D پروتکل منتقل میشود و باعث کاهش غیرعادی در مقدار D میشود. نوسان مقدار D مستقیماً قیمت توکن استخر Balancer (BPT) را در پروتکل Balancer کاهش میدهد. هکر از این قیمت سرکوبشده BPT از طریق یک مسیر معاملاتی از پیش برنامهریزیشده برای انجام آربیتراژ بهرهبرداری کرد که در نهایت منجر به از دست رفتن عظیم دارایی شد.
تراکنش مورد بهرهبرداری:
https://etherscan.io/tx/0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742
تراکنش انتقال دارایی:
https://etherscan.io/tx/0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f517fa5959836f5b48569
تحلیل فنی
بردار حمله
نقطه ورود حمله، قرارداد Balancer: Vault بود و تابع ورودی مربوطه batchSwap بود که به صورت داخلی onSwap را برای مبادله توکن فراخوانی میکند.

از دیدگاه پارامترها و محدودیتهای تابع، میتوان اطلاعات زیر را به دست آورد:
۱. مهاجم باید این تابع را از طریق Vault فراخوانی کند و نمیتواند آن را مستقیماً فراخوانی کند.
۲. تابع به صورت داخلی _scalingFactors() را برای دریافت ضریب مقیاسبندی جهت عملیات مقیاسبندی فراخوانی میکند.
۳. عملیات مقیاسبندی یا در _swapGivenIn یا در _swapGivenOut متمرکز است.
تحلیل الگوی حمله
مکانیسم محاسبه قیمت BPT
در مدل استخر پایدار Balancer، قیمت BPT یک نقطه مرجع حیاتی است که تعیین میکند کاربر چقدر BPT دریافت میکند و هر BPT چقدر دارایی دریافت میکند.

در محاسبه مبادله استخر:

جایی که بخشی که به عنوان لنگر قیمت BPT عمل میکند، یک مقدار ثابت D است، به این معنی که کنترل قیمت BPT مستلزم کنترل D است. بیایید فرآیند محاسبه D را بیشتر تحلیل کنیم:

در کد بالا، فرآیند محاسبه D به آرایه موجودیهای مقیاسبندی شده بستگی دارد. این بدان معناست که عملیاتی برای تغییر دقت این موجودیها مورد نیاز است که منجر به محاسبه نادرست D میشود.
علت اصلی از دست رفتن دقت

عملیات مقیاسبندی:

همانطور که در بالا نشان داده شده است، هنگام عبور از _upscaleArray، اگر موجودی بسیار کم باشد (مثلاً ۸-۹ wei)، گرد کردن به پایین در mulDown منجر به از دست رفتن دقت قابل توجهی میشود.
جزئیات فرآیند حمله
فاز ۱: تنظیم به مرز گرد کردن

فاز ۲: تحریک از دست رفتن دقت (آسیبپذیری اصلی)

فاز ۳: بهرهبرداری از قیمت سرکوبشده BPT برای سود

در بالا، مهاجم از Batch Swap برای انجام چندین مبادله در یک تراکنش استفاده میکند:
۱. مبادله اول: BPT → cbETH (تنظیم موجودی)
۲. مبادله دوم: wstETH (8) → cbETH (تحریک از دست رفتن دقت)
۳. مبادله سوم: دارایی پایه → BPT (سودگیری)
همه این مبادلات در همان تراکنش batch swap رخ میدهند، وضعیت موجودی یکسانی را به اشتراک میگذارند، اما هر مبادله _upscaleArray را برای اصلاح آرایه موجودیها فراخوانی میکند.
عدم وجود مکانیسم بازگشت
فرآیند اصلی توسط Vault آغاز میشود. چگونه این منجر به انباشت از دست رفتن دقت میشود؟ پاسخ در مکانیسم انتقال آرایه موجودیها نهفته است.

با نگاه به کد بالا، اگرچه Vault هر بار که onSwap فراخوانی میشود یک آرایه currentBalances جدید ایجاد میکند، در Batch Swap:
۱. پس از اولین swap، موجودی بهروزرسانی میشود (اما به دلیل از دست رفتن دقت، مقدار بهروزرسانی شده ممکن است نادرست باشد)
۲. دومین swap محاسبه را بر اساس نتیجه اولین swap ادامه میدهد
۳. از دست رفتن دقت انباشته میشود و در نهایت باعث کاهش قابل توجه مقدار ثابت D میشود
مسئله اصلی:

خلاصه
حمله Balancer را میتوان به دلایل زیر خلاصه کرد:
۱. تابع مقیاسبندی از گرد کردن به پایین استفاده میکند: _upscaleArray از mulDown برای مقیاسبندی استفاده میکند که منجر به از دست رفتن دقت نسبی قابل توجهی در زمانی که موجودی بسیار کم است (مثلاً ۸-۹ wei) میشود.
۲. محاسبه مقدار ثابت به دقت حساس است: محاسبه مقدار ثابت D به آرایه موجودیهای مقیاسبندی شده بستگی دارد و از دست رفتن دقت مستقیماً بر محاسبه D تأثیر میگذارد و باعث کاهش D میشود.
۳. عدم وجود اعتبارسنجی تغییر مقدار ثابت: در طول فرآیند swap، هیچ اعتبارسنجی برای اطمینان از اینکه تغییر در مقدار ثابت D در محدوده معقولی است وجود نداشت، که به مهاجمان اجازه داد تا مکرراً از از دست رفتن دقت برای سرکوب قیمت BPT بهرهبرداری کنند.
۴. انباشت از دست رفتن دقت در Batch Swaps: در همان batch swap، از دست رفتن دقت از چندین swap انباشته میشود و در نهایت منجر به خسارات مالی قابل توجهی میشود.
این دو مسئله—از دست رفتن دقت و عدم وجود اعتبارسنجی—همراه با طراحی دقیق مهاجم از شرایط مرزی، منجر به این خسارت شد.
این مقاله یک مشارکت است و دیدگاههای BlockBeats را نشان نمیدهد.
ممکن است شما نیز علاقهمند باشید

Morning Report | Coinbase Ventures makes its first investment in ENA; SpaceX plans to set the IPO price at $135 per share

متن کامل و تحلیل سخنرانی مدیرعامل SanDisk در چهل و دومین کنفرانس سالانه تصمیمگیری استراتژیک برنشتاین

پیشبینی قیمت بیتکوین در سال ۲۰۳۰: پیشبینی ۷۱۰ هزار دلاری Ark Invest

قیمت لحظهای SOL: قیمت زنده، نمودارها و دادههای بازار Solana

ETF بیتکوین چیست: بررسی تفاوتهای اسپات و فیوچرز

Why Is Bitcoin Dropping 15% While Nasdaq Hits Record Highs?

والاستریت ژورنال: Hyperliquid در حال تبدیل شدن به «فروشگاه رفاه» ارزهای دیجیتال در والاستریت است

سهام توکنیزه شده ایالات متحده «قاتل نقدینگی» بازار کریپتو نیستند
TradFi چیست و چرا در سال ۲۰۲۶ همه درباره آن صحبت میکنند؟

گزارش صبحگاهی | Strategy هفته گذشته ۳۲ BTC و بیش از ۸۰۰ هزار سهم MSTR فروخت؛ Binance رسماً پورتال معاملاتی سهام ایالات متحده خود را معرفی کرد؛ Polymarket به همکاری انحصاری با OneFootball دست یافت

ژو هانگ: ارزش واقعی SpaceX چقدر است؟

بوتکمپ معاملاتی WEEXPERIENCE در لهستان: چگونه WEEX و FireCrew معاملهگری ارزهای دیجیتال را برای همه در دسترس قرار میدهند

سلطنت پاریس: چگونه PSG رویای آرسنال را در فینال تاریخی و هیجانانگیز لیگ قهرمانان اروپا در هم کوبید

TaiJi با جذب سرمایه از Castrum Capital، Becker Ventures و Coinvestor Ventures، موفق به تکمیل دور تأمین مالی استراتژیک ۳.۵ میلیون دلاری شد

بیتکوین در محدوده ۷۳ هزار دلار گیر کرده است؟ معاملهگران چگونه در بازار خنثی ماه ژوئن به سود میرسند

ETF بیتکوین چیست؟ راهنمای ساده برای سال ۲۰۲۶

راهنمای گامبهگام استیک کردن Solana در سال ۲۰۲۶




