ساندویچ اتک

ساندویچ اتک (Sandwich Attack) یا حمله ساندویچی نوعی فرانت رانینگ در تراکنش‌های پروتکل‌ها و خدمات حوزه دیفای نظیر صرافی های غیر متمرکز است. در این مطلب ضمن بررسی نحوه انجام ساندویچ اتک، به بررسی روش‌های جلوگیری و در امان ماندن از این نوع حملات می‌پردازیم.

حوزه امور مالی غیر متمرکز فرصت‌های زیادی را برای کسب‌وکارها فراهم کرده است، اما همانند تمام بازارهای مالی، دیفای نیز مصون از حملات نیست. سوءاستفاده از قراردادهای هوشمند یکی از نگرانی‌های همیشگی توسعه‌دهندگان است و مجرمان سایبری از کدهای آسیب‌پذیر برنامه‌های غیر متمرکز دیفای استفاده کرده و به حملاتی نظیر فلش لون اتک یا حمله به وام‌های فوری (Flash Loan Attack)، راگ پول (Rug Pull) و جدیدترین نوع آن یعنی Sandwich Attack روی آورده‌اند.

انتخاب تراکنش‌ها از ممپول در بلاک چین

اگر تا کنون اسم ساندویچ اتک به گوشتان نخورده است، تنها نیستید. اما جالب است بدانید که هم‌بنیان‌گذار اتریوم، ویتالیک بوترین، در سال 2018 برای اولین بار به این حمله اشاره کرده بود. برای درک بهتر اجازه دهید ابتدا به نحوه انتخاب تراکنش‌ها در بلاک چین توسط ماینرها و سپس بررسی مفهوم فرانت رانینگ بپردازیم.

همیشه یک سری افراد آماده حمله به بلاک چین اتریوم هستند. با این حال، به‌خاطر ماهیت باز و عمومی این شبکه، شناسایی و ردیابی این حملات امکان‌پذیر است.

زمانی که کاربران بلاک چین خواهان اجرای یک تراکنش هستند، باید ماینری آن را در شبکه قرار دهد. برای این کار، رایج‌ترین رویکرد، ارسال آن تراکنش به ممپول (Mempool) یا همان استخر حافظه است؛ لیستی عمومی و موقت از تراکنش‌ها که آماده ماین شدن و قرارگیری در بلاک هستند. حال ماینرها بر اساس مشوق درآمدزایی خود یعنی کارمزدها، تراکنش‌ها را برای قرار دادن در یک بلوک انتخاب می‌کنند. بنابراین، این افراد برای نظارت بر ممپول و پردازش تراکنش‌های بیشتر دارای مشوق مالی هستند.

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

فرانت رانینگ در تراکنش‌های ارز دیجیتال

برخی از مهاجمان همیشه تراکنش‌های ارسالی به ممپول یک بلاک چین را بررسی کرده و با پیش‌بینی انتخاب یک سری از تراکنش‌ها، در صورت برآورده‌سازی شرایط خاص، پیش از انتخاب آن‌ها به این امر واکنش نشان می‌دهند. به این حمله فرانت رانینگ می‌گویند.

در واقع در فرانت ران کردن (Front Running)، مهاجمان از کاربرانی که تراکنش خود را ثبت کرده اما همچنان منتظر تایید و قرارگیری آن در بلاک چین هستند، سوءاستفاده می‌کنند. در این حمله، مهاجم نتیجه قرارگیری تراکنش‌های خاص را پیش از اجرا و ثبت در بلاک چین شبیه‌سازی کرده و با ایجاد یک تراکنش در ابتدای کار که برای وی سودآوری دارد، از این اطلاعات به نفع خود استفاده می‌کند.

حالا چندین راه شناخته‌شده برای استفاده از این نوع مفهوم در صرافی های غیر متمرکز وجود دارد که حملات ساندویچی یکی از آن‌هاست. در ادامه به‌صورت جزئی‌تر با نحوه کار این تله آشنا می‌شویم.

ساندویچ اتک چیست؟

