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

ظهور کلاهبرداری در قراردادهای هوشمند همیشه یکی از نگرانی ها در مورد ضعف کد دیفای بوده است. این مساله منجر به حملات مختلفی مانند Flash Loan، کلاهبرداری های Rug Pull و حمله ساندویچی می شود. ما می دانیم که حوزه مالی غیرمتمرکز فرصت های زیادی را به ما ارائه می دهد اما می توان آن را بستری برای انواع مختلف حملات نیز در نظر گرفت. در این مقاله به sandwich attack، مفهوم و طراحی این حمله، عوامل موثر بر آن، دو سناریو احتمالی برای اجرای این نوع حمله و نحوه جلوگیری از آنها می پردازیم. 

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

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

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

بررسی مفهوم طرح ساندویچی 

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

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

عوامل تاثیرگذار در حمله ساندویچی

عوامل تاثیرگذار در حمله ساندویچی

روش حمله ساندویچی انجام این نوع حمله را آسان می کند. در واقع می توانیم این حمله را کاملاً ساده و امکان پذیر بدانیم؛ حتی اگر از این روش سود ناچیزی به دست بیاید، فرد می تواند با چندین بار تکرار این روش، بدون عواقب در کار خود موفق باشد. با وجود تمام این تفاسیر، یک معامله گر مخرب باید به اندازه کافی برای انجام یک sandwich attack آماده باشد. عوامل زیادی در فضای غیرمتمرکز مالی یا DeFi وجود دارد که بر شانس موفقیت این نوع حمله تأثیر می گذارد.

بیشتر حملات ساندویچی از طریق راه حل های بازارسازهای خودکار یا AMM انجام می شود. نمونه هایی از این بازارها عبارتند از Uniswap، Pancakeswap، Sushiswap و غیره. با توجه به الگوریتم های قیمت گذاری این پلتفرم ها، نقدینگی همواره تقاضای بالایی دارد و معاملات به صورت مستمر انجام می شود. با این حال، ما نمی توانیم تغییرات قیمتی را که هنگام تغییر حجم و نقدینگی رخ می دهد، فراموش کنیم.

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

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

دو سناریو احتمالی در sandwich attack

با توجه به تمام سؤالاتی که قبلاً مطرح کردیم، حمله ساندویچی به دو صورت رخ می دهد: گیرنده نقدینگی در مقابل گیرنده و تأمین کننده نقدینگی در مقابل گیرنده. در ادامه به بررسی هر دو مورد می پردازیم.

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

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

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

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

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

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

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

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

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

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

با توجه به پلتفرم های AMM، توسعه اقدامات امنیتی برای محافظت از کاربران در برابر این حملات مهم است. به عنوان مثال، پلتفرم 1inch، نوع جدیدی از اقدامات امنیتی به نام "تراکنش های فلش بات" را معرفی کرد که در Mempool حوزه حافظه تراکنش های معلق قابل مشاهده نیستند چون در آنجا نمایش داده نمی شوند. 

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

در این باره بیشتر بخوانید