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

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

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

حمله ساندویچی یکی از حملات شایع در حوزه دیفای است که بیشتر صرافی‌های غیرمتمرکز (DEX) را هدف قرار می‌دهد. در این حمله، مهاجم با سوءاستفاده از نحوه عملکرد صرافی‌های مبتنی بر بازارساز خودکار (AMM)، تلاش می‌کند از تراکنش‌های سایر کاربران سود ببرد؛ بدون اینکه این تراکنش‌ها را هک کند یا اطلاعات خصوصی آن‌ها را بدزدد.

حمله ساندویچی به این صورت انجام می‌شود:

  1. مهاجم یک تراکنش معلق را در شبکه شناسایی می‌کند و با ردیابی ممپول (Mempool) این کار را انجام می‌دهد.
  2. دو تراکنش را اطراف تراکنش قربانی ارسال می‌کند:
    • یکی قبل از تراکنش اصلی (Front-Running)
    • یکی بعد از آن (Back-Running)
  3. با انجام این کار، تراکنش قربانی میان این دو سفارش گیر می‌افتد؛ شبیه یک ساندویچ.

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

تکنیک‌های مهاجمان در Sandwich Attack

مهاجمان در حملات ساندویچی از چند تکنیک مشخص برای دستکاری تراکنش‌ها استفاده می‌کنند. این تکنیک‌ها با هدف تغییر قیمت و استفاده از نوسانات لحظه‌ای بازار طراحی شده‌اند. مهم‌ترین روش‌های اجرای ساندویچ اتک شامل موارد زیر هستند:

۱. فرانت رانینگ (Front-Running)

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

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

۲. بک رانینگ (Back-Running)

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

۳. سوءاستفاده از اسلیپیج قیمت

یکی از نقاط ضعف معاملات در صرافی‌های غیرمتمرکز، تنظیم اسلیپیج توسط کاربر است. اگر تریدر اسلیپیج بالایی تعیین کند، مهاجم از این وضعیت سوءاستفاده می‌کند.

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

انواع حملات ساندویچی

انواع حملات ساندویچی

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

۱. حمله ساندویچی تیکر در برابر تیکر (Taker vs. Taker)

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

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

نکته مهم در این سناریو، رقابت مهاجم با قربانی برای اولویت اجرا در بلاک است. ماینر یا ولیدیتور هر تراکنشی را که کارمزد بالاتری داشته باشد زودتر تأیید می‌کند و اینجاست که مهاجم دست بالا را دارد.

۲. حمله ساندویچی تأمین‌کننده نقدینگی در برابر تیکر (Liquidity Provider vs. Taker)

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

  1. حذف نقدینگی از استخر: مهاجم ابتدا بخشی از نقدینگی را از استخر خارج می‌کند تا اسلیپیج برای قربانی بیشتر شود.
  2. بازگرداندن نقدینگی پس از معامله قربانی: بلافاصله پس از اجرای تراکنش قربانی، نقدینگی دوباره به استخر اضافه می‌شود.
  3. بازگرداندن تعادل استخر با یک معامله سریع: مهاجم با یک سواپ هوشمند، تعادل دارایی‌ها در استخر را به وضعیت اولیه برمی‌گرداند.

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

عوامل موثر در ساندویچ اتک چیست؟

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

بازارساز خودکار (AMM)

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

این مکانیزم شفاف و بدون نیاز به دفتر سفارش (Order Book)، راه را برای دستکاری قیمت توسط مهاجمان هموار می‌کند. مهاجم می‌داند که با ارسال یک تراکنش بزرگ می‌تواند نسبت قیمت را تغییر دهد و از این نوسان به نفع خود بهره ببرد.

اسلیپیج قیمت (Slippage)

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

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

قیمت اجرای مورد انتظار

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

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

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

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

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

  1. خرید اولیه مهاجم (قبل از قربانی)
  2. معامله قربانی
  3. فروش نهایی مهاجم (بعد از قربانی)

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

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

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

در برخی گزارش‌ها آمده است که ربات‌های ساندویچی تنها در چند روز، سودهای میلیونی کسب کرده‌اند. به عنوان مثال، یکی از مهاجمان توانست در سه روز حدود ۱.۵ میلیون دلار از یک ربات ساندویچی به دست آورد. در موارد معمولی نیز، درآمد روزانه بین ۱۰۰ تا ۲۰۰ دلار برای مهاجمان ثبت شده است.