ساندویچ اتک نوعی فرانت رانینگ است که برای خرید ارز دیجیتال روی تراکنش‌های پروتکل‌ها و خدمات دیفای نظیر صرافی‌های غیر متمرکز (DEX) اعمال می‌شود. در این نوع حملات، تریدرهای خرابکار به‌دنبال یک تراکنش پندینگ و در حالت انتظار روی شبکه انتخابی خود، مثلا اتریوم می‌گردند.

حالا دقیقا همانند درست کردن یک ساندویچ، با ایجاد یک تراکنش پیش از ترید مذکور و یک تراکنش دیگر بعد از آن، این حمله انجام می‌شود. در عمل، مهاجم به‌صورت همزمان به فرانت ران (Fron-run) و بک ران (Back-run) و قرار دادن تراکنش اصلی بین آن دو می‌پردازد.

هدف اصلی از قرار دادن یک تراکنش قبل و بعد از سفارش مذکور، دستکاری قیمت ارز دیجیتال مورد نظر است. به‌صورت جزئی‌تر، روش کار به‌صورت زیر است:

  • شناسایی یک تراکنش خرید پیش از اجرای آن
  • خرید مقدار مشخصی از همان توکن پیش از اجرای تراکنش مذکور
  • انتظار برای اجرای تراکنش هدف
  • فروش توکن دقیقا پس از اجرای آن
  • کسب سود

مثالی ساده از نحوه انجام تله حمله ساندویچی

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

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

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

مثالی از نحوه سودآوری از حمله ساندویچی

مثالی پیچیده از نحوه کار ساندویچ اتک

مثال بالا توضیحی بسیار ساده از نحوه کار حملات ساندویچ اتک در پروتکل‌های دیفای بود، اما در واقعیت شرایط کمی پیچیده‌تر است. قیمت توکن‌ها در صرافی‌های غیر متمرکز توسط فرمول بازارساز خودکار (AMM) که به‌صورت زیر است تعیین می‌شود:

X*Y=K

X و Y: مقدار کل هر توکن تحت معامله، مثلا تتر و اتر

با در نظر گیری این معادله و کمی حساب و کتاب، سود مورد انتظار از حمله ساندویچی به‌صورت زیر خواهد بود:

فرمول سود ساندویچ اتک

در این فرمول، متغیرها به‌صورت زیر تعریف می‌شوند:

  • P: سود مورد انتظار از دید مهاجم
  • Qx: تعداد توکن خریداری‌شده توسط مهاجم
  • Q’x: تعداد توکن خریداری‌شده توسط کاربر قربانی
  • X: تعداد توکن موجود در جفت استخر نقدینگی

متغیرهای افزایش‌دهنده سود، Q’x و Qx هستند. بنابراین هرچه این مقادیر بیشتر باشند، سود مهاجم نیز بیشتر خواهد شد. از طرف دیگر، با پایین نگه داشتن مقدار X یعنی همان توکن‌های موجود در استخر نقدینگی نیز سود حمله افزایش می‌یابد.

در دو نمودار زیر، نحوه رشد سود با افزایش مقادیر Q’x و Qx را مشاهده می‌کنید. مقدار کل توکن‌های X نیز 100 در نظر گرفته شده است. با اینکه رابطه بین متغیرهای Q و سود خطی نیست، اما برای مقادیر متوسط می‌توان این رابطه را خطی فرض کرد.

چارت سودآوری sandwich attack

آیا حملات ساندویچی همیشه سودآوری دارند؟

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

  • سود باید بیشتر از کارمزد گس باشد: از آنجایی که سود این حمله نسبتا پایین است، پس Q’x (تعداد توکن‌های خریداری‌شده توسط کاربر) باید برای پوشش کارمزد گس بالا باشد.
  • اسلیپیج متعادل باشد: اسلیپیج حداکثر انحراف از قیمت مورد انتظاری است که یک کاربر مایل به پرداخت در ترید است. از آنجایی که تراکنش‌ها فورا اجرا نشده و برای تایید به تطبیق با یک تراکنش دیگر نیاز دارند، باید انتظار لغزش قیمت را داشت. این یعنی کاربران مایل به خرید یک توکن، قیمت دقیق اجرای تراکنش خود را نمی‌دانند. به همین خاطر، این امر می‌تواند نوسان قیمت نامطلوبی ایجاد کند.

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

سودآوری حملات Sandwich Attack تا کنون چقدر بوده است؟

طی می 2020 (اردیبهشت 99) تا آوریل 2022 (فروردین 1401)، مجموعا 457,691 ساندویچ اتک در دیفای شناسایی شده است. توزیع این حملات و سود حاصله را در تصویر زیر مشاهده می‌کنید:

سودآوری حملات ساندویچی از 2020 تا 2022

با توجه به این نمودار، شاهد کاهش حملات ساندویچی از آوریل 2021 (فروردین 1400) هستیم. با این حال، حتی با وجود تغییر تعداد حملات موفق، درصد ROI (درصد متوسط سود اندازه‌گیری‌شده شامل کارمزدهای گس) این اتک‌ها در گذر زمان تقریبا ثبات مانده است. با توجه به ROI بالای 4 درصد و ریسک پایین (خصوصا هنگام تبانی با ماینرها)، می‌توان ساندویچ اتک را یک تله بسیار کارآمد در دنیای ارز دیجیتال دانست.

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

سودآوری کلی اتر مهاجمان در sandwich attack

با اینکه تفاوت زیادی در سودآوری کلی ماهانه وجود دارد، اما تعداد این حملات شدیدا بالاست. متوسط سود حدود 2 درصدی می‌تواند به کسب سود تا 1,000 واحد اتر برای کل مهاجمان منجر شود. کل سود کسب شده توسط حملات ساندویچ اتک در دیفای تا کنون 60,000 واحد اتر بوده است.

چه کسانی تا کنون از حمله ساندویچی سود کرده‌اند؟

با اینکه نمی‌توان به‌طور دقیق هویت مهاجمان را شناسایی کرد، اما با بررسی سودآورترین کیف پول های ارز دیجیتال مشخص‌شده است که این افراد عضو استخرهای استخراج معروف بوده‌اند. بنابراین، در نظر گیری این والت‌ها به‌عنوان نماینده، دست ما را در گروه‌بندی و اندازه‌گیری تعداد «فعالان» پشت صحنه می‌بندد. در تصویر زیر، 3 مورد از سودآوریترین والت‌های انجام‌دهنده حمله Sandwich Attack را مشاهده می‌کنید:

3 مورد از سودآورترین مهاجمان ساندویچ اتک

با توجه به این نمودار، می‌توان گفت هر 3 این مهاجمان بیش از 1,000 واحد اتر کسب کرده‌اند که با توجه به متوسط سودآوری 0.15 اتری، مبلغ بسیار قابل توجهی محسوب می‌شود.

کیف پول دو مهاجم اول مربوط به استخرهای استخراج معروف است. اما با توجه به تراکنش‌های ولت سوم به‌نظر می‌رسد متعلق به یک ربات مخصوص ساندویچ اتک باشد. بنابراین، احتمال اینکه والت سوم نیز توسط یکی از افراد فعال در یک استخر لیکوییدیتی طراحی شده باشد، وجود دارد. در این صورت، این فرد نیز احتمالا با انجام حمله ساندویچی 1,600 اتر کسب کرده است.

چه کسانی قادر به انجام حمله ساندویچی هستند؟

با توجه به نکات بخش‌های قبل، تریدرهای میکر و تیکر در استخرهای نقدینگی به دو روش می‌توانند در تراکنش‌های ارز دیجیتال حوزه دیفای حملات ساندویچی انجام دهند:

تقابل لیکوییدیتی تیکرها با یکدیگر

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

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

مقابله تامین‌کننده نقدینگی با تیکر

