به همان اندازه که در دنیای دیفای یا مالی غیرمتمرکز فرصتهای بسیار زیادی وجود دارد، تهدیدها، کلاهبرداریها و خطرات زیادی نیز وجود دارد که سرمایه کاربران را هدف قرار داده است. سوء استفاده از قراردادهای هوشمند به یک نگرانی دائمی تبدیل شده است. مجرمان از آسیبپذیریهای موجود استفاده میکنند که منجر به حملات وامهای فلش، راگ پول و اخیراً حمله ساندویچی در دیفای شده است.
در این مقاله از داموندمگ به حملات ساندویچی و اینکه چه عواملی در آن دخیل هستند خواهیم پرداخت. در نهایت به این مورد اشاره خواهیم کرد که چه روشی باری مقابله با آن وجود دارد. با توجه به کمتر بودن این حمله نسبت به سایرین، روشهای مقابله با آن محدود است و در دست گردانندگان سیستم و افرادی است که روند کار را توسعه میدهند.
مفهوم حمله ساندویچی در دیفای
حمله ساندویچی (Sandwich Attack) از انواع کلاهبرداریهای کمتر شناخته شده در حوزه دیفای است. معمولاً همه ما در مورد کلاهبرداریهایی مانند فیشینگ یا راگ پول زیاد شنیدهایم، اما حمله ساندویچی کمتر برایمان آشنا است.
در این نوع حمله مهاجم که خود یک تریدر است، تراکنشی در حال انتظار (pending) را انتخاب میکند. این تراکنش میتواند در هر شبکهای، مثلاً اتریوم باشد. زمانی که مهاجم تراکنش را انتخاب کرد، دو سفارش در شبکه ثبت میکند. این سفارشها به گونهای ثبت میشوند، که یکی از آنها قبل از تراکنش اصلی و دیگری بعد از آن قرار بگیرند. به این ترتیب «ساندویچی» از دو تراکنش مهاجم تشکیل میشود که مورد اصلی در بین آنها قرار میگیرد.
با این روش مهاجم میتواند در قیمت داراییها دخل و تصرف کند، که درواقع هدف از این حمله هم همین است. برای مثال مبادله اتریوم و ارز دیجیتال لینک را در نظر بگیرید. ابتدا مهاجم میداند که ارزش اتریوم در حال افزایش است و با این دانش میخواهد ارز دیجیتال مورد نظر کاربر را بخرد. او اتریوم را به قیمت کمتری میخرد، تا قربانی مجبور به صرف هزینه بیشتر برای خرید شود. به این ترتیب مهاجم اتریوم را با قیمت بالاتری میفروشد.
در نتیجه حمله ساندویچی در دیفای کاربر واقعی مقدار کمتری اتریوم دریافت خواهد کرد. زمانی که مجرم تراکنشهای خرد را با قیمت دلخواه خود پر میکند، معامله بعدی با قیمت بالاتری انجام خواهد شد. به این ترتیب قیمت اتریوم به صورت غیرواقعی و بیدلیل افزایش خواهد یافت.
عوامل دخیل در حمله ساندویچی
با اطلاعاتی که تا اینجا به دست آوردیم، میدانیم که حمله ساندویچی در دیفای به راحتی و بدون اینکه کسی مشکوک شود رخ میدهد. درواقع چنین به نظر میرسد که جزئی از روند عادی ثبت تراکنش و سفارش است، چرا که افراد میتوانند با قیمتهای مختلف سفارش ثبت کنند. با وجودی که سود هر حمله کم است، اگر مهاجم چندین بار این کار را تکرار کند، به مرور به سود بسیار زیادی دست خواهد یافت.
چند عامل مختلف در این حمله دخیل هستند که در این بخش به معرفی آنها خواهیم پرداخت:
بازارساز خودکار (AMM)
این یک الگوریتم قیمتگذاری از پیش تعریف شده است که به طور خودکار کشف قیمت و بازارسازی را براساس داراییهای موجود در استخرهای نقدینگی انجام میدهد. AMM به ارائهدهندگان نقدینگی اجازه میدهد تا بازار را رصد و دنبال کنند و سپس قیمتهای پیشنهادی و درخواستی را تعیین کنند. گیرندگان نقدینگی به نوبه خود ضد AMM معامله میکنند.
لغزش قیمت
لغزش قیمت عبارت است از تغییر قیمت یک دارایی در طول معامله. لغزش قیمت مورد انتظار، عبارت است از افزایش یا کاهش مورد انتظار قیمت براساس حجم مورد معامله و نقدینگی موجود، که در آن قیمت مورد انتظار در ابتدای معامله شکل میگیرد.
قیمت اجرایی مورد انتظار
زمانی که یک گیرنده نقدینگی (liquidity taker) معامله را در X/Y صادر میکند، گیرنده (taker) میخواهد معامله را با قیمت اجرایی مورد انتظار (بر اساس الگوریتم AMM و حالت X/Y) با توجه به لغزش مورد انتظار انجام دهد.
لغزش غیرمنتظره قیمت
مفهومی به نام لغزش غیرمنتظره قیمت نیز وجود دارد که به کاهش و افزایشی اطلاق میشود ک به دلایل ناشناخته و غیرقابل پیشبینی صورت میگیرد. به عبارت دیگر به تفاوت قیمت اجرایی و قیمت اجرایی مورد انتظار لغزش غیرمنتظره قیمت گفته میشود.
نرخ لغزش غیرمنتظره
نرخ لغزش غیرمنتظره تقسیم قیمت لغزش غیرمنتظره بر قیمت مورد انتظار است.
روش های محتمل حمله ساندویچی
تمام آنچه گفتیم، مبانی حمله ساندویچی در دیفای بود، حال میخواهیم توضیح دهیم که مهاجمان چگونه چنین حملهای را انجام میدهند. در ادامه خواهیم دید که دو سناریو برای این کار وجود دارد.
1. گیرنده نقدینگی در مقابل گیرنده
این غیر عادی نیست که شاهد حمله گیرندگان نقدینگی مختلف به یکدیگر باشیم. به عنوان مثال، اگر یک بازارگردان معمولی یک تراکنش AMM در حال انتظار در بلاک چین داشته باشد، مهاجم میتواند تراکنشهای پیشین (front-running) و پسین (back-running) را برای کسب سود مالی منتشر کند. از آنجایی که استخر نقدینگی و جفت دارایی دارای سه تراکنش در حال انتظار هستند، ماینرها تصمیم خواهند گرفت که کدام یک ابتدا تأیید شود. اگر مهاجم کارمزد تراکنش بالاتری را نسبت به فرد دیگر بپردازد، شانس بیشتری برای دریافت تراکنش مخرب وجود دارد. این یک نتیجه تضمین شده نیست، بلکه صرفاً نشان دهنده این است که انجام یک حمله ساندویچی چقدر آسان است.
2. تأمین کننده نقدینگی در مقابل گیرنده
یک تأمینکننده نقدینگی (Liquidity Provider) میتواند به روشی بسیار مشابه به گیرنده نقدینگی حمله کند. تنظیمات اولیه یکسان باقی میماند، اگرچه مهاجم این بار باید سه عمل انجام دهد.
- در قدم اول، آنها نقدینگی را به عنوان یک تراکنش پیشین حذف میکنند، تا لغزش قربانی افزایش بیابد.
- مرحله دوم با افزایش مجدد نقدینگی برای بازگرداندن تعادل اولیه استخر همراه است.
- در نهایت آنها دارایی Y را با X مبادله میکنند تا تعادل دارایی X را به حالت قبل از حمله بازگردانند.
برداشت نقدینگی فرد قبل از انجام معامله قربانی، کارمزد کمیسیون آن معامله را نفی میکند. به طور معمول ارائهدهندگان نقدینگی برای فعالیتهایی که در مجموعه انتخابی آنها اتفاق میافتد، کارمزد کمی دریافت میکنند. اطمینان از اینکه کارمزدی به گیرنده اعطا نمیشود، میتواند به آنها آسیب مالی وارد کند و این باوجود کمیسیونی است که میگیرند.
آیا حمله ساندویچی ارزش تلاش دارد؟
با وجود انگیزههای مالی مشخص برای حمله ساندویچی در دیفای، انجام این کار همیشه سودآور نیست. هزینه انجام این تراکنشها برای معاملهگران دیگر غالباً بیشتر از سود مالی مهاجمان است، بهویژه زمانی که از شبکه اتریوم استفاده میکنند، که هزینههای تراکنش (به ازای هر اقدام) را نسبتاً منظم یادداشت میکند.
با این حال، یک حمله ساندویچی همچنان میتواند یک حمله سودآور باشد اگر کمیسیون از «رفتار عادی» به دست آمده باشد و هزینه تراکنش برای حمله ساندویچی کمتر از مبلغ ترید قربانی باشد.
ظهور تجارت غیرمتمرکز از طریق سازندگان بازار خودکار همچنان خطراتی را برای هر کسی که از این خدمات استفاده میکند به همراه دارد. حمله ساندویچی ممکن است در هر لحظه رخ دهد. همانطور که دیفای افراد بیشتری را جذب میکند، فرصتهای بیشتری برای مجرمان وجود خواهد داشت. این بدان معنا نیست که حملات ساندویچی موفقیتآمیز بیشتری در آینده وجود خواهد داشت، اما حقیقتی است که باید در نظر داشته باشیم.
چگونه در مقابل حمله ساندویچی مقاومت کنیم؟
برای AMMها، توسعه اقداماتی که قادر به محافظت از کاربران در برابر حملات ساندویچی باشند، بسیار مهم است. به عنوان مثال، پلتفرم وان اینچ (1inch) یک نوع سفارش جدید به نام «تراکنشهای فلش بات» را معرفی کرد که در ممپول یا همان «حافظه استخر تراکنشهای در انتظار تأیید» قابل مشاهده نیستند زیرا هرگز در آن منتشر نمیشوند. در عوض، پلتفرم وان اینچ ارتباط مستقیمی با ماینرهای قابل اعتماد دارد تا تراکنشها را پس از استخراج قابل مشاهده کند.
تا به امروز، به نظر میرسد که این تنها راهی است که کاربران برای محافظت از خود در برابر حمله ساندویچی دارند. با این حال، مشخص نیست که آیا سایر AMMها با ماینرها مشارکت خواهند داشت تا تراکنشهایی را بدون انتشار آنها در ممپول شامل شوند یا خیر. راهحلهای دیگری ممکن است در آینده پیدا شود، اگرچه احتمالاً مدتی طول خواهد کشید.
سخن نهایی
احتمالاً تا به حال هرچه کلاهبرداری در دنیای ارزهای دیجیتال وجود داشت را میتوانستیم با انجام اقدامات امنیتی پیشگیری کنیم. برای مثال وقتی صحبت از راگ پول میشود، این خودمان هستیم که میتوانیم با کنترل احساسات و کسب اطلاعات دقیق از ماهیت پروژه جلوی به دام افتادنمان را بگیریم.
متأسفانه درمورد حمله ساندویچی در دیفای چنین امکانی وجود ندارد. درواقع ما زمانی متوجه میشویم که سرمایه از دست دادهایم که دیگر حمله تمام شده است، چراکه همه چیز کاملاً عادی است و تصور ما این است که در به دلیل ثبت اشکال مختلف تراکنش چنین اتفاقی رخ داده است. همچنین به این دلیل که در هر بار حمله مقدار بسیار کمی ضرر میکنیم، خیلی توجهی به آن نداریم.
این خود سیستم است که باید جهت جلوگیری از چنین تهاجمی، انتشار تراکنشها را سفت و سخت بگیرد و اجازه ندهید تا نهایی شدن آنها برای عموم قابل مشاهده باشد. این امکان در برخی سیستمها وجود دارد، اما هنوز آنطور که باید روی حل این مشکل تمرکز نشده است.