هم در بازارهای مالی سنتی و هم در بازارهای مالی نوظهور مثل بازار رمزارزها، همواره تهدیدهای بالقوهای وجود دارند که قادرند به امنیت، شفافیت و عدالت در معاملات آسیب بزنند. یکی از این تهدیدات بالقوه و جدی، حمله فرانت رانینگ (Front Running) است؛ روشی غیراخلاقی و در اغلب موارد غیرقانونی که در آن یک بازیگر بازار با اطلاع قبلی از سفارشهای در حال ثبت معاملهگران، تراکنش خود را زودتر ثبت کرده و از نوسانات آتی قیمت سود خوبی کسب میکند.
با توسعه فناوری بلاکچین و رونق یافتن انجام معاملات در بازار ارز دیجیتال، فرانت رانینگ در این بازار اشکال پیچیدهای به خود گرفته و عملاً به یکی از مهمترین دغدغههای امنیتی در این فضا تبدیل شده است. با توجه به اهمیت این موضوع، ما این مقاله از بلاگ کیف پول من را به بررسی جامع فرانت رانینگ اختصاص دادهایم؛ پس با ما همراه باشید.
حمله فرانت رانینگ چیست؟
فرانت رانینگ (Front Running) در لغت به معنای پیشدستی کردن و جلو زدن برای به دست آوردن یک مزیت است؛ معنای اصطلاحی این عبارت از معنی لغوی آن فاصله نگرفته و حمله فرانت رانینگ به موقعیتی اشاره دارد که در آن واسطههایی مثل تریدرها یا کارگزاران از دادهها و اطلاعات سفارش مشتریان سوءاستفاده میکنند. جالب است بدانید که این حمله فقط به بازارهای مالی سنتی اختصاص پیدا نکرده و در امور مالی غیرمتمرکز (DeFi) نیز رواج قابل توجهی دارد.
در فضای بلاکچینی نه فقط ماینرها، بلکه کاربران عادی نیز دست به حمله فرانت رانینگ میزنند؛ این حمله زمانی رخ میدهد که شخص مهاجم اطلاعات زودهنگامی درباره تراکنشهای در حال انتظار (در صف یا mempool) به دست میآورد و با قرار دادن تراکنش خود، مزیت رقابتی ناعادلانه کسب میکند. براساس آمارهای رسمی، در بازه زمانی 2.5 ساله و تا سال 2022، بیش از 500 میلیون دلار آمریکا از بلاکچین اتریوم به دلیل فعالیتهای مرتبط با حملات فرانت رانینگ مثل حملات ساندویچی، لیکوئیدیشن و آربیتراژ استخراج شده است.
بررسی یک مثال عملی از حمله فرانت رانینگ در کریپتو
برای درک بهتر حمله فرانت رانینگ در فضای بلاکچین به مثال زیر توجه کنید:
فرض کنید آلیس و باب در یک مسابقه اطلاعات عمومی شرکت میکنند و آلیس موفق میشود مسئله موردنظر را حل کند و پاسخ درست را با کارمزد گس (Gas Fee) معادل 15 گوی (Gwei) در بلاکچین به ثبت میرساند. این تراکنش وارد mempool یا همان صف انتظار میشود تا در نهایت توسط ماینر پردازش و تأیید شود.
حال باب که خود پاسخ مسئله را بلد نبوده، به دقت تراکنشهای موجود در صف انتظار را زیر نظر میگیرد و به محض دیدن پاسخ آلیس، آن پاسخ را کپی کرده و با کارمزد بالاتری (مثل 50 گوی) در یک تراکنش ثبت میکند. روال معمول در فضای بلاکچین نیز این است که ماینرها تراکنشهای دارای کارمزد بالاتر را در اولویت پردازش قرار میدهند و در نتیجه تراکنش باب زودتر از تراکنش آلیس، پردازش و تأیید میشود!
باب در این ماجرا برنده مسابقه شده و جایزه مسابقه را به خود اختصاص میدهد؛ اما آلیس که زودتر از باب پاسخ درست را فرستاده بود، بازنده اعلام خواهد شد! مسئله اصلی در فرانت رانینگ نیز همین سوءاستفاده از دسترسی زودهنگام به اطلاعات است. این رفتار نهتنها به لحاظ اخلاقی مردود بوده، بلکه اصولی مثل انصاف، برابری و شفافیت را نیز در شبکههای غیرمتمرکز زیر سوال خواهد برد.
انواع حملات فرانت رانینگ
حملات فرانت رانینگ در فضای بلاکچین و کریپتو به سهدسته کلی تقسیم میشوند که در ادامه هر یک را همراه با مثالی مورد بررسی قرار میدهیم:
حمله جابهجایی (Displacement Attack)
در این نوع از حملات فرانت رانینگ، شخص مهاجم با تعیین کارمزد گس بیشتر و بالا، پردازش تراکنش خود را جلوتر از پردازش تراکنش شخص قربانی قرار میدهد. این موضوع دقیقاً مشابه همان مثالی است که در بالا درباره مسابقه بین آلیس و باب مطرح کردیم؛ اما برای درک بهتر ماجرا مثال دیگری را نیز مورد بررسی قرار میدهیم:
جولیا قصد دارد یک توکن غیرمثلی (NFT) کمیاب را خریداری کند و تراکنش خرید خود را نیز با یک کارمزد منطقی در شبکه ثبت مینماید. تام با زیرنظر گرفتن تراکنشهای در صف انتظار (موجود در ممپول) متوجه تراکنش جولیا میشود و او نیز همان خرید را با پرداخت کارمزد بیشتری در شبکه ثبت میکند. از آنجایی که ماینرها تمایل به دریافت کارمزد بیشتر دارند، تراکنش تام را زودتر از تراکنش جولیا تأیید میکنند و مالکیت NFT به تام میرسد.
تراکنش جولیا به دلیل تمام شدن موجودی توکن NFT، ناموفق میماند و جولیای بیخبر از ماجرا، فرصت کسب سود از چنین توکن کمیابی را از دست میدهد.
حمله درج یا ساندویچی (Insertion / Sandwich Attack)
در این نوع خاص از حمله فرانت رانینگ، شخص مهاجم تراکنش فرد قربانی را میان دو تراکنش خود قرار میدهد؛ یکی قبل از آن (با کارمزد گس بالا) و دیگری بعد از آن (با کارمزد گس پایین). انجام این کار موجب ایجاد یک نوسان مصنوعی در قیمت شده و فرصت آربیتراژ را برای شخص مهاجم فراهم میکند. این نوع از حمله فرانت رانینگ غالباً در صرافیهای غیرمتمرکز (DEX) رواج دارد (بویژه زمانی که کاربری بخواهد یک معامله بزرگ انجام دهد).
برای درک بهتر ماجرا به این مثال توجه کنید: چارلی قصد دارد مقدار زیادی از یک توکن را از صرافی غیرمتمرکزی خریداری کند. الکس متوجه سفارش بزرگ چارلی شده و بلافاصله قبل از اجرای این سفارش، خودش همان توکن را با کارمزد بالا خریداری میکند؛ این موضوع (مطابق با مکانیسم بازار DEX) موجب بالا رفتن قیمت توکن موردنظر میشود. در نتیجه، تراکنش چارلی با قیمت بالاتر انجام میشود و او این رمزارز را گرانتر از حد معمول خریداری میکند.
بعد از معامله چارلی، الکس بلافاصله رمزارز خود را به قیمت بالاتر میفروشد و از این طریق سود خوبی به دست میآورد. نتیجه این نوع از حملات فرانت رانینگ نیز این است که شخص قربانی ضرر کرده و شخص مهاجم بدون ریسک بالا و صرفاً از طریق بازی دادن ترتیب تراکنشها، سود خوبی به دست میآورد.
حمله سرکوب یا پر کردن بلاک (Suppression / Block Stuffing)
آخرین نوع از انواع حملات فرانت رانینگ به پر کردن بلاک اختصاص پیدا کرده که در این روش، شخص مهاجم با ارسال تعداد قابل توجهی تراکنش با کارمزد بالا، موجب اشباع شبکه شده تا فضای بلاک پر شود. این کار موجب میشود تا تراکنشهای دیگر (بهویژه تراکنش شخص قربانی) نتواند وارد بلاک شده و به تعویق افتد یا حتی رد شود!
مثالی که میتوان برای این حمله به آن اشاره کرد به شرح زیر است:
فرض کنید شما قصد شرکت در یک قرعهکشی بلاکچینی را دارید و طبق قواعد این قرعهکشی، برنده کسی خواهد بود که آخرین بلیط را قبل از زمان مقرر خریداری کند. در آخرین لحظات، شخص مهاجهم یک حمله سرکوب انجام میدهد؛ به این صورت که او دهها یا صدها تراکنش با کارمزد بالا به شبکه بلاکچین ارسال میکند. نتیجه انجام این کار، چیزی جز پر شدن بلاک نبوده و تراکنش شما دیگر نمیتواند وارد این بلاک شود.
وقتی تراکنش شما تأیید میشود، زمان قرعهکشی تمام شده و در نتیجه شخص مهاجم برنده این قرعهکشی خواهد بود. برنده شدن او به دلیل شانس یا مهارت نبوده، بلکه به دلیل حمله فنی و فرصتطلبی او به دست آمده است.
عوامل دخیل در شکلگیری حملات فرانت رانینگ
برای این که بتوان مقابله مؤثری در برابر حملات Front Running داشت، در قدم اول باید فهمید که چه عواملی باعث بروز چنین حملهای میشوند. شناسایی این عوامل و محرکها، این امکان را در اختیار کاربران و توسعهدهندگان قرار میدهد تا راهکارهای دفاعی مؤثرتری برای مقابله با حمله فرانت رانینگ طراحی و پیاده نمایند.
به طور کلی، عوامل تحریککننده حملات فرانت رانینگ به شرح زیر هستند:
- معاملات بزرگ: وقتی یک معامله بزرگ مثل خرید یا فروش عمده یک توکن در صرافی انجام میشود، احتمال ایجاد نوسان شدید قیمتی در بازار وجود دارد. رباتها و مهاجمان اینگونه معاملات بزرگ را زیر نظر میگیرند تا با استفاده از فرصت ورود سریع، سود خوبی به دست آورند.
- لیست شدن توکنهای جدید: زمانی که توکنی جدید برای اولین بار در یک صرافی غیرمتمرکز لیست میشود، بسیاری از تریدرهای خرد به سمت خرید آن هجوم میآورند. رباتهای فرانت رانینگ دقیقاً در چنین موقعیتی وارد بازی شده و با ثبت سفارش خرید با کارمزد بالا، قبل از سایر معاملهگران این توکن را میخرند و سپس توکن خریداری شده را با قیمت بالاتر به تریدرهای خرد میفروشند. این موضوع موجب رشد مصنوعی قیمت شده و به ضرر تریدرهای خرد خواهد بود.
- بررسی دفتر سفارشها: در برخی از صرافیهای DEX که از مدل دفتر سفارش (Order Book) استفاده میکنند، سفارشهای خرید یا فروش کاربران برای مدت زمانی در دسترس عموم قرار میگیرد. شخص مهاجم با بررسی این سفارشهای فعال، سفارشهای سودآور را شناسایی و با پرداخت کارمزد بالاتر، اولویت پردازش تراکنش را به دست میآورد.
- پیشنهادهای حاکمیتی: در پلتفرمهای DeFi مبتنی بر حاکمیت مثل Compound یا Aave، در برخی مواقع پیشنهادهایی درباره کاهش تعداد توکنها یا تغییر ساختار کارمزدها مطرح میشود. در صورتی که شخص مهاجم زودتر از تأیید رسمی این پیشنهادها توکن پروژه را خریداری کند، میتواند از افزایش قیمت بعد از تأیید این پیشنهادات، سود زیادی به جیب بزند.
- بهروزرسانی اوراکلها و APIها: اوراکلها ابزارهایی هستند که دادههای موجود در دنیای واقعی مثل نرخ ارز، آبوهوا، قیمت طلا و غیره را به قراردادهای هوشمند، انتقال میدهند. APIها نیز واسطههایی هستند که میان پلتفرمها و دادههای بیرونی ارتباط ایجاد میکنند. در صورتی که شخص مهاجم زودتر از سایرین متوجه تغییر قیمت داده شده از سوی اوراکل شود، میتواند با ارسال تراکنش سریعتر، از تغییرات قیمتی آتی به نفع خود استفاده کند.
- تراکنشهای مربوط به استخرهای نقدینگی: در پلتفرمهای دیفای، حذف یا افزودن نقدینگی به استخر مثل یونیسواپ یا Curve، میتواند موجب ایجاد تغییرات شدید در قیمت داراییهای دیجیتالی شود. شخص مهاجم این تغییرات را به دقت رصد میکند تا با اجرای سریع معاملات، از نوسانات قیمت ایجاد شده، سود کسب کند. رباتهای MEV از بازیگران اصلی در چنین حملاتی هستند.
فرانت رانینگ؛ تهدید پنهان در دل شفافیت فضای بلاکچین
حمله فرانت رانینگ از شفافیت بیش از حد شبکههای بلاکچینی برای کسب سود ناعادلانه بهره میبرد؛ که در اغلب موارد این سودجویی به ضرر سایر کاربران بوده و به همین علت از آن با نام نوعی حمله یاد میکنند. با شناخت انواع حملات فرانت رانینگ مثل حملات جابهجایی، درج و سرکوب که در این مقاله مورد بررسی قرار گرفتند، میتوانید راهکارهای عملی خوبی مثل خودداری از اطلاعرسانی درباره معاملات بزرگ، تعیین کارمزد گس غیرمعمول، افزایش دانش تخصصی و غیره امنیت معاملاتی خود را تضمین کنید. حال به نظر شما چه راهکارهای مؤثری میتوان برای مقابله با حملات فرانت رانینگ به کار گرفت؟ نظرات خود را برای ما بنویسید.