چطور حمله ساندویچی را شناسایی کنیم؟

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

  • افزایش ناگهانی حجم معاملات: یکی از نشانه‌های رایج حمله ساندویچی، رشد سریع و غیرعادی حجم معاملات در یک توکن خاص است. زمانی که مهاجم برای اجرای فرانت رانینگ و بک رانینگ، تراکنش‌های بزرگ ارسال می‌کند، حجم بازار ناگهان بالا می‌رود. اگر چنین افزایشی را بدون دلیل مشخصی مشاهده کردید، احتمال وقوع حمله وجود دارد.
  • نوسانات شدید قیمت در زمان کوتاه: حمله ساندویچی باعث افزایش یا کاهش سریع قیمت دارایی در عرض چند ثانیه می‌شود. اگر در نمودار قیمتی، نوساناتی لحظه‌ای و غیرمعمول دیدید که بلافاصله پس از آن قیمت به حالت قبل برگشته، شاید حمله‌ ساندویچی رخ داده است.
  • بررسی دقیق نمودار قیمت: الگوهای کندل استیک مشخصی در نمودار قیمت ممکن است هشداردهنده باشد؛ مثل تشکیل یک کندل صعودی یا نزولی تند، بلافاصله با یک کندل معکوس. این الگو نشان می‌دهد که تراکنش‌های خرید و فروش مهاجم در فاصله زمانی بسیار نزدیک اجرا شده‌اند.
  • استفاده از ابزارهای تحلیل تکنیکال: ابزارهایی مانند سایت Dune Analytics و یا ابزار Token Terminal یا ابزارهای بررسی تراکنش در بلاک‌اکسپلوررها (مثل Etherscan) برای تحلیل دقیق‌تر به شما کمک می‌کنند. این ابزارها به شما امکان می‌دهند تغییرات در اسلیپیج، قیمت و حجم معامله را با دقت مشاهده کنید و اسلیپیج مناسب برای جلوگیری از ساندویچ اتک را تشخیص دهید.

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

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

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

  1. هکرها و برنامه‌نویسان باتجربه: هکرهایی که با کدنویسی، قراردادهای هوشمند و ممپول آشنایی دارند، اولین گروهی هستند که از Sandwich Attack در صرافی‌های غیرمتمرکز برای کسب سود استفاده می‌کنند. این افراد با طراحی ربات‌های خودکار، تراکنش‌ها را در میلی‌ثانیه رصد کرده و حملات را به‌صورت مداوم اجرا می‌کنند.
  2. تریدرهای حرفه‌ای با دانش فنی: برخی از تریدرهای حرفه‌ای نیز با تحلیل دقیق بازار و استفاده از ابزارهای خاص، از فرصت‌های MEV استفاده می‌کنند. این افراد به‌جای فعالیت در صرافی‌های متمرکز، در پلتفرم‌های غیرمتمرکز فعالیت دارند و از نحوه عملکرد بازارسازهای خودکار به‌خوبی مطلع‌ هستند.
  3. توسعه‌دهندگان ابزارهای MEV: افرادی که در پروژه‌هایی مثل Flashbots فعالیت دارند یا ابزارهای تحلیل بلاکچین تولید می‌کنند، می‌توانند از دانش خود برای اجرا یا حتی دفاع در برابر این نوع حملات استفاده کنند.

*نکته مهم

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

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

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

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

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

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

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

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

  • کاهش اسلیپیج: یکی از ساده‌ترین و مؤثرترین اقدامات، تنظیم اسلیپیج در پایین‌ترین سطح ممکن است. هرچه اسلیپیج کمتر باشد، فضای کمتری برای نوسان قیمت باقی می‌ماند و سود حمله برای مهاجم می‌شود. محدوده پیشنهادی اسلیپیج بین ۰.۵٪ تا ۱٪ است، البته با توجه به شرایط بازار باید آن را تنظیم کنید.
  • استفاده از معاملات Flashbot: فلش بوت سیستمی است که به شما اجازه می‌دهد تراکنش را مستقیم برای ماینر یا اعتبارسنج ارسال کنید، بدون اینکه در ممپول عمومی قرار گیرد. این کار باعث می‌شود مهاجمان نتوانند تراکنش شما را ببینند و در نتیجه انجام حمله ساندویچی غیرممکن شود. برخی صرافی‌ها مثل صرافی 1inch از این قابلیت پشتیبانی می‌کنند. فلش بوت روش جلوگیری از MEV برای تریدرها هم محسپب می‌شود.
  • ثبت سفارش به‌صورت Limit Order: در مقایسه با سفارش بازار (Market Order)، سفارش‌ لیمیت اوردر (Limit Order) کنترل بیشتری به شما می‌دهند. در DEXهایی مثل Polkadex می‌توان سفارش محدود ثبت کرد. این روش جلوی اجرای معامله در شرایط نوسانی و هدف‌دار را می‌گیرد.
  • تقسیم معاملات بزرگ: تراکنش‌های بزرگ بیشترین جذابیت را برای مهاجمان دارند. اگر قصد دارید مقدار زیادی از یک توکن را معامله کنید، این کار را با چند معامله کوچک‌ انجام دهید. این کار احتمال هدف قرار گرفتن شما را کاهش می‌دهد.

نمونه‌های واقعی از حملات ساندویچی اتفاق افتاده

حملات ساندویچی بارها اجرا شده‌اند. در ادامه به مثال واقعی حمله ساندویچی اشاره می‌کنیم:

حمله ساندویچی به Uniswap

یونی سواپ (Uniswap) یکی از بزرگ‌ترین پلتفرم‌های DEX است که به دلیل شفافیت کامل تراکنش‌ها، هدف جذابی برای مهاجمان ساندویچی محسوب می‌شود. در یکی از بزرگ‌ترین حملات، مهاجمان با استفاده از نقص موجود در قرارداد هوشمند این پلتفرم، توانستند از ۸ استخر مجزا، بیش از ۲۵.۲ میلیون دلار دارایی به سرقت ببرند. ردیابی تراکنش‌ها نشان داد که هکرها دارایی‌ها را به ۸ آدرس مجزا منتقل کردند، اما با وجود پیگیری‌ها، هنوز شناسایی یا دستگیر نشده‌اند.

حمله ساندویچی به SushiSwap

در سپتامبر ۲۰۲۰، سوشی سواپ (SushiSwap) نیز قربانی یک حمله ساندویچی بزرگ بود. در این حمله هکر با شناسایی تراکنشی بزرگ برای توکن MISO، ابتدا سفارش خرید بزرگی را ثبت کرد تا قیمت توکن را بالا ببرد. سپس بلافاصله پس از اجرای تراکنش قربانی، سفارش فروش خود را با قیمت متورم‌شده اجرا کرد.

این حمله به خوبی نشان داد که حتی پروژه‌های معروف و مورداعتماد هم اگر فاقد مکانیسم‌های امنیتی پیشرفته باشند، می‌توانند قربانی چنین سوءاستفاده‌هایی شوند.

حمله ساندویچی؛ یک ساندویچ ناسالم

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