در حالت دیگر ساندویچ اتک در دیفای، یک لیکوییدیتی پرووایدر (Liquidity Provider) نیز می‌تواند به روشی مشابه به یک لیکوئیدیتی تیکر حمله کند. گام اول دقیقا به همان صورت قبل است، اما فرد مهاجم این بار باید 3 کار را انجام دهند.

اول از همه، وی با هدف افزایش اسلیپیج، نقدینگی را با روش فرانت رانینگ از استخر برداشت می‌کند. در مرحله دوم، وی دوباره نقدینگی را به استخر اضافه کرده و با بک رانینگ، موجودی آن را به حالت اول خود باز می‌گرداند. در گام آخر، وی برای بازگردانی موجودی ارز X به حالت پیش از حمله، رمز ارز Y را با X سواپ می‌کند.

چگونه تله ساندویچ اتک را تشخیص بدهیم؟

اولین گام برای تشخیص حمله ساندویچی، بررسی تمام تراکنش‌های یک پروتکل دیفای است. به‌عنوان مثال، ما به بررسی تمام تراکنش‌های نسخه دوم و سوم صرافی یونی سواپ در بلاک چین اتریوم پرداخته‌ایم. بر این اساس، یک تراکنش در یک حمله Sandwich Attack باید دارای ویژگی‌های زیر باشد:

  • وجود 3 تراکنش پشت‌سر هم برای یک توکن خاص
  • دو تراکنش اول از نوع خرید و تراکنش سوم از نوع فروش
  • تراکنش اول و سوم متعلق به یک والت باشند
  • تراکنش آخر همان مقدار توکن در تراکنش اول را فروخته باشد
  • مقدار دریافتی در تراکنش سوم بزرگتر از مقدار خرید در تراکنش اول باشد

اگر همه این شرایط مهیا بود، پس قطعا یک ساندویچ اتک اتفاق افتاده است.

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

پاسخ کوتاه به این سوال این است که در حال حاضر، راه خاصی برای جلوگیری از افتادن در دام حملات Sandwich Attack وجود ندارد.

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

پروتکل‌های زیادی در حال ادغام فناوری‌هایی نظیر زی‌کی اسنارک‌ها (ZK-Snark) هستند که به ایجاد لایه یا رمزگذاری اطلاعات تراکنش‌ها کمک کرده و شناسایی تریدهای هدف را برای ربات‌ها و مهاجمان دشوار می‌سازد. مثلا، صرافی وان اینچ (1Inch) امروزه سفارش‌هایی را تحت عنوان «تراکنش‌های فلش‌بات (Flashbot Transaction)» ارائه می‌دهد که قابل مشاهده در ممپول نیستند. این صرافی ارتباط مستقیمی با ماینرهای معتمد دارد که تراکنش‌ها را تنها پس از انتشار در بلاک چین قابل رویت می‌سازند.

با توجه به تازگی حوزه دیفای، احتمال طراحی راه‌های دیگر برای جلوگیری از حمله ساندویچ اتک در آینده وجود دارد. اما تا آن زمان، از ریسک‌های این بخش نمی‌توان به‌طور کامل جلوگیری کرد.

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

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

با این حال، اگر «رفتار عادی» بر بازار حاکم و هزینه تراکنش برای Sandwich Attack کمتر از مقدار ترید قربانی باشد، می‌توان این حمله را یک روش سودآورانه خوب دانست.

سخن پایانی

ظهور معاملات غیر متمرکز از طریق بازارسازهای خودکار برای کاربران استفاده‌کننده از این خدمات ریسک‌های خود را دارد. با جذب سرمایه گذاران بیشتر و بیشتر در حوزه دیفای، فرصت‌های حمله به پروتکل‌ها و سوءاستفاده از برنامه‌های غیرمتمرکز افزایش یافته است، بنابراین انتظار وقوع ساندویچ اتک را همیشه باید داشته باشید. حملات ساندویچی همچنان یکی از روش‌های به‌دام انداختن تریدرها هستند، اما از اواسط سال 2021 تا کنون میزان انجام آن‌ها کاهش شدیدی داشته است.

تهیه شده در بیت 24