حمله ساندویچی در دیفای چیست؟
این نوع از حملات از جمله تهاجمهای شایع نیستند و خیلی از افراد دانش بیشتری در مورد کلاهبرداری Rug Pull دارند. این نوع از تهاجم میتواند موقعیتهای خاصی را در حیطه دیفای به وجود بیاورد و تا حدی حائز اهمیت است که ویتالیک بوترین (Vitalik Buterin) نیز در سال ۲۰۱۸ در مورد آن به ما هشدار داده بود.
زمانی که صحبت از شاخصههای حملات مختلف به میان میآید، لازم است تا درک کاملی از مفهوم یک حمله و پتانسیلهای موجود برای روی دادن آن و البته پیامدهای آن داشته باشیم. یک حمله ساندویچی به ویژه هنگامی که پروتکلها و پلتفرمهای دیفای را هدف قرار میدهد، میتواند به عواقب قابل توجهی منجر شده و در نتیجه آن اتفاقاتی نیز در بازار روی دهد.
مفهوم و طرح حمله ساندویچی
از نظر بنیادین میتوانیم یک Sandwich Attack را در قالب نوعی حمله پیشرو در نظر بگیریم که در ابتدا پروتکلها و خدمات Defi را مورد هدف قرار میدهد.
در طول وقوع این حمله، تریدر یا معاملهکننده مهاجم به دنبال یک تراکنش در حال انتظار در شبکه دلخواه خود، مثلا شبکه اتریوم میگردد. حمله ساندویچی با قرار دادن یک سفارش توسط فرد مهاجم پیش از ترید اصلی، و یک سفارش پس از آن رخ میدهد. در حقیقت فرد مهاجم سفارشهای خود را از پیش و پس و به صورت همزمان ثبت میکند و تراکنش در حال انتظار اصلی در وسط این دو سفارش یا اصطلاحا “ساندویچ” قرار میگیرد.
هدف از ثبت این دو سفارش و احاطه کردن تراکنش در حال انتظار (Pending)، دستکاری کردن قیمت داراییهای مختلف است. به طور مثال در معاوضه LINK و ETH در مرحله اول، مهاجم با علم به این که قیمت اتر در حال افزایش است، میخواهد دارایی مورد معاوضه کاربر را خریداری کند؛ پس اتر را با قیمت پایینتری میخرد تا قربانی این حمله مجبور به خریداری کردن ETH با قیمت بالاتر باشد. پس از این روند نیز فرد مجرم اتر را با قیمت بالاتری به فروش میرساند.
در حقیقت ساندویچی کردن یک تراکنش موجب دریافت میزان کمتری از ETH توسط کاربر اصلی میشود. با موفق شدن مجرم در روند پر شدن سفارش خرید با قیمت تعریف شده، معامله بعدی قیمت بیشتری خواهد داشت. این فرایند به صورت کلی به افزایش قیمت اتر منجر شده و به مهاجم این اجازه را میدهد تا سود خوبی را با اجرای ثبت سفارش پس و پیش به جیب زده و باعث افزایش قیمت غیرواقعی بشود.
عوامل موثر در حمله ساندویچی
روش حمله ساندویچی باعث میشود تا این نوع از حمله به آسانی قابل انجام باشد. در واقعیت میتوانیم انجام این تهاجم را تا حد زیادی ساده و قابل انجام در نظر بگیریم. حتی اگر سود کمی از این روش حاصل شود نیز یک فرد میتواند با تکرار کردن این شیوه به دفعات متعدد و بدون هیچ عواقبی، در کار خود موفق باشد. با وجود تمام این تفاسیر، یک تریدر بدطینت باید آمادگی کافی برای انجام Sandwich Attack را داشته باشد. عوامل زیادی در فضای امور مالی غیرمتمرکز یا دیفای وجود دارند که بر روی شانس موفقیت این نوع تهاجم تاثیر دارند.
اکثر حملات ساندویچی از طریق راه حلهای بازار ساز خودکار یا AMM به انجام میرسند. به عنوان چند نمونه از این بازارها میتوانیم به یونیسواپ، پنکیکسواپ، سوشیسواپ و غیره اشاره کنیم. با توجه به الگوریتمهای قیمتگذاری این پلتفرمها، نقدینگی همواره تقاضای بالایی دارد و معاملات به صورت مداوم در حال انجام شدن هستند. با این وجود، نمیتوانیم تغییرات قیمتی که در هنگام تغییر حجم و نقدینگی شکل میگیرند را از یاد ببریم.
علاوه بر این، تریدرها با قیمت اجرایی مورد انتظار، قیمت اجرایی حقیقی و نرخ لغزش (Slippage) غیرمنتظره نیز روبهرو هستند. تمامی این عوامل میتوانند نرخهایی که یک شخص در قالب آنها معامله میکند و در ازای دارایی A، دارایی B دریافت میکند را نیز تحت تاثیر قرار دهند. معاملات بلاک چین برای انجام شدن، نیاز به زمان دارند و نرخهای بین مبادلهای داراییها میتوانند به شدت نوسان داشته باشند و در نتیجه این امر نیز ممکن است شاهد کاهش غیرمنتظره قیمت باشیم.
دو سناریوی محتمل پیش روی ما در Sandwich Attack
با در نظر داشتن تمام مسائلی که پیش از این مطرح کردیم، حمله ساندویچی به دو شکل اتفاق میافتد؛ دریافتکننده نقدینگی در تقابل با فرد دریافتکننده و ارائهدهنده نقدینگی در مقابل فرد دریافتکننده. در ادامه به بررسی هر دو مورد میپردازیم.
دریافتکننده نقدینگی در تقابل با فرد دریافتکننده
دور از انتظار نیست که شاهد حمله دو دریافتکننده نقدینگی به یکدیگر باشیم. به عنوان مثال، اگر یکی از فعالان عادی بازار یک تراکنش AMM در حال انتظار در بلاک چین داشته باشد، فرد مجرم میتواند تراکنشهای پس و پیش را برای کسب سود مالی به مرحله اجرا برساند. هنگامی که استخر نقدینگی و جفت ارز دیجیتال موجود در آن با سه تراکنش در حال انتظار مواجه میشوند، ماینرها تصمیم میگیرند که کدام یک از آنها پیش از دو تراکنش دیگر باید مورد تایید قرار بگیرد.
اگر مهاجم حاضر به پرداخت فی تراکنش بیشتری نسبت به شخص دیگر باشد، شانس بیشتری برای به انجام رسیدن معامله او قبل از سایر تراکنشها وجود دارد. این یک روند تضمین شده نیست؛ اما طرحی کلی از میزان ساده بودن شیوه به انجام رسیدن حمله ساندویچی را نشان میدهد.
ارائهدهنده نقدینگی در مقابل فرد دریافتکننده
یک تامین کننده نقدینگی میتواند به سادگی به یک دریافتکننده نقدینگی حمله کند. پیش فرض تمام این روند نیز درست مشابه روند قبلی است؛ اما با این وجود، فرد مهاجم در این حالت باید سه کار را به انجام برساند.
در ابتدا باید نقدینگی را خارج کند و این امر به عنوان شیوه ثبت معامله دوم (یعنی پسسفارش) عمل میکند تا میزان اسلیپیج قیمتی فرد قربانی را افزایش دهد. در مرحله دوم، دوباره نقدینگی را به استخر تزریق میکند و این امر نیز به عنوان پیشمعامله عمل میکند تا دوباره تعادل استخر نقدینگی برقرار شود. در مرحله سوم، دارایی A را با دارایی B مبادله میکند تا تعادل دارایی B را مانند زمان قبل از روی دادن این حمله در استخر نقدینگی برقرار کند.
برداشت نقدینگی موجود پیش از قرار گرفتن تراکنش فرد قربانی در روند انجام، موجب منتفی شدن کارمزد یا فی تراکنش میشود. به صورت معمول، ارائهدهندگان نقدینگی میزان کارمزد کمی را در ازای فعالیتهایی که در استخر آنها روی میدهد دریافت میکنند. اطمینان حاصل کردن از عدم دریافت کارمزد، میتواند به هر یک از دریافتکنندگان نقدینگی، صرفنظر از قیمت کمیسیون دریافتی آنها آسیب مالی بزند.
آیا سود حاصل از حملات ساندویچی مقرون به صرفه است؟
با وجود انگیزههای مالی واضح در زمینه حمله ساندویچی، انجام این عمل همیشه بهصرفه نیست. هزینه به انجام رساندن این تراکنشها برای اجرای معاملات پس و پیش به ازای تراکنشهای سایر تریدرها، معمولا بیشتر از سود دریافتی توسط فرد مهاجم است. به ویژه هنگامی که از شبکه اتریوم استفاده میکنید، هزینههای معاملات را (به ازای هر عمل) به شما گوشزد میکند.
با این حال، در صورتی که کمیسیون دریافتی از روند عادی تراکنش و هزینه تراکنشهای مورد نیاز حمله ساندویچی از میزان معامله فرد قربانی بیشتر باشد، میتوانیم این حمله را سودآور در نظر بگیریم.
ظهور فضای معامله غیرمتمرکز از طریق سازندگان بازار خودکار برای افرادی که از این خدمات استفاده میکنند، همواره یک ریسک به حساب میآید. حملات ساندویچی ممکن است در هر لحظه اتفاق بیافتند. با جذب شدن روزافزون افراد به دنیای دیفای، فرصتهای بیشتری نیز برای حملات افراد مجرم فراهم میشود. این به معنای افزایش به انجام رسیدن حملات ساندویچی موفق در آینده نیست؛ اما همیشه باید این مورد را در ذهن داشته باشیم.
چگونه از حملات ساندویچی در امان باشیم؟
در رابطه با پلتفرمهای AMM، توسعه دادن اقدامات امنیتی برای حفاظت از کاربران در مقابل این حملات امری مهم است. به عنوان مثال، پلتفرم 1inch نوع جدیدی از تدابیر امنیتی را تحت عنوان «تراکنشهای فلشبات» معرفی کرد که در ممپول (حافظه استخر تراکنشهای در انتظار تایید) قابل مشاهده نیستند؛ زیرا در آن به نمایش گذاشته نمیشوند. در عوض، پلتفرم وان اینچ ارتباط مستقیمی با ماینرهای قابل اعتماد دارد تا معاملات پس از استخراج شدن قابل مشاهده باشند.
تا به امروز، به نظر میرسد که تنها راه موجود برای کاربران در راستای حفاظت کردن خود در برابر حمله ساندویچی همین است. با این حال، هنوز معلوم نیست که سایر پلتفرمهای AMM نیز در راستای عدم انتشار تراکنشها در Mempool با ماینرها مشارکت میکنند یا خیر. ممکن است راه حلهای بیشتری در آینده پیدا شوند، اما این رویداد نیازمند زمان بیشتری